From ebb4b9154ee9b4402d3e7a36ed3b0700d25e5b2a Mon Sep 17 00:00:00 2001 From: Sebastian Kupke Date: Mon, 20 Jan 2020 11:33:53 +0100 Subject: [PATCH] Updated pixi-compressed-textures. --- dist/iwmlib.3rdparty.js | 12886 ++++++++-------- dist/iwmlib.3rdparty.min.js | 2 +- doc/out/AbstractPopup.html | 909 +- doc/out/Badge.html | 928 +- doc/out/BlurFilter.html | 927 +- doc/out/Button.html | 918 +- doc/out/ButtonGroup.html | 922 +- doc/out/DeepZoomImage.html | 909 +- doc/out/DeepZoomInfo.html | 926 +- doc/out/Flippable.html | 919 +- doc/out/FontInfo.html | 909 +- doc/out/Hypenate.html | 909 +- doc/out/InteractivePopup.html | 909 +- ...beledGraphics.exports.LabeledGraphics.html | 909 +- doc/out/LabeledGraphics.html | 909 +- doc/out/List.html | 917 +- doc/out/Message.html | 932 +- doc/out/MessageInteractivePopup.html | 909 +- doc/out/MessageMessageInteractivePopup.html | 909 +- doc/out/Modal.html | 925 +- doc/out/ModalInteractivePopup.html | 909 +- doc/out/ModalModalInteractivePopup.html | 909 +- doc/out/PIXIApp.html | 919 +- doc/out/Popup.html | 918 +- doc/out/PopupInteractivePopup.html | 909 +- doc/out/PopupMenu.html | 927 +- doc/out/PopupMenuPopupInteractivePopup.html | 909 +- ...pupMenuPopupMenuPopupInteractivePopup.html | 909 +- ...nuPopupMenuPopupPopupInteractivePopup.html | 909 +- .../PopupMenuPopupPopupInteractivePopup.html | 909 +- doc/out/PopupPopupInteractivePopup.html | 909 +- doc/out/Progress.html | 917 +- doc/out/Scrollview.html | 925 +- doc/out/Slider.html | 925 +- doc/out/Switch.html | 925 +- doc/out/TextLabel.TextLabel.html | 909 +- doc/out/Theme.html | 934 +- doc/out/ThemeDark.html | 917 +- doc/out/ThemeLight.html | 917 +- doc/out/ThemeRed.html | 917 +- doc/out/TileQuadNode.html | 909 +- doc/out/Tooltip.html | 928 +- doc/out/UITest.html | 920 +- doc/out/Volatile.html | 928 +- doc/out/global.html | 1443 +- doc/out/index.html | 897 +- doc/out/pixi_abstractpopup.js.html | 897 +- doc/out/pixi_app.js.html | 897 +- doc/out/pixi_badge.js.html | 897 +- doc/out/pixi_blurfilter.js.html | 897 +- doc/out/pixi_button.js.html | 897 +- doc/out/pixi_buttongroup.js.html | 897 +- doc/out/pixi_deepzoom_image.js.html | 897 +- doc/out/pixi_flippable.js.html | 897 +- doc/out/pixi_labeledgraphics.js.html | 897 +- doc/out/pixi_list.js.html | 897 +- doc/out/pixi_message.js.html | 897 +- doc/out/pixi_modal.js.html | 897 +- doc/out/pixi_popup.js.html | 897 +- doc/out/pixi_popupmenu.js.html | 897 +- doc/out/pixi_progress.js.html | 897 +- doc/out/pixi_scrollview.js.html | 897 +- doc/out/pixi_slider.js.html | 897 +- doc/out/pixi_switch.js.html | 897 +- doc/out/pixi_theme.js.html | 897 +- doc/out/pixi_tooltip.js.html | 897 +- doc/out/pixi_volatile.js.html | 897 +- doc/out/scripts/main.js | 2 +- doc/out/styles/main.css | 2 +- doc/out/uitest.js.html | 897 +- package-lock.json | 140 +- package.json | 12 +- 72 files changed, 61620 insertions(+), 12000 deletions(-) diff --git a/dist/iwmlib.3rdparty.js b/dist/iwmlib.3rdparty.js index 2a87cce..5563110 100644 --- a/dist/iwmlib.3rdparty.js +++ b/dist/iwmlib.3rdparty.js @@ -11719,13 +11719,12 @@ var PIXI = (function (exports) { * TODO - Optimization pass! */ DisplayObject.prototype.updateTransform = function updateTransform () - {if(this.transform){ + { this.transform.updateTransform(this.parent.transform); // multiply the alphas.. this.worldAlpha = this.alpha * this.parent.worldAlpha; - this._bounds.updateID++; - }else console.error("Could not update transform on,", this) + this._bounds.updateID++; }; /** @@ -11741,8 +11740,7 @@ var PIXI = (function (exports) { } else { - if(this.transform){ - this.transform.updateTransform(this._tempDisplayObjectParent.transform);}else console.error("Could not update transform on,", this) + this.transform.updateTransform(this._tempDisplayObjectParent.transform); } }; @@ -12383,6 +12381,7 @@ var PIXI = (function (exports) { child.parent = this; this.sortDirty = true; + // ensure child transform will be recalculated child.transform._parentID = -1; this.children.push(child); @@ -49893,7 +49892,9 @@ var pixi_compressed_textures; } } pixi_compressed_textures.RegisterCompressedLoader = RegisterCompressedLoader; - function detectExtensions(renderer, resolution) { + pixi_compressed_textures.defaultDetectedExtensions = ['.png', '.jpg', '.json', '.atlas']; + function detectExtensions(renderer, resolution, defaultResolution) { + if (defaultResolution === void 0) { defaultResolution = 1; } var extensions = []; if (renderer instanceof PIXI.Renderer) { renderer.texture.initCompressed(); @@ -49909,16 +49910,20 @@ var pixi_compressed_textures; if (data.etc1) extensions.push('.etc1'); } - resolution = resolution || renderer.resolution; - var res = "@" + resolution + "x"; var ext = extensions.slice(0); - while (ext.length > 0) { - extensions.push(res + ext.pop()); + var resolutions = [resolution || renderer.resolution]; + if (defaultResolution) { + resolutions.push(defaultResolution); + } + for (var i = 0; i < resolutions.length; i++) { + var res = "@" + resolutions[i] + "x"; + for (var j = 0; j < ext.length; j++) { + extensions.push(res + ext[j]); + } + for (var j = 0; j < pixi_compressed_textures.defaultDetectedExtensions.length; j++) { + extensions.push(res + pixi_compressed_textures.defaultDetectedExtensions[j]); + } } - extensions.push(res + ".png"); - extensions.push(res + ".jpg"); - extensions.push(res + ".json"); - extensions.push(res + ".atlas"); return extensions; } pixi_compressed_textures.detectExtensions = detectExtensions; @@ -50005,9 +50010,6 @@ var pixi_compressed_textures; k = url.lastIndexOf("."); if (k >= 0) { resource._baseUrl = url.substring(0, k); - if (k >= 4 && url.substring(k - 3, 3) === '@1x') { - resource._baseUrl = url.substring(0, k); - } } else { return next(); @@ -50095,2090 +50097,2090 @@ this.PIXI = this.PIXI || {}; (function (exports, pixi) { 'use strict'; - /** - * A single node in a PropertyList. - */ - var PropertyNode = /** @class */ (function () { - /** - * @param value The value for this node - * @param time The time for this node, between 0-1 - * @param [ease] Custom ease for this list. Only relevant for the first node. - */ - function PropertyNode(value, time, ease) { - this.value = value; - this.time = time; - this.next = null; - this.isStepped = false; - if (ease) { - this.ease = typeof ease == "function" ? ease : exports.ParticleUtils.generateEase(ease); - } - else { - this.ease = null; - } - } - /** - * Creates a list of property values from a data object {list, isStepped} with a list of objects in - * the form {value, time}. Alternatively, the data object can be in the deprecated form of - * {start, end}. - * @param data The data for the list. - * @param data.list The array of value and time objects. - * @param data.isStepped If the list is stepped rather than interpolated. - * @param data.ease Custom ease for this list. - * @return The first node in the list - */ - PropertyNode.createList = function (data) { - if ("list" in data) { - var array = data.list; - var node = void 0, first = void 0; - var _a = array[0], value = _a.value, time = _a.time; - first = node = new PropertyNode(typeof value === 'string' ? exports.ParticleUtils.hexToRGB(value) : value, time, data.ease); - //only set up subsequent nodes if there are a bunch or the 2nd one is different from the first - if (array.length > 2 || (array.length === 2 && array[1].value !== value)) { - for (var i = 1; i < array.length; ++i) { - var _b = array[i], value_1 = _b.value, time_1 = _b.time; - node.next = new PropertyNode(typeof value_1 === 'string' ? exports.ParticleUtils.hexToRGB(value_1) : value_1, time_1); - node = node.next; - } - } - first.isStepped = !!data.isStepped; - return first; - } - else { - //Handle deprecated version here - var start = new PropertyNode(typeof data.start === 'string' ? exports.ParticleUtils.hexToRGB(data.start) : data.start, 0); - //only set up a next value if it is different from the starting value - if (data.end !== data.start) - start.next = new PropertyNode(typeof data.end === 'string' ? exports.ParticleUtils.hexToRGB(data.end) : data.end, 1); - return start; - } - }; - return PropertyNode; + /** + * A single node in a PropertyList. + */ + var PropertyNode = /** @class */ (function () { + /** + * @param value The value for this node + * @param time The time for this node, between 0-1 + * @param [ease] Custom ease for this list. Only relevant for the first node. + */ + function PropertyNode(value, time, ease) { + this.value = value; + this.time = time; + this.next = null; + this.isStepped = false; + if (ease) { + this.ease = typeof ease == "function" ? ease : exports.ParticleUtils.generateEase(ease); + } + else { + this.ease = null; + } + } + /** + * Creates a list of property values from a data object {list, isStepped} with a list of objects in + * the form {value, time}. Alternatively, the data object can be in the deprecated form of + * {start, end}. + * @param data The data for the list. + * @param data.list The array of value and time objects. + * @param data.isStepped If the list is stepped rather than interpolated. + * @param data.ease Custom ease for this list. + * @return The first node in the list + */ + PropertyNode.createList = function (data) { + if ("list" in data) { + var array = data.list; + var node = void 0, first = void 0; + var _a = array[0], value = _a.value, time = _a.time; + first = node = new PropertyNode(typeof value === 'string' ? exports.ParticleUtils.hexToRGB(value) : value, time, data.ease); + //only set up subsequent nodes if there are a bunch or the 2nd one is different from the first + if (array.length > 2 || (array.length === 2 && array[1].value !== value)) { + for (var i = 1; i < array.length; ++i) { + var _b = array[i], value_1 = _b.value, time_1 = _b.time; + node.next = new PropertyNode(typeof value_1 === 'string' ? exports.ParticleUtils.hexToRGB(value_1) : value_1, time_1); + node = node.next; + } + } + first.isStepped = !!data.isStepped; + return first; + } + else { + //Handle deprecated version here + var start = new PropertyNode(typeof data.start === 'string' ? exports.ParticleUtils.hexToRGB(data.start) : data.start, 0); + //only set up a next value if it is different from the starting value + if (data.end !== data.start) + start.next = new PropertyNode(typeof data.end === 'string' ? exports.ParticleUtils.hexToRGB(data.end) : data.end, 1); + return start; + } + }; + return PropertyNode; }()); - // get Texture.from()/Texture.fromImage(), in V4 and V5 friendly methods - /** - * @hidden - */ - var TextureFromString; - // to avoid Rollup transforming our import, save pixi namespace in a variable - var pixiNS = pixi; - if (parseInt(/^(\d+)\./.exec(pixi.VERSION)[1]) < 5) { - TextureFromString = pixiNS.Texture.fromImage; - } - else { - TextureFromString = pixiNS.Texture.from; - } - function GetTextureFromString(s) { - return TextureFromString(s); - } - (function (ParticleUtils) { - /** - * If errors and warnings should be logged within the library. - */ - ParticleUtils.verbose = false; - ParticleUtils.DEG_TO_RADS = Math.PI / 180; - /** - * Rotates a point by a given angle. - * @param angle The angle to rotate by in degrees - * @param p The point to rotate around 0,0. - */ - function rotatePoint(angle, p) { - if (!angle) - return; - angle *= ParticleUtils.DEG_TO_RADS; - var s = Math.sin(angle); - var c = Math.cos(angle); - var xnew = p.x * c - p.y * s; - var ynew = p.x * s + p.y * c; - p.x = xnew; - p.y = ynew; - } - ParticleUtils.rotatePoint = rotatePoint; - /** - * Combines separate color components (0-255) into a single uint color. - * @param r The red value of the color - * @param g The green value of the color - * @param b The blue value of the color - * @return The color in the form of 0xRRGGBB - */ - function combineRGBComponents(r, g, b /*, a*/) { - return /*a << 24 |*/ r << 16 | g << 8 | b; - } - ParticleUtils.combineRGBComponents = combineRGBComponents; - /** - * Reduces the point to a length of 1. - * @param point The point to normalize - */ - function normalize(point) { - var oneOverLen = 1 / ParticleUtils.length(point); - point.x *= oneOverLen; - point.y *= oneOverLen; - } - ParticleUtils.normalize = normalize; - /** - * Multiplies the x and y values of this point by a value. - * @param point The point to scaleBy - * @param value The value to scale by. - */ - function scaleBy(point, value) { - point.x *= value; - point.y *= value; - } - ParticleUtils.scaleBy = scaleBy; - /** - * Returns the length (or magnitude) of this point. - * @param point The point to measure length - * @return The length of this point. - */ - function length(point) { - return Math.sqrt(point.x * point.x + point.y * point.y); - } - ParticleUtils.length = length; - /** - * Converts a hex string from "#AARRGGBB", "#RRGGBB", "0xAARRGGBB", "0xRRGGBB", - * "AARRGGBB", or "RRGGBB" to an object of ints of 0-255, as - * {r, g, b, (a)}. - * @param color The input color string. - * @param output An object to put the output in. If omitted, a new object is created. - * @return The object with r, g, and b properties, possibly with an a property. - */ - function hexToRGB(color, output) { - if (!output) - output = {}; - if (color.charAt(0) == "#") - color = color.substr(1); - else if (color.indexOf("0x") === 0) - color = color.substr(2); - var alpha; - if (color.length == 8) { - alpha = color.substr(0, 2); - color = color.substr(2); - } - output.r = parseInt(color.substr(0, 2), 16); //Red - output.g = parseInt(color.substr(2, 2), 16); //Green - output.b = parseInt(color.substr(4, 2), 16); //Blue - if (alpha) - output.a = parseInt(alpha, 16); - return output; - } - ParticleUtils.hexToRGB = hexToRGB; - /** - * Generates a custom ease function, based on the GreenSock custom ease, as demonstrated - * by the related tool at http://www.greensock.com/customease/. - * @param segments An array of segments, as created by - * http://www.greensock.com/customease/. - * @return A function that calculates the percentage of change at - * a given point in time (0-1 inclusive). - */ - function generateEase(segments) { - var qty = segments.length; - var oneOverQty = 1 / qty; - /* - * Calculates the percentage of change at a given point in time (0-1 inclusive). - * @param {Number} time The time of the ease, 0-1 inclusive. - * @return {Number} The percentage of the change, 0-1 inclusive (unless your - * ease goes outside those bounds). - */ - return function (time) { - var t, s; - var i = (qty * time) | 0; //do a quick floor operation - t = (time - (i * oneOverQty)) * qty; - s = segments[i] || segments[qty - 1]; - return (s.s + t * (2 * (1 - t) * (s.cp - s.s) + t * (s.e - s.s))); - }; - } - ParticleUtils.generateEase = generateEase; - /** - * Gets a blend mode, ensuring that it is valid. - * @param name The name of the blend mode to get. - * @return The blend mode as specified in the PIXI.BLEND_MODES enumeration. - */ - function getBlendMode(name) { - if (!name) - return pixi.BLEND_MODES.NORMAL; - name = name.toUpperCase(); - while (name.indexOf(" ") >= 0) - name = name.replace(" ", "_"); - return pixi.BLEND_MODES[name] || pixi.BLEND_MODES.NORMAL; - } - ParticleUtils.getBlendMode = getBlendMode; - /** - * Converts a list of {value, time} objects starting at time 0 and ending at time 1 into an evenly - * spaced stepped list of PropertyNodes for color values. This is primarily to handle conversion of - * linear gradients to fewer colors, allowing for some optimization for Canvas2d fallbacks. - * @param list The list of data to convert. - * @param [numSteps=10] The number of steps to use. - * @return The blend mode as specified in the PIXI.blendModes enumeration. - */ - function createSteppedGradient(list, numSteps) { - if (numSteps === void 0) { numSteps = 10; } - if (typeof numSteps !== 'number' || numSteps <= 0) - numSteps = 10; - var first = new PropertyNode(ParticleUtils.hexToRGB(list[0].value), list[0].time); - first.isStepped = true; - var currentNode = first; - var current = list[0]; - var nextIndex = 1; - var next = list[nextIndex]; - for (var i = 1; i < numSteps; ++i) { - var lerp = i / numSteps; - //ensure we are on the right segment, if multiple - while (lerp > next.time) { - current = next; - next = list[++nextIndex]; - } - //convert the lerp value to the segment range - lerp = (lerp - current.time) / (next.time - current.time); - var curVal = ParticleUtils.hexToRGB(current.value); - var nextVal = ParticleUtils.hexToRGB(next.value); - var output = { - r: (nextVal.r - curVal.r) * lerp + curVal.r, - g: (nextVal.g - curVal.g) * lerp + curVal.g, - b: (nextVal.b - curVal.b) * lerp + curVal.b, - }; - currentNode.next = new PropertyNode(output, i / numSteps); - currentNode = currentNode.next; - } - //we don't need to have a PropertyNode for time of 1, because in a stepped version at that point - //the particle has died of old age - return first; - } - ParticleUtils.createSteppedGradient = createSteppedGradient; + // get Texture.from()/Texture.fromImage(), in V4 and V5 friendly methods + /** + * @hidden + */ + var TextureFromString; + // to avoid Rollup transforming our import, save pixi namespace in a variable + var pixiNS = pixi; + if (parseInt(/^(\d+)\./.exec(pixi.VERSION)[1]) < 5) { + TextureFromString = pixiNS.Texture.fromImage; + } + else { + TextureFromString = pixiNS.Texture.from; + } + function GetTextureFromString(s) { + return TextureFromString(s); + } + (function (ParticleUtils) { + /** + * If errors and warnings should be logged within the library. + */ + ParticleUtils.verbose = false; + ParticleUtils.DEG_TO_RADS = Math.PI / 180; + /** + * Rotates a point by a given angle. + * @param angle The angle to rotate by in degrees + * @param p The point to rotate around 0,0. + */ + function rotatePoint(angle, p) { + if (!angle) + return; + angle *= ParticleUtils.DEG_TO_RADS; + var s = Math.sin(angle); + var c = Math.cos(angle); + var xnew = p.x * c - p.y * s; + var ynew = p.x * s + p.y * c; + p.x = xnew; + p.y = ynew; + } + ParticleUtils.rotatePoint = rotatePoint; + /** + * Combines separate color components (0-255) into a single uint color. + * @param r The red value of the color + * @param g The green value of the color + * @param b The blue value of the color + * @return The color in the form of 0xRRGGBB + */ + function combineRGBComponents(r, g, b /*, a*/) { + return /*a << 24 |*/ r << 16 | g << 8 | b; + } + ParticleUtils.combineRGBComponents = combineRGBComponents; + /** + * Reduces the point to a length of 1. + * @param point The point to normalize + */ + function normalize(point) { + var oneOverLen = 1 / ParticleUtils.length(point); + point.x *= oneOverLen; + point.y *= oneOverLen; + } + ParticleUtils.normalize = normalize; + /** + * Multiplies the x and y values of this point by a value. + * @param point The point to scaleBy + * @param value The value to scale by. + */ + function scaleBy(point, value) { + point.x *= value; + point.y *= value; + } + ParticleUtils.scaleBy = scaleBy; + /** + * Returns the length (or magnitude) of this point. + * @param point The point to measure length + * @return The length of this point. + */ + function length(point) { + return Math.sqrt(point.x * point.x + point.y * point.y); + } + ParticleUtils.length = length; + /** + * Converts a hex string from "#AARRGGBB", "#RRGGBB", "0xAARRGGBB", "0xRRGGBB", + * "AARRGGBB", or "RRGGBB" to an object of ints of 0-255, as + * {r, g, b, (a)}. + * @param color The input color string. + * @param output An object to put the output in. If omitted, a new object is created. + * @return The object with r, g, and b properties, possibly with an a property. + */ + function hexToRGB(color, output) { + if (!output) + output = {}; + if (color.charAt(0) == "#") + color = color.substr(1); + else if (color.indexOf("0x") === 0) + color = color.substr(2); + var alpha; + if (color.length == 8) { + alpha = color.substr(0, 2); + color = color.substr(2); + } + output.r = parseInt(color.substr(0, 2), 16); //Red + output.g = parseInt(color.substr(2, 2), 16); //Green + output.b = parseInt(color.substr(4, 2), 16); //Blue + if (alpha) + output.a = parseInt(alpha, 16); + return output; + } + ParticleUtils.hexToRGB = hexToRGB; + /** + * Generates a custom ease function, based on the GreenSock custom ease, as demonstrated + * by the related tool at http://www.greensock.com/customease/. + * @param segments An array of segments, as created by + * http://www.greensock.com/customease/. + * @return A function that calculates the percentage of change at + * a given point in time (0-1 inclusive). + */ + function generateEase(segments) { + var qty = segments.length; + var oneOverQty = 1 / qty; + /* + * Calculates the percentage of change at a given point in time (0-1 inclusive). + * @param {Number} time The time of the ease, 0-1 inclusive. + * @return {Number} The percentage of the change, 0-1 inclusive (unless your + * ease goes outside those bounds). + */ + return function (time) { + var t, s; + var i = (qty * time) | 0; //do a quick floor operation + t = (time - (i * oneOverQty)) * qty; + s = segments[i] || segments[qty - 1]; + return (s.s + t * (2 * (1 - t) * (s.cp - s.s) + t * (s.e - s.s))); + }; + } + ParticleUtils.generateEase = generateEase; + /** + * Gets a blend mode, ensuring that it is valid. + * @param name The name of the blend mode to get. + * @return The blend mode as specified in the PIXI.BLEND_MODES enumeration. + */ + function getBlendMode(name) { + if (!name) + return pixi.BLEND_MODES.NORMAL; + name = name.toUpperCase(); + while (name.indexOf(" ") >= 0) + name = name.replace(" ", "_"); + return pixi.BLEND_MODES[name] || pixi.BLEND_MODES.NORMAL; + } + ParticleUtils.getBlendMode = getBlendMode; + /** + * Converts a list of {value, time} objects starting at time 0 and ending at time 1 into an evenly + * spaced stepped list of PropertyNodes for color values. This is primarily to handle conversion of + * linear gradients to fewer colors, allowing for some optimization for Canvas2d fallbacks. + * @param list The list of data to convert. + * @param [numSteps=10] The number of steps to use. + * @return The blend mode as specified in the PIXI.blendModes enumeration. + */ + function createSteppedGradient(list, numSteps) { + if (numSteps === void 0) { numSteps = 10; } + if (typeof numSteps !== 'number' || numSteps <= 0) + numSteps = 10; + var first = new PropertyNode(ParticleUtils.hexToRGB(list[0].value), list[0].time); + first.isStepped = true; + var currentNode = first; + var current = list[0]; + var nextIndex = 1; + var next = list[nextIndex]; + for (var i = 1; i < numSteps; ++i) { + var lerp = i / numSteps; + //ensure we are on the right segment, if multiple + while (lerp > next.time) { + current = next; + next = list[++nextIndex]; + } + //convert the lerp value to the segment range + lerp = (lerp - current.time) / (next.time - current.time); + var curVal = ParticleUtils.hexToRGB(current.value); + var nextVal = ParticleUtils.hexToRGB(next.value); + var output = { + r: (nextVal.r - curVal.r) * lerp + curVal.r, + g: (nextVal.g - curVal.g) * lerp + curVal.g, + b: (nextVal.b - curVal.b) * lerp + curVal.b, + }; + currentNode.next = new PropertyNode(output, i / numSteps); + currentNode = currentNode.next; + } + //we don't need to have a PropertyNode for time of 1, because in a stepped version at that point + //the particle has died of old age + return first; + } + ParticleUtils.createSteppedGradient = createSteppedGradient; })(exports.ParticleUtils || (exports.ParticleUtils = {})); - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - /* global Reflect, Promise */ - - var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - - function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + /* global Reflect, Promise */ + + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + + function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + } + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + + function __rest(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0) + t[p[i]] = s[p[i]]; + return t; + } + + function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + } + + function __param(paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } + } + + function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); + } + + function __awaiter(thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + } + + function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } + } + + function __exportStar(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; + } + + function __values(o) { + var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; + if (m) return m.call(o); + return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + } + + function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; + } + + function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; + } + + function __await(v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); + } + + function __asyncGenerator(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; + function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } + function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function fulfill(value) { resume("next", value); } + function reject(value) { resume("throw", value); } + function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } + } + + function __asyncDelegator(o) { + var i, p; + return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } + } + + function __asyncValues(o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); + function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } + } + + function __makeTemplateObject(cooked, raw) { + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } + return cooked; + }; + + function __importStar(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result.default = mod; + return result; + } + + function __importDefault(mod) { + return (mod && mod.__esModule) ? mod : { default: mod }; } - var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); - }; - - function __rest(s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0) - t[p[i]] = s[p[i]]; - return t; + /** + * Singly linked list container for keeping track of interpolated properties for particles. + * Each Particle will have one of these for each interpolated property. + */ + var PropertyList = /** @class */ (function () { + /** + * @param isColor If this list handles color values + */ + function PropertyList(isColor) { + if (isColor === void 0) { isColor = false; } + this.current = null; + this.next = null; + this.isColor = !!isColor; + this.interpolate = null; + this.ease = null; + } + /** + * Resets the list for use. + * @param first The first node in the list. + * @param first.isStepped If the values should be stepped instead of interpolated linearly. + */ + PropertyList.prototype.reset = function (first) { + this.current = first; + this.next = first.next; + var isSimple = this.next && this.next.time >= 1; + if (isSimple) { + this.interpolate = this.isColor ? intColorSimple : intValueSimple; + } + else if (first.isStepped) { + this.interpolate = this.isColor ? intColorStepped : intValueStepped; + } + else { + this.interpolate = this.isColor ? intColorComplex : intValueComplex; + } + this.ease = this.current.ease; + }; + return PropertyList; + }()); + function intValueSimple(lerp) { + if (this.ease) + lerp = this.ease(lerp); + return (this.next.value - this.current.value) * lerp + this.current.value; + } + function intColorSimple(lerp) { + if (this.ease) + lerp = this.ease(lerp); + var curVal = this.current.value, nextVal = this.next.value; + var r = (nextVal.r - curVal.r) * lerp + curVal.r; + var g = (nextVal.g - curVal.g) * lerp + curVal.g; + var b = (nextVal.b - curVal.b) * lerp + curVal.b; + return exports.ParticleUtils.combineRGBComponents(r, g, b); + } + function intValueComplex(lerp) { + if (this.ease) + lerp = this.ease(lerp); + //make sure we are on the right segment + while (lerp > this.next.time) { + this.current = this.next; + this.next = this.next.next; + } + //convert the lerp value to the segment range + lerp = (lerp - this.current.time) / (this.next.time - this.current.time); + return (this.next.value - this.current.value) * lerp + this.current.value; + } + function intColorComplex(lerp) { + if (this.ease) + lerp = this.ease(lerp); + //make sure we are on the right segment + while (lerp > this.next.time) { + this.current = this.next; + this.next = this.next.next; + } + //convert the lerp value to the segment range + lerp = (lerp - this.current.time) / (this.next.time - this.current.time); + var curVal = this.current.value, nextVal = this.next.value; + var r = (nextVal.r - curVal.r) * lerp + curVal.r; + var g = (nextVal.g - curVal.g) * lerp + curVal.g; + var b = (nextVal.b - curVal.b) * lerp + curVal.b; + return exports.ParticleUtils.combineRGBComponents(r, g, b); + } + function intValueStepped(lerp) { + if (this.ease) + lerp = this.ease(lerp); + //make sure we are on the right segment + while (this.next && lerp > this.next.time) { + this.current = this.next; + this.next = this.next.next; + } + return this.current.value; + } + function intColorStepped(lerp) { + if (this.ease) + lerp = this.ease(lerp); + //make sure we are on the right segment + while (this.next && lerp > this.next.time) { + this.current = this.next; + this.next = this.next.next; + } + var curVal = this.current.value; + return exports.ParticleUtils.combineRGBComponents(curVal.r, curVal.g, curVal.b); } - function __decorate(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - } - - function __param(paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } - } - - function __metadata(metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); - } - - function __awaiter(thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - } - - function __generator(thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } - } - - function __exportStar(m, exports) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - - function __values(o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; - if (m) return m.call(o); - return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - } - - function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; - } - - function __spread() { - for (var ar = [], i = 0; i < arguments.length; i++) - ar = ar.concat(__read(arguments[i])); - return ar; - } - - function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); - } - - function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; - function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } - function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } - function fulfill(value) { resume("next", value); } - function reject(value) { resume("throw", value); } - function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } - } - - function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; - function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } - } - - function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); - function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } - function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } - } - - function __makeTemplateObject(cooked, raw) { - if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } - return cooked; - }; - - function __importStar(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result.default = mod; - return result; - } - - function __importDefault(mod) { - return (mod && mod.__esModule) ? mod : { default: mod }; - } - - /** - * Singly linked list container for keeping track of interpolated properties for particles. - * Each Particle will have one of these for each interpolated property. - */ - var PropertyList = /** @class */ (function () { - /** - * @param isColor If this list handles color values - */ - function PropertyList(isColor) { - if (isColor === void 0) { isColor = false; } - this.current = null; - this.next = null; - this.isColor = !!isColor; - this.interpolate = null; - this.ease = null; - } - /** - * Resets the list for use. - * @param first The first node in the list. - * @param first.isStepped If the values should be stepped instead of interpolated linearly. - */ - PropertyList.prototype.reset = function (first) { - this.current = first; - this.next = first.next; - var isSimple = this.next && this.next.time >= 1; - if (isSimple) { - this.interpolate = this.isColor ? intColorSimple : intValueSimple; - } - else if (first.isStepped) { - this.interpolate = this.isColor ? intColorStepped : intValueStepped; - } - else { - this.interpolate = this.isColor ? intColorComplex : intValueComplex; - } - this.ease = this.current.ease; - }; - return PropertyList; - }()); - function intValueSimple(lerp) { - if (this.ease) - lerp = this.ease(lerp); - return (this.next.value - this.current.value) * lerp + this.current.value; - } - function intColorSimple(lerp) { - if (this.ease) - lerp = this.ease(lerp); - var curVal = this.current.value, nextVal = this.next.value; - var r = (nextVal.r - curVal.r) * lerp + curVal.r; - var g = (nextVal.g - curVal.g) * lerp + curVal.g; - var b = (nextVal.b - curVal.b) * lerp + curVal.b; - return exports.ParticleUtils.combineRGBComponents(r, g, b); - } - function intValueComplex(lerp) { - if (this.ease) - lerp = this.ease(lerp); - //make sure we are on the right segment - while (lerp > this.next.time) { - this.current = this.next; - this.next = this.next.next; - } - //convert the lerp value to the segment range - lerp = (lerp - this.current.time) / (this.next.time - this.current.time); - return (this.next.value - this.current.value) * lerp + this.current.value; - } - function intColorComplex(lerp) { - if (this.ease) - lerp = this.ease(lerp); - //make sure we are on the right segment - while (lerp > this.next.time) { - this.current = this.next; - this.next = this.next.next; - } - //convert the lerp value to the segment range - lerp = (lerp - this.current.time) / (this.next.time - this.current.time); - var curVal = this.current.value, nextVal = this.next.value; - var r = (nextVal.r - curVal.r) * lerp + curVal.r; - var g = (nextVal.g - curVal.g) * lerp + curVal.g; - var b = (nextVal.b - curVal.b) * lerp + curVal.b; - return exports.ParticleUtils.combineRGBComponents(r, g, b); - } - function intValueStepped(lerp) { - if (this.ease) - lerp = this.ease(lerp); - //make sure we are on the right segment - while (this.next && lerp > this.next.time) { - this.current = this.next; - this.next = this.next.next; - } - return this.current.value; - } - function intColorStepped(lerp) { - if (this.ease) - lerp = this.ease(lerp); - //make sure we are on the right segment - while (this.next && lerp > this.next.time) { - this.current = this.next; - this.next = this.next.next; - } - var curVal = this.current.value; - return exports.ParticleUtils.combineRGBComponents(curVal.r, curVal.g, curVal.b); - } - - /** - * An individual particle image. You shouldn't have to deal with these. - */ - var Particle = /** @class */ (function (_super) { - __extends(Particle, _super); - /** - * @param {PIXI.particles.Emitter} emitter The emitter that controls this particle. - */ - function Particle(emitter) { - var _this = - //start off the sprite with a blank texture, since we are going to replace it - //later when the particle is initialized. - _super.call(this) || this; - _this.emitter = emitter; - //particles should be centered - _this.anchor.x = _this.anchor.y = 0.5; - _this.velocity = new pixi.Point(); - _this.rotationSpeed = 0; - _this.rotationAcceleration = 0; - _this.maxLife = 0; - _this.age = 0; - _this.ease = null; - _this.extraData = null; - _this.alphaList = new PropertyList(); - _this.speedList = new PropertyList(); - _this.speedMultiplier = 1; - _this.acceleration = new pixi.Point(); - _this.maxSpeed = NaN; - _this.scaleList = new PropertyList(); - _this.scaleMultiplier = 1; - _this.colorList = new PropertyList(true); - _this._doAlpha = false; - _this._doScale = false; - _this._doSpeed = false; - _this._doAcceleration = false; - _this._doColor = false; - _this._doNormalMovement = false; - _this._oneOverLife = 0; - _this.next = null; - _this.prev = null; - //save often used functions on the instance instead of the prototype for better speed - _this.init = _this.init; - _this.Particle_init = Particle.prototype.init; - _this.update = _this.update; - _this.Particle_update = Particle.prototype.update; - _this.Sprite_destroy = _super.prototype.destroy; - _this.Particle_destroy = Particle.prototype.destroy; - _this.applyArt = _this.applyArt; - _this.kill = _this.kill; - return _this; - } - /** - * Initializes the particle for use, based on the properties that have to - * have been set already on the particle. - */ - Particle.prototype.init = function () { - //reset the age - this.age = 0; - //set up the velocity based on the start speed and rotation - this.velocity.x = this.speedList.current.value * this.speedMultiplier; - this.velocity.y = 0; - exports.ParticleUtils.rotatePoint(this.rotation, this.velocity); - if (this.noRotation) { - this.rotation = 0; - } - else { - //convert rotation to Radians from Degrees - this.rotation *= exports.ParticleUtils.DEG_TO_RADS; - } - //convert rotation speed to Radians from Degrees - this.rotationSpeed *= exports.ParticleUtils.DEG_TO_RADS; - this.rotationAcceleration *= exports.ParticleUtils.DEG_TO_RADS; - //set alpha to inital alpha - this.alpha = this.alphaList.current.value; - //set scale to initial scale - this.scale.x = this.scale.y = this.scaleList.current.value; - //figure out what we need to interpolate - this._doAlpha = !!this.alphaList.current.next; - this._doSpeed = !!this.speedList.current.next; - this._doScale = !!this.scaleList.current.next; - this._doColor = !!this.colorList.current.next; - this._doAcceleration = this.acceleration.x !== 0 || this.acceleration.y !== 0; - //_doNormalMovement can be cancelled by subclasses - this._doNormalMovement = this._doSpeed || this.speedList.current.value !== 0 || this._doAcceleration; - //save our lerp helper - this._oneOverLife = 1 / this.maxLife; - //set the inital color - var color = this.colorList.current.value; - this.tint = exports.ParticleUtils.combineRGBComponents(color.r, color.g, color.b); - //ensure visibility - this.visible = true; - }; - /** - * Sets the texture for the particle. This can be overridden to allow - * for an animated particle. - * @param art The texture to set. - */ - Particle.prototype.applyArt = function (art) { - this.texture = art || pixi.Texture.EMPTY; - }; - /** - * Updates the particle. - * @param delta Time elapsed since the previous frame, in __seconds__. - * @return The standard interpolation multiplier (0-1) used for all - * relevant particle properties. A value of -1 means the particle - * died of old age instead. - */ - Particle.prototype.update = function (delta) { - //increase age - this.age += delta; - //recycle particle if it is too old - if (this.age >= this.maxLife || this.age < 0) { - this.kill(); - return -1; - } - //determine our interpolation value - var lerp = this.age * this._oneOverLife; //lifetime / maxLife; - if (this.ease) { - if (this.ease.length == 4) { - //the t, b, c, d parameters that some tween libraries use - //(time, initial value, end value, duration) - lerp = this.ease(lerp, 0, 1, 1); - } - else { - //the simplified version that we like that takes - //one parameter, time from 0-1. TweenJS eases provide this usage. - lerp = this.ease(lerp); - } - } - //interpolate alpha - if (this._doAlpha) - this.alpha = this.alphaList.interpolate(lerp); - //interpolate scale - if (this._doScale) { - var scale = this.scaleList.interpolate(lerp) * this.scaleMultiplier; - this.scale.x = this.scale.y = scale; - } - //handle movement - if (this._doNormalMovement) { - var deltaX = void 0; - var deltaY = void 0; - //interpolate speed - if (this._doSpeed) { - var speed = this.speedList.interpolate(lerp) * this.speedMultiplier; - exports.ParticleUtils.normalize(this.velocity); - exports.ParticleUtils.scaleBy(this.velocity, speed); - deltaX = this.velocity.x * delta; - deltaY = this.velocity.y * delta; - } - else if (this._doAcceleration) { - var oldVX = this.velocity.x; - var oldVY = this.velocity.y; - this.velocity.x += this.acceleration.x * delta; - this.velocity.y += this.acceleration.y * delta; - if (this.maxSpeed) { - var currentSpeed = exports.ParticleUtils.length(this.velocity); - //if we are going faster than we should, clamp at the max speed - //DO NOT recalculate vector length - if (currentSpeed > this.maxSpeed) { - exports.ParticleUtils.scaleBy(this.velocity, this.maxSpeed / currentSpeed); - } - } - // calculate position delta by the midpoint between our old velocity and our new velocity - deltaX = (oldVX + this.velocity.x) / 2 * delta; - deltaY = (oldVY + this.velocity.y) / 2 * delta; - } - else { - deltaX = this.velocity.x * delta; - deltaY = this.velocity.y * delta; - } - //adjust position based on velocity - this.position.x += deltaX; - this.position.y += deltaY; - } - //interpolate color - if (this._doColor) { - this.tint = this.colorList.interpolate(lerp); - } - //update rotation - if (this.rotationAcceleration !== 0) { - var newRotationSpeed = this.rotationSpeed + this.rotationAcceleration * delta; - this.rotation += (this.rotationSpeed + newRotationSpeed) / 2 * delta; - this.rotationSpeed = newRotationSpeed; - } - else if (this.rotationSpeed !== 0) { - this.rotation += this.rotationSpeed * delta; - } - else if (this.acceleration && !this.noRotation) { - this.rotation = Math.atan2(this.velocity.y, this.velocity.x); // + Math.PI / 2; - } - return lerp; - }; - /** - * Kills the particle, removing it from the display list - * and telling the emitter to recycle it. - */ - Particle.prototype.kill = function () { - this.emitter.recycle(this); - }; - /** - * Destroys the particle, removing references and preventing future use. - */ - Particle.prototype.destroy = function () { - if (this.parent) - this.parent.removeChild(this); - this.Sprite_destroy(); - this.emitter = this.velocity = this.colorList = this.scaleList = this.alphaList = - this.speedList = this.ease = this.next = this.prev = null; - }; - /** - * Checks over the art that was passed to the Emitter's init() function, to do any special - * modifications to prepare it ahead of time. - * @param art The array of art data. For Particle, it should be an array of - * Textures. Any strings in the array will be converted to - * Textures via Texture.from(). - * @return The art, after any needed modifications. - */ - Particle.parseArt = function (art) { - //convert any strings to Textures. - var i; - for (i = art.length; i >= 0; --i) { - if (typeof art[i] == "string") - art[i] = GetTextureFromString(art[i]); - } - //particles from different base textures will be slower in WebGL than if they - //were from one spritesheet - if (exports.ParticleUtils.verbose) { - for (i = art.length - 1; i > 0; --i) { - if (art[i].baseTexture != art[i - 1].baseTexture) { - if (window.console) - console.warn("PixiParticles: using particle textures from different images may hinder performance in WebGL"); - break; - } - } - } - return art; - }; - /** - * Parses extra emitter data to ensure it is set up for this particle class. - * Particle does nothing to the extra data. - * @param extraData The extra data from the particle config. - * @return The parsed extra data. - */ - Particle.parseData = function (extraData) { - return extraData; - }; - return Particle; + /** + * An individual particle image. You shouldn't have to deal with these. + */ + var Particle = /** @class */ (function (_super) { + __extends(Particle, _super); + /** + * @param {PIXI.particles.Emitter} emitter The emitter that controls this particle. + */ + function Particle(emitter) { + var _this = + //start off the sprite with a blank texture, since we are going to replace it + //later when the particle is initialized. + _super.call(this) || this; + _this.emitter = emitter; + //particles should be centered + _this.anchor.x = _this.anchor.y = 0.5; + _this.velocity = new pixi.Point(); + _this.rotationSpeed = 0; + _this.rotationAcceleration = 0; + _this.maxLife = 0; + _this.age = 0; + _this.ease = null; + _this.extraData = null; + _this.alphaList = new PropertyList(); + _this.speedList = new PropertyList(); + _this.speedMultiplier = 1; + _this.acceleration = new pixi.Point(); + _this.maxSpeed = NaN; + _this.scaleList = new PropertyList(); + _this.scaleMultiplier = 1; + _this.colorList = new PropertyList(true); + _this._doAlpha = false; + _this._doScale = false; + _this._doSpeed = false; + _this._doAcceleration = false; + _this._doColor = false; + _this._doNormalMovement = false; + _this._oneOverLife = 0; + _this.next = null; + _this.prev = null; + //save often used functions on the instance instead of the prototype for better speed + _this.init = _this.init; + _this.Particle_init = Particle.prototype.init; + _this.update = _this.update; + _this.Particle_update = Particle.prototype.update; + _this.Sprite_destroy = _super.prototype.destroy; + _this.Particle_destroy = Particle.prototype.destroy; + _this.applyArt = _this.applyArt; + _this.kill = _this.kill; + return _this; + } + /** + * Initializes the particle for use, based on the properties that have to + * have been set already on the particle. + */ + Particle.prototype.init = function () { + //reset the age + this.age = 0; + //set up the velocity based on the start speed and rotation + this.velocity.x = this.speedList.current.value * this.speedMultiplier; + this.velocity.y = 0; + exports.ParticleUtils.rotatePoint(this.rotation, this.velocity); + if (this.noRotation) { + this.rotation = 0; + } + else { + //convert rotation to Radians from Degrees + this.rotation *= exports.ParticleUtils.DEG_TO_RADS; + } + //convert rotation speed to Radians from Degrees + this.rotationSpeed *= exports.ParticleUtils.DEG_TO_RADS; + this.rotationAcceleration *= exports.ParticleUtils.DEG_TO_RADS; + //set alpha to inital alpha + this.alpha = this.alphaList.current.value; + //set scale to initial scale + this.scale.x = this.scale.y = this.scaleList.current.value; + //figure out what we need to interpolate + this._doAlpha = !!this.alphaList.current.next; + this._doSpeed = !!this.speedList.current.next; + this._doScale = !!this.scaleList.current.next; + this._doColor = !!this.colorList.current.next; + this._doAcceleration = this.acceleration.x !== 0 || this.acceleration.y !== 0; + //_doNormalMovement can be cancelled by subclasses + this._doNormalMovement = this._doSpeed || this.speedList.current.value !== 0 || this._doAcceleration; + //save our lerp helper + this._oneOverLife = 1 / this.maxLife; + //set the inital color + var color = this.colorList.current.value; + this.tint = exports.ParticleUtils.combineRGBComponents(color.r, color.g, color.b); + //ensure visibility + this.visible = true; + }; + /** + * Sets the texture for the particle. This can be overridden to allow + * for an animated particle. + * @param art The texture to set. + */ + Particle.prototype.applyArt = function (art) { + this.texture = art || pixi.Texture.EMPTY; + }; + /** + * Updates the particle. + * @param delta Time elapsed since the previous frame, in __seconds__. + * @return The standard interpolation multiplier (0-1) used for all + * relevant particle properties. A value of -1 means the particle + * died of old age instead. + */ + Particle.prototype.update = function (delta) { + //increase age + this.age += delta; + //recycle particle if it is too old + if (this.age >= this.maxLife || this.age < 0) { + this.kill(); + return -1; + } + //determine our interpolation value + var lerp = this.age * this._oneOverLife; //lifetime / maxLife; + if (this.ease) { + if (this.ease.length == 4) { + //the t, b, c, d parameters that some tween libraries use + //(time, initial value, end value, duration) + lerp = this.ease(lerp, 0, 1, 1); + } + else { + //the simplified version that we like that takes + //one parameter, time from 0-1. TweenJS eases provide this usage. + lerp = this.ease(lerp); + } + } + //interpolate alpha + if (this._doAlpha) + this.alpha = this.alphaList.interpolate(lerp); + //interpolate scale + if (this._doScale) { + var scale = this.scaleList.interpolate(lerp) * this.scaleMultiplier; + this.scale.x = this.scale.y = scale; + } + //handle movement + if (this._doNormalMovement) { + var deltaX = void 0; + var deltaY = void 0; + //interpolate speed + if (this._doSpeed) { + var speed = this.speedList.interpolate(lerp) * this.speedMultiplier; + exports.ParticleUtils.normalize(this.velocity); + exports.ParticleUtils.scaleBy(this.velocity, speed); + deltaX = this.velocity.x * delta; + deltaY = this.velocity.y * delta; + } + else if (this._doAcceleration) { + var oldVX = this.velocity.x; + var oldVY = this.velocity.y; + this.velocity.x += this.acceleration.x * delta; + this.velocity.y += this.acceleration.y * delta; + if (this.maxSpeed) { + var currentSpeed = exports.ParticleUtils.length(this.velocity); + //if we are going faster than we should, clamp at the max speed + //DO NOT recalculate vector length + if (currentSpeed > this.maxSpeed) { + exports.ParticleUtils.scaleBy(this.velocity, this.maxSpeed / currentSpeed); + } + } + // calculate position delta by the midpoint between our old velocity and our new velocity + deltaX = (oldVX + this.velocity.x) / 2 * delta; + deltaY = (oldVY + this.velocity.y) / 2 * delta; + } + else { + deltaX = this.velocity.x * delta; + deltaY = this.velocity.y * delta; + } + //adjust position based on velocity + this.position.x += deltaX; + this.position.y += deltaY; + } + //interpolate color + if (this._doColor) { + this.tint = this.colorList.interpolate(lerp); + } + //update rotation + if (this.rotationAcceleration !== 0) { + var newRotationSpeed = this.rotationSpeed + this.rotationAcceleration * delta; + this.rotation += (this.rotationSpeed + newRotationSpeed) / 2 * delta; + this.rotationSpeed = newRotationSpeed; + } + else if (this.rotationSpeed !== 0) { + this.rotation += this.rotationSpeed * delta; + } + else if (this.acceleration && !this.noRotation) { + this.rotation = Math.atan2(this.velocity.y, this.velocity.x); // + Math.PI / 2; + } + return lerp; + }; + /** + * Kills the particle, removing it from the display list + * and telling the emitter to recycle it. + */ + Particle.prototype.kill = function () { + this.emitter.recycle(this); + }; + /** + * Destroys the particle, removing references and preventing future use. + */ + Particle.prototype.destroy = function () { + if (this.parent) + this.parent.removeChild(this); + this.Sprite_destroy(); + this.emitter = this.velocity = this.colorList = this.scaleList = this.alphaList = + this.speedList = this.ease = this.next = this.prev = null; + }; + /** + * Checks over the art that was passed to the Emitter's init() function, to do any special + * modifications to prepare it ahead of time. + * @param art The array of art data. For Particle, it should be an array of + * Textures. Any strings in the array will be converted to + * Textures via Texture.from(). + * @return The art, after any needed modifications. + */ + Particle.parseArt = function (art) { + //convert any strings to Textures. + var i; + for (i = art.length; i >= 0; --i) { + if (typeof art[i] == "string") + art[i] = GetTextureFromString(art[i]); + } + //particles from different base textures will be slower in WebGL than if they + //were from one spritesheet + if (exports.ParticleUtils.verbose) { + for (i = art.length - 1; i > 0; --i) { + if (art[i].baseTexture != art[i - 1].baseTexture) { + if (window.console) + console.warn("PixiParticles: using particle textures from different images may hinder performance in WebGL"); + break; + } + } + } + return art; + }; + /** + * Parses extra emitter data to ensure it is set up for this particle class. + * Particle does nothing to the extra data. + * @param extraData The extra data from the particle config. + * @return The parsed extra data. + */ + Particle.parseData = function (extraData) { + return extraData; + }; + return Particle; }(pixi.Sprite)); - /** - * Chain of line segments for generating spawn positions. - */ - var PolygonalChain = /** @class */ (function () { - /** - * @param data Point data for polygon chains. Either a list of points for a single chain, or a list of chains. - */ - function PolygonalChain(data) { - this.segments = []; - this.countingLengths = []; - this.totalLength = 0; - this.init(data); - } - /** - * @param data Point data for polygon chains. Either a list of points for a single chain, or a list of chains. - */ - PolygonalChain.prototype.init = function (data) { - // if data is not present, set up a segment of length 0 - if (!data || !data.length) { - this.segments.push({ p1: { x: 0, y: 0 }, p2: { x: 0, y: 0 }, l: 0 }); - } - else { - if (Array.isArray(data[0])) { - // list of segment chains, each defined as a list of points - for (var i = 0; i < data.length; ++i) { - // loop through the chain, connecting points - var chain = data[i]; - var prevPoint = chain[0]; - for (var j = 1; j < chain.length; ++j) { - var second = chain[j]; - this.segments.push({ p1: prevPoint, p2: second, l: 0 }); - prevPoint = second; - } - } - } - else { - var prevPoint = data[0]; - // list of points - for (var i = 1; i < data.length; ++i) { - var second = data[i]; - this.segments.push({ p1: prevPoint, p2: second, l: 0 }); - prevPoint = second; - } - } - } - // now go through our segments to calculate the lengths so that we - // can set up a nice weighted random distribution - for (var i = 0; i < this.segments.length; ++i) { - var _a = this.segments[i], p1 = _a.p1, p2 = _a.p2; - var segLength = Math.sqrt((p2.x - p1.x) * (p2.x - p1.x) + (p2.y - p1.y) * (p2.y - p1.y)); - // save length so we can turn a random number into a 0-1 interpolation value later - this.segments[i].l = segLength; - this.totalLength += segLength; - // keep track of the length so far, counting up - this.countingLengths.push(this.totalLength); - } - }; - /** - * Gets a random point in the chain. - * @param out The point to store the selected position in. - */ - PolygonalChain.prototype.getRandomPoint = function (out) { - // select a random spot in the length of the chain - var rand = Math.random() * this.totalLength; - var chosenSeg; - var lerp; - // if only one segment, it wins - if (this.segments.length === 1) { - chosenSeg = this.segments[0]; - lerp = rand; - } - else { - // otherwise, go through countingLengths until we have determined - // which segment we chose - for (var i = 0; i < this.countingLengths.length; ++i) { - if (rand < this.countingLengths[i]) { - chosenSeg = this.segments[i]; - // set lerp equal to the length into that segment (i.e. the remainder after subtracting all the segments before it) - lerp = i === 0 ? rand : rand - this.countingLengths[i - 1]; - break; - } - } - } - // divide lerp by the segment length, to result in a 0-1 number. - lerp /= chosenSeg.l || 1; - var p1 = chosenSeg.p1, p2 = chosenSeg.p2; - // now calculate the position in the segment that the lerp value represents - out.x = p1.x + lerp * (p2.x - p1.x); - out.y = p1.y + lerp * (p2.y - p1.y); - }; - return PolygonalChain; + /** + * Chain of line segments for generating spawn positions. + */ + var PolygonalChain = /** @class */ (function () { + /** + * @param data Point data for polygon chains. Either a list of points for a single chain, or a list of chains. + */ + function PolygonalChain(data) { + this.segments = []; + this.countingLengths = []; + this.totalLength = 0; + this.init(data); + } + /** + * @param data Point data for polygon chains. Either a list of points for a single chain, or a list of chains. + */ + PolygonalChain.prototype.init = function (data) { + // if data is not present, set up a segment of length 0 + if (!data || !data.length) { + this.segments.push({ p1: { x: 0, y: 0 }, p2: { x: 0, y: 0 }, l: 0 }); + } + else { + if (Array.isArray(data[0])) { + // list of segment chains, each defined as a list of points + for (var i = 0; i < data.length; ++i) { + // loop through the chain, connecting points + var chain = data[i]; + var prevPoint = chain[0]; + for (var j = 1; j < chain.length; ++j) { + var second = chain[j]; + this.segments.push({ p1: prevPoint, p2: second, l: 0 }); + prevPoint = second; + } + } + } + else { + var prevPoint = data[0]; + // list of points + for (var i = 1; i < data.length; ++i) { + var second = data[i]; + this.segments.push({ p1: prevPoint, p2: second, l: 0 }); + prevPoint = second; + } + } + } + // now go through our segments to calculate the lengths so that we + // can set up a nice weighted random distribution + for (var i = 0; i < this.segments.length; ++i) { + var _a = this.segments[i], p1 = _a.p1, p2 = _a.p2; + var segLength = Math.sqrt((p2.x - p1.x) * (p2.x - p1.x) + (p2.y - p1.y) * (p2.y - p1.y)); + // save length so we can turn a random number into a 0-1 interpolation value later + this.segments[i].l = segLength; + this.totalLength += segLength; + // keep track of the length so far, counting up + this.countingLengths.push(this.totalLength); + } + }; + /** + * Gets a random point in the chain. + * @param out The point to store the selected position in. + */ + PolygonalChain.prototype.getRandomPoint = function (out) { + // select a random spot in the length of the chain + var rand = Math.random() * this.totalLength; + var chosenSeg; + var lerp; + // if only one segment, it wins + if (this.segments.length === 1) { + chosenSeg = this.segments[0]; + lerp = rand; + } + else { + // otherwise, go through countingLengths until we have determined + // which segment we chose + for (var i = 0; i < this.countingLengths.length; ++i) { + if (rand < this.countingLengths[i]) { + chosenSeg = this.segments[i]; + // set lerp equal to the length into that segment (i.e. the remainder after subtracting all the segments before it) + lerp = i === 0 ? rand : rand - this.countingLengths[i - 1]; + break; + } + } + } + // divide lerp by the segment length, to result in a 0-1 number. + lerp /= chosenSeg.l || 1; + var p1 = chosenSeg.p1, p2 = chosenSeg.p2; + // now calculate the position in the segment that the lerp value represents + out.x = p1.x + lerp * (p2.x - p1.x); + out.y = p1.y + lerp * (p2.y - p1.y); + }; + return PolygonalChain; }()); - // get the shared ticker, in V4 and V5 friendly methods - /** - * @hidden - */ - var ticker; - // to avoid Rollup transforming our import, save pixi namespace in a variable - var pixiNS$1 = pixi; - if (parseInt(/^(\d+)\./.exec(pixi.VERSION)[1]) < 5) { - ticker = pixiNS$1.ticker.shared; - } - else { - ticker = pixiNS$1.Ticker.shared; - } - /** - * @hidden - */ - var helperPoint = new pixi.Point(); - /** - * A particle emitter. - */ - var Emitter = /** @class */ (function () { - /** - * @param particleParent The container to add the particles to. - * @param particleImages A texture or array of textures to use - * for the particles. Strings will be turned - * into textures via Texture.fromImage(). - * @param config A configuration object containing settings for the emitter. - * @param config.emit If config.emit is explicitly passed as false, the - * Emitter will start disabled. - * @param config.autoUpdate If config.autoUpdate is explicitly passed as - * true, the Emitter will automatically call - * update via the PIXI shared ticker. - */ - function Emitter(particleParent, particleImages, config) { - /** - * A number keeping index of currently applied image. Used to emit arts in order. - */ - this._currentImageIndex = -1; - this._particleConstructor = Particle; - //properties for individual particles - this.particleImages = null; - this.startAlpha = null; - this.startSpeed = null; - this.minimumSpeedMultiplier = 1; - this.acceleration = null; - this.maxSpeed = NaN; - this.startScale = null; - this.minimumScaleMultiplier = 1; - this.startColor = null; - this.minLifetime = 0; - this.maxLifetime = 0; - this.minStartRotation = 0; - this.maxStartRotation = 0; - this.noRotation = false; - this.minRotationSpeed = 0; - this.maxRotationSpeed = 0; - this.particleBlendMode = 0; - this.customEase = null; - this.extraData = null; - //properties for spawning particles - this._frequency = 1; - this.spawnChance = 1; - this.maxParticles = 1000; - this.emitterLifetime = -1; - this.spawnPos = null; - this.spawnType = null; - this._spawnFunc = null; - this.spawnRect = null; - this.spawnCircle = null; - this.spawnPolygonalChain = null; - this.particlesPerWave = 1; - this.particleSpacing = 0; - this.angleStart = 0; - //emitter properties - this.rotation = 0; - this.ownerPos = null; - this._prevEmitterPos = null; - this._prevPosIsValid = false; - this._posChanged = false; - this._parent = null; - this.addAtBack = false; - this.particleCount = 0; - this._emit = false; - this._spawnTimer = 0; - this._emitterLife = -1; - this._activeParticlesFirst = null; - this._activeParticlesLast = null; - this._poolFirst = null; - this._origConfig = null; - this._origArt = null; - this._autoUpdate = false; - this._currentImageIndex = -1; - this._destroyWhenComplete = false; - this._completeCallback = null; - //set the initial parent - this.parent = particleParent; - if (particleImages && config) - this.init(particleImages, config); - //save often used functions on the instance instead of the prototype for better speed - this.recycle = this.recycle; - this.update = this.update; - this.rotate = this.rotate; - this.updateSpawnPos = this.updateSpawnPos; - this.updateOwnerPos = this.updateOwnerPos; - } - Object.defineProperty(Emitter.prototype, "orderedArt", { - /** - * If the emitter is using particle art in order as provided in `particleImages`. - * Effective only when `particleImages` has multiple art options. - * This is particularly useful ensuring that each art shows up once, in case you need to emit a body in an order. - * For example: dragon - [Head, body1, body2, ..., tail] - */ - get: function () { return this._currentImageIndex !== -1; }, - set: function (value) { - this._currentImageIndex = value ? 0 : -1; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Emitter.prototype, "frequency", { - /** - * Time between particle spawns in seconds. If this value is not a number greater than 0, - * it will be set to 1 (particle per second) to prevent infinite loops. - */ - get: function () { return this._frequency; }, - set: function (value) { - //do some error checking to prevent infinite loops - if (typeof value == "number" && value > 0) - this._frequency = value; - else - this._frequency = 1; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Emitter.prototype, "particleConstructor", { - /** - * The constructor used to create new particles. The default is - * the built in Particle class. Setting this will dump any active or - * pooled particles, if the emitter has already been used. - */ - get: function () { return this._particleConstructor; }, - set: function (value) { - if (value != this._particleConstructor) { - this._particleConstructor = value; - //clean up existing particles - this.cleanup(); - //scrap all the particles - for (var particle = this._poolFirst; particle; particle = particle.next) { - particle.destroy(); - } - this._poolFirst = null; - //re-initialize the emitter so that the new constructor can do anything it needs to - if (this._origConfig && this._origArt) - this.init(this._origArt, this._origConfig); - } - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Emitter.prototype, "parent", { - /** - * The container to add particles to. Settings this will dump any active particles. - */ - get: function () { return this._parent; }, - set: function (value) { - this.cleanup(); - this._parent = value; - }, - enumerable: true, - configurable: true - }); - /** - * Sets up the emitter based on the config settings. - * @param art A texture or array of textures to use for the particles. - * @param config A configuration object containing settings for the emitter. - */ - Emitter.prototype.init = function (art, config) { - if (!art || !config) - return; - //clean up any existing particles - this.cleanup(); - //store the original config and particle images, in case we need to re-initialize - //when the particle constructor is changed - this._origConfig = config; - this._origArt = art; - //set up the array of data, also ensuring that it is an array - art = Array.isArray(art) ? art.slice() : [art]; - //run the art through the particle class's parsing function - var partClass = this._particleConstructor; - this.particleImages = partClass.parseArt ? partClass.parseArt(art) : art; - /////////////////////////// - // Particle Properties // - /////////////////////////// - //set up the alpha - if (config.alpha) { - this.startAlpha = PropertyNode.createList(config.alpha); - } - else - this.startAlpha = new PropertyNode(1, 0); - //set up the speed - if (config.speed) { - this.startSpeed = PropertyNode.createList(config.speed); - this.minimumSpeedMultiplier = ('minimumSpeedMultiplier' in config ? config.minimumSpeedMultiplier : config.speed.minimumSpeedMultiplier) || 1; - } - else { - this.minimumSpeedMultiplier = 1; - this.startSpeed = new PropertyNode(0, 0); - } - //set up acceleration - var acceleration = config.acceleration; - if (acceleration && (acceleration.x || acceleration.y)) { - //make sure we disable speed interpolation - this.startSpeed.next = null; - this.acceleration = new pixi.Point(acceleration.x, acceleration.y); - this.maxSpeed = config.maxSpeed || NaN; - } - else - this.acceleration = new pixi.Point(); - //set up the scale - if (config.scale) { - this.startScale = PropertyNode.createList(config.scale); - this.minimumScaleMultiplier = ('minimumScaleMultiplier' in config ? config.minimumScaleMultiplier : config.scale.minimumScaleMultiplier) || 1; - } - else { - this.startScale = new PropertyNode(1, 0); - this.minimumScaleMultiplier = 1; - } - //set up the color - if (config.color) { - this.startColor = PropertyNode.createList(config.color); - } - else { - this.startColor = new PropertyNode({ r: 0xFF, g: 0xFF, b: 0xFF }, 0); - } - //set up the start rotation - if (config.startRotation) { - this.minStartRotation = config.startRotation.min; - this.maxStartRotation = config.startRotation.max; - } - else - this.minStartRotation = this.maxStartRotation = 0; - if (config.noRotation && - (this.minStartRotation || this.maxStartRotation)) { - this.noRotation = !!config.noRotation; - } - else - this.noRotation = false; - //set up the rotation speed - if (config.rotationSpeed) { - this.minRotationSpeed = config.rotationSpeed.min; - this.maxRotationSpeed = config.rotationSpeed.max; - } - else - this.minRotationSpeed = this.maxRotationSpeed = 0; - this.rotationAcceleration = config.rotationAcceleration || 0; - //set up the lifetime - this.minLifetime = config.lifetime.min; - this.maxLifetime = config.lifetime.max; - //get the blend mode - this.particleBlendMode = exports.ParticleUtils.getBlendMode(config.blendMode); - //use the custom ease if provided - if (config.ease) { - this.customEase = typeof config.ease == "function" ? - config.ease : exports.ParticleUtils.generateEase(config.ease); - } - else - this.customEase = null; - //set up the extra data, running it through the particle class's parseData function. - if (partClass.parseData) - this.extraData = partClass.parseData(config.extraData); - else - this.extraData = config.extraData || null; - ////////////////////////// - // Emitter Properties // - ////////////////////////// - //reset spawn type specific settings - this.spawnRect = this.spawnCircle = null; - this.particlesPerWave = 1; - if (config.particlesPerWave && config.particlesPerWave > 1) - this.particlesPerWave = config.particlesPerWave; - this.particleSpacing = 0; - this.angleStart = 0; - //determine the spawn function to use - this.parseSpawnType(config); - //set the spawning frequency - this.frequency = config.frequency; - this.spawnChance = (typeof config.spawnChance === 'number' && config.spawnChance > 0) ? config.spawnChance : 1; - //set the emitter lifetime - this.emitterLifetime = config.emitterLifetime || -1; - //set the max particles - this.maxParticles = config.maxParticles > 0 ? config.maxParticles : 1000; - //determine if we should add the particle at the back of the list or not - this.addAtBack = !!config.addAtBack; - //reset the emitter position and rotation variables - this.rotation = 0; - this.ownerPos = new pixi.Point(); - this.spawnPos = new pixi.Point(config.pos.x, config.pos.y); - this.initAdditional(art, config); - this._prevEmitterPos = this.spawnPos.clone(); - //previous emitter position is invalid and should not be used for interpolation - this._prevPosIsValid = false; - //start emitting - this._spawnTimer = 0; - this.emit = config.emit === undefined ? true : !!config.emit; - this.autoUpdate = !!config.autoUpdate; - this.orderedArt = !!config.orderedArt; - }; - /** - * Sets up additional parameters to the emitter from config settings. - * Using for parsing additional parameters on classes that extend from Emitter - * @param art A texture or array of textures to use for the particles. - * @param config A configuration object containing settings for the emitter. - */ - Emitter.prototype.initAdditional = function (art, config) { - }; - /** - * Parsing emitter spawn type from config settings. - * Place for override and add new kind of spawn type - * @param config A configuration object containing settings for the emitter. - */ - Emitter.prototype.parseSpawnType = function (config) { - var spawnCircle; - switch (config.spawnType) { - case "rect": - this.spawnType = "rect"; - this._spawnFunc = this._spawnRect; - var spawnRect = config.spawnRect; - this.spawnRect = new pixi.Rectangle(spawnRect.x, spawnRect.y, spawnRect.w, spawnRect.h); - break; - case "circle": - this.spawnType = "circle"; - this._spawnFunc = this._spawnCircle; - spawnCircle = config.spawnCircle; - this.spawnCircle = new pixi.Circle(spawnCircle.x, spawnCircle.y, spawnCircle.r); - break; - case "ring": - this.spawnType = "ring"; - this._spawnFunc = this._spawnRing; - spawnCircle = config.spawnCircle; - this.spawnCircle = new pixi.Circle(spawnCircle.x, spawnCircle.y, spawnCircle.r); - this.spawnCircle.minRadius = spawnCircle.minR; - break; - case "burst": - this.spawnType = "burst"; - this._spawnFunc = this._spawnBurst; - this.particleSpacing = config.particleSpacing; - this.angleStart = config.angleStart ? config.angleStart : 0; - break; - case "point": - this.spawnType = "point"; - this._spawnFunc = this._spawnPoint; - break; - case "polygonalChain": - this.spawnType = "polygonalChain"; - this._spawnFunc = this._spawnPolygonalChain; - this.spawnPolygonalChain = new PolygonalChain(config.spawnPolygon); - break; - default: - this.spawnType = "point"; - this._spawnFunc = this._spawnPoint; - break; - } - }; - /** - * Recycles an individual particle. For internal use only. - * @param particle The particle to recycle. - * @internal - */ - Emitter.prototype.recycle = function (particle) { - if (particle.next) - particle.next.prev = particle.prev; - if (particle.prev) - particle.prev.next = particle.next; - if (particle == this._activeParticlesLast) - this._activeParticlesLast = particle.prev; - if (particle == this._activeParticlesFirst) - this._activeParticlesFirst = particle.next; - //add to pool - particle.prev = null; - particle.next = this._poolFirst; - this._poolFirst = particle; - //remove child from display, or make it invisible if it is in a ParticleContainer - if (particle.parent) - particle.parent.removeChild(particle); - //decrease count - --this.particleCount; - }; - /** - * Sets the rotation of the emitter to a new value. - * @param newRot The new rotation, in degrees. - */ - Emitter.prototype.rotate = function (newRot) { - if (this.rotation == newRot) - return; - //caclulate the difference in rotation for rotating spawnPos - var diff = newRot - this.rotation; - this.rotation = newRot; - //rotate spawnPos - exports.ParticleUtils.rotatePoint(diff, this.spawnPos); - //mark the position as having changed - this._posChanged = true; - }; - /** - * Changes the spawn position of the emitter. - * @param x The new x value of the spawn position for the emitter. - * @param y The new y value of the spawn position for the emitter. - */ - Emitter.prototype.updateSpawnPos = function (x, y) { - this._posChanged = true; - this.spawnPos.x = x; - this.spawnPos.y = y; - }; - /** - * Changes the position of the emitter's owner. You should call this if you are adding - * particles to the world container that your emitter's owner is moving around in. - * @param x The new x value of the emitter's owner. - * @param y The new y value of the emitter's owner. - */ - Emitter.prototype.updateOwnerPos = function (x, y) { - this._posChanged = true; - this.ownerPos.x = x; - this.ownerPos.y = y; - }; - /** - * Prevents emitter position interpolation in the next update. - * This should be used if you made a major position change of your emitter's owner - * that was not normal movement. - */ - Emitter.prototype.resetPositionTracking = function () { - this._prevPosIsValid = false; - }; - Object.defineProperty(Emitter.prototype, "emit", { - /** - * If particles should be emitted during update() calls. Setting this to false - * stops new particles from being created, but allows existing ones to die out. - */ - get: function () { return this._emit; }, - set: function (value) { - this._emit = !!value; - this._emitterLife = this.emitterLifetime; - }, - enumerable: true, - configurable: true - }); - ; - Object.defineProperty(Emitter.prototype, "autoUpdate", { - /** - * If the update function is called automatically from the shared ticker. - * Setting this to false requires calling the update function manually. - */ - get: function () { return this._autoUpdate; }, - set: function (value) { - if (this._autoUpdate && !value) { - ticker.remove(this.update, this); - } - else if (!this._autoUpdate && value) { - ticker.add(this.update, this); - } - this._autoUpdate = !!value; - }, - enumerable: true, - configurable: true - }); - /** - * Starts emitting particles, sets autoUpdate to true, and sets up the Emitter to destroy itself - * when particle emission is complete. - * @param callback Callback for when emission is complete (all particles have died off) - */ - Emitter.prototype.playOnceAndDestroy = function (callback) { - this.autoUpdate = true; - this.emit = true; - this._destroyWhenComplete = true; - this._completeCallback = callback; - }; - /** - * Starts emitting particles and optionally calls a callback when particle emission is complete. - * @param callback Callback for when emission is complete (all particles have died off) - */ - Emitter.prototype.playOnce = function (callback) { - this.emit = true; - this._completeCallback = callback; - }; - /** - * Updates all particles spawned by this emitter and emits new ones. - * @param delta Time elapsed since the previous frame, in __seconds__. - */ - Emitter.prototype.update = function (delta) { - if (this._autoUpdate) { - delta = delta / pixi.settings.TARGET_FPMS / 1000; - } - //if we don't have a parent to add particles to, then don't do anything. - //this also works as a isDestroyed check - if (!this._parent) - return; - //update existing particles - var i, particle, next; - for (particle = this._activeParticlesFirst; particle; particle = next) { - next = particle.next; - particle.update(delta); - } - var prevX, prevY; - //if the previous position is valid, store these for later interpolation - if (this._prevPosIsValid) { - prevX = this._prevEmitterPos.x; - prevY = this._prevEmitterPos.y; - } - //store current position of the emitter as local variables - var curX = this.ownerPos.x + this.spawnPos.x; - var curY = this.ownerPos.y + this.spawnPos.y; - //spawn new particles - if (this._emit) { - //decrease spawn timer - this._spawnTimer -= delta < 0 ? 0 : delta; - //while _spawnTimer < 0, we have particles to spawn - while (this._spawnTimer <= 0) { - //determine if the emitter should stop spawning - if (this._emitterLife > 0) { - this._emitterLife -= this._frequency; - if (this._emitterLife <= 0) { - this._spawnTimer = 0; - this._emitterLife = 0; - this.emit = false; - break; - } - } - //determine if we have hit the particle limit - if (this.particleCount >= this.maxParticles) { - this._spawnTimer += this._frequency; - continue; - } - //determine the particle lifetime - var lifetime = void 0; - if (this.minLifetime == this.maxLifetime) - lifetime = this.minLifetime; - else - lifetime = Math.random() * (this.maxLifetime - this.minLifetime) + this.minLifetime; - //only make the particle if it wouldn't immediately destroy itself - if (-this._spawnTimer < lifetime) { - //If the position has changed and this isn't the first spawn, - //interpolate the spawn position - var emitPosX = void 0, emitPosY = void 0; - if (this._prevPosIsValid && this._posChanged) { - //1 - _spawnTimer / delta, but _spawnTimer is negative - var lerp = 1 + this._spawnTimer / delta; - emitPosX = (curX - prevX) * lerp + prevX; - emitPosY = (curY - prevY) * lerp + prevY; - } - else //otherwise just set to the spawn position - { - emitPosX = curX; - emitPosY = curY; - } - //create enough particles to fill the wave (non-burst types have a wave of 1) - i = 0; - for (var len = Math.min(this.particlesPerWave, this.maxParticles - this.particleCount); i < len; ++i) { - //see if we actually spawn one - if (this.spawnChance < 1 && Math.random() >= this.spawnChance) - continue; - //create particle - var p = void 0; - if (this._poolFirst) { - p = this._poolFirst; - this._poolFirst = this._poolFirst.next; - p.next = null; - } - else { - p = new this.particleConstructor(this); - } - //set a random texture if we have more than one - if (this.particleImages.length > 1) { - // if using ordered art - if (this._currentImageIndex !== -1) { - // get current art index, then increment for the next particle - p.applyArt(this.particleImages[this._currentImageIndex++]); - // loop around if needed - if (this._currentImageIndex < 0 || this._currentImageIndex >= this.particleImages.length) { - this._currentImageIndex = 0; - } - } - // otherwise grab a random one - else { - p.applyArt(this.particleImages[Math.floor(Math.random() * this.particleImages.length)]); - } - } - else { - //if they are actually the same texture, a standard particle - //will quit early from the texture setting in setTexture(). - p.applyArt(this.particleImages[0]); - } - //set up the start and end values - p.alphaList.reset(this.startAlpha); - if (this.minimumSpeedMultiplier != 1) { - p.speedMultiplier = Math.random() * (1 - this.minimumSpeedMultiplier) + this.minimumSpeedMultiplier; - } - p.speedList.reset(this.startSpeed); - p.acceleration.x = this.acceleration.x; - p.acceleration.y = this.acceleration.y; - p.maxSpeed = this.maxSpeed; - if (this.minimumScaleMultiplier != 1) { - p.scaleMultiplier = Math.random() * (1 - this.minimumScaleMultiplier) + this.minimumScaleMultiplier; - } - p.scaleList.reset(this.startScale); - p.colorList.reset(this.startColor); - //randomize the rotation speed - if (this.minRotationSpeed == this.maxRotationSpeed) - p.rotationSpeed = this.minRotationSpeed; - else - p.rotationSpeed = Math.random() * (this.maxRotationSpeed - this.minRotationSpeed) + this.minRotationSpeed; - p.rotationAcceleration = this.rotationAcceleration; - p.noRotation = this.noRotation; - //set up the lifetime - p.maxLife = lifetime; - //set the blend mode - p.blendMode = this.particleBlendMode; - //set the custom ease, if any - p.ease = this.customEase; - //set the extra data, if any - p.extraData = this.extraData; - //set additional properties to particle - this.applyAdditionalProperties(p); - //call the proper function to handle rotation and position of particle - this._spawnFunc(p, emitPosX, emitPosY, i); - //initialize particle - p.init(); - //update the particle by the time passed, so the particles are spread out properly - p.update(-this._spawnTimer); //we want a positive delta, because a negative delta messes things up - //add the particle to the display list - if (!p.parent) { - if (this.addAtBack) - this._parent.addChildAt(p, 0); - else - this._parent.addChild(p); - } - else { - //kind of hacky, but performance friendly - //shuffle children to correct place - var children = this._parent.children; - //avoid using splice if possible - if (children[0] == p) - children.shift(); - else if (children[children.length - 1] == p) - children.pop(); - else { - var index = children.indexOf(p); - children.splice(index, 1); - } - if (this.addAtBack) - children.unshift(p); - else - children.push(p); - } - //add particle to list of active particles - if (this._activeParticlesLast) { - this._activeParticlesLast.next = p; - p.prev = this._activeParticlesLast; - this._activeParticlesLast = p; - } - else { - this._activeParticlesLast = this._activeParticlesFirst = p; - } - ++this.particleCount; - } - } - //increase timer and continue on to any other particles that need to be created - this._spawnTimer += this._frequency; - } - } - //if the position changed before this update, then keep track of that - if (this._posChanged) { - this._prevEmitterPos.x = curX; - this._prevEmitterPos.y = curY; - this._prevPosIsValid = true; - this._posChanged = false; - } - //if we are all done and should destroy ourselves, take care of that - if (!this._emit && !this._activeParticlesFirst) { - if (this._completeCallback) { - var cb = this._completeCallback; - this._completeCallback = null; - cb(); - } - if (this._destroyWhenComplete) { - this.destroy(); - } - } - }; - /** - * Set additional properties to new particle. - * Using on classes that extend from Emitter - * @param p The particle - */ - Emitter.prototype.applyAdditionalProperties = function (p) { - }; - /** - * Positions a particle for a point type emitter. - * @param p The particle to position and rotate. - * @param emitPosX The emitter's x position - * @param emitPosY The emitter's y position - * @param i The particle number in the current wave. Not used for this function. - */ - Emitter.prototype._spawnPoint = function (p, emitPosX, emitPosY) { - //set the initial rotation/direction of the particle based on - //starting particle angle and rotation of emitter - if (this.minStartRotation == this.maxStartRotation) - p.rotation = this.minStartRotation + this.rotation; - else - p.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + this.minStartRotation + this.rotation; - //drop the particle at the emitter's position - p.position.x = emitPosX; - p.position.y = emitPosY; - }; - /** - * Positions a particle for a rectangle type emitter. - * @param p The particle to position and rotate. - * @param emitPosX The emitter's x position - * @param emitPosY The emitter's y position - * @param i The particle number in the current wave. Not used for this function. - */ - Emitter.prototype._spawnRect = function (p, emitPosX, emitPosY) { - //set the initial rotation/direction of the particle based on starting - //particle angle and rotation of emitter - if (this.minStartRotation == this.maxStartRotation) - p.rotation = this.minStartRotation + this.rotation; - else - p.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + this.minStartRotation + this.rotation; - //place the particle at a random point in the rectangle - helperPoint.x = Math.random() * this.spawnRect.width + this.spawnRect.x; - helperPoint.y = Math.random() * this.spawnRect.height + this.spawnRect.y; - if (this.rotation !== 0) - exports.ParticleUtils.rotatePoint(this.rotation, helperPoint); - p.position.x = emitPosX + helperPoint.x; - p.position.y = emitPosY + helperPoint.y; - }; - /** - * Positions a particle for a circle type emitter. - * @param p The particle to position and rotate. - * @param emitPosX The emitter's x position - * @param emitPosY The emitter's y position - * @param i The particle number in the current wave. Not used for this function. - */ - Emitter.prototype._spawnCircle = function (p, emitPosX, emitPosY) { - //set the initial rotation/direction of the particle based on starting - //particle angle and rotation of emitter - if (this.minStartRotation == this.maxStartRotation) - p.rotation = this.minStartRotation + this.rotation; - else - p.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + - this.minStartRotation + this.rotation; - //place the particle at a random radius in the circle - helperPoint.x = Math.random() * this.spawnCircle.radius; - helperPoint.y = 0; - //rotate the point to a random angle in the circle - exports.ParticleUtils.rotatePoint(Math.random() * 360, helperPoint); - //offset by the circle's center - helperPoint.x += this.spawnCircle.x; - helperPoint.y += this.spawnCircle.y; - //rotate the point by the emitter's rotation - if (this.rotation !== 0) - exports.ParticleUtils.rotatePoint(this.rotation, helperPoint); - //set the position, offset by the emitter's position - p.position.x = emitPosX + helperPoint.x; - p.position.y = emitPosY + helperPoint.y; - }; - /** - * Positions a particle for a ring type emitter. - * @param p The particle to position and rotate. - * @param emitPosX The emitter's x position - * @param emitPosY The emitter's y position - * @param i The particle number in the current wave. Not used for this function. - */ - Emitter.prototype._spawnRing = function (p, emitPosX, emitPosY) { - var spawnCircle = this.spawnCircle; - //set the initial rotation/direction of the particle based on starting - //particle angle and rotation of emitter - if (this.minStartRotation == this.maxStartRotation) - p.rotation = this.minStartRotation + this.rotation; - else - p.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + - this.minStartRotation + this.rotation; - //place the particle at a random radius in the ring - if (spawnCircle.minRadius !== spawnCircle.radius) { - helperPoint.x = Math.random() * (spawnCircle.radius - spawnCircle.minRadius) + - spawnCircle.minRadius; - } - else - helperPoint.x = spawnCircle.radius; - helperPoint.y = 0; - //rotate the point to a random angle in the circle - var angle = Math.random() * 360; - p.rotation += angle; - exports.ParticleUtils.rotatePoint(angle, helperPoint); - //offset by the circle's center - helperPoint.x += this.spawnCircle.x; - helperPoint.y += this.spawnCircle.y; - //rotate the point by the emitter's rotation - if (this.rotation !== 0) - exports.ParticleUtils.rotatePoint(this.rotation, helperPoint); - //set the position, offset by the emitter's position - p.position.x = emitPosX + helperPoint.x; - p.position.y = emitPosY + helperPoint.y; - }; - /** - * Positions a particle for polygonal chain. - * @param p The particle to position and rotate. - * @param emitPosX The emitter's x position - * @param emitPosY The emitter's y position - * @param i The particle number in the current wave. Not used for this function. - */ - Emitter.prototype._spawnPolygonalChain = function (p, emitPosX, emitPosY) { - //set the initial rotation/direction of the particle based on starting - //particle angle and rotation of emitter - if (this.minStartRotation == this.maxStartRotation) - p.rotation = this.minStartRotation + this.rotation; - else - p.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + - this.minStartRotation + this.rotation; - // get random point on the polygon chain - this.spawnPolygonalChain.getRandomPoint(helperPoint); - //rotate the point by the emitter's rotation - if (this.rotation !== 0) - exports.ParticleUtils.rotatePoint(this.rotation, helperPoint); - //set the position, offset by the emitter's position - p.position.x = emitPosX + helperPoint.x; - p.position.y = emitPosY + helperPoint.y; - }; - /** - * Positions a particle for a burst type emitter. - * @param p The particle to position and rotate. - * @param emitPosX The emitter's x position - * @param emitPosY The emitter's y position - * @param i The particle number in the current wave. - */ - Emitter.prototype._spawnBurst = function (p, emitPosX, emitPosY, i) { - //set the initial rotation/direction of the particle based on spawn - //angle and rotation of emitter - if (this.particleSpacing === 0) - p.rotation = Math.random() * 360; - else - p.rotation = this.angleStart + (this.particleSpacing * i) + this.rotation; - //drop the particle at the emitter's position - p.position.x = emitPosX; - p.position.y = emitPosY; - }; - /** - * Kills all active particles immediately. - */ - Emitter.prototype.cleanup = function () { - var particle, next; - for (particle = this._activeParticlesFirst; particle; particle = next) { - next = particle.next; - this.recycle(particle); - if (particle.parent) - particle.parent.removeChild(particle); - } - this._activeParticlesFirst = this._activeParticlesLast = null; - this.particleCount = 0; - }; - /** - * Destroys the emitter and all of its particles. - */ - Emitter.prototype.destroy = function () { - //make sure we aren't still listening to any tickers - this.autoUpdate = false; - //puts all active particles in the pool, and removes them from the particle parent - this.cleanup(); - //wipe the pool clean - var next; - for (var particle = this._poolFirst; particle; particle = next) { - //store next value so we don't lose it in our destroy call - next = particle.next; - particle.destroy(); - } - this._poolFirst = this._parent = this.particleImages = this.spawnPos = this.ownerPos = - this.startColor = this.startScale = this.startAlpha = this.startSpeed = - this.customEase = this._completeCallback = null; - }; - return Emitter; + // get the shared ticker, in V4 and V5 friendly methods + /** + * @hidden + */ + var ticker; + // to avoid Rollup transforming our import, save pixi namespace in a variable + var pixiNS$1 = pixi; + if (parseInt(/^(\d+)\./.exec(pixi.VERSION)[1]) < 5) { + ticker = pixiNS$1.ticker.shared; + } + else { + ticker = pixiNS$1.Ticker.shared; + } + /** + * @hidden + */ + var helperPoint = new pixi.Point(); + /** + * A particle emitter. + */ + var Emitter = /** @class */ (function () { + /** + * @param particleParent The container to add the particles to. + * @param particleImages A texture or array of textures to use + * for the particles. Strings will be turned + * into textures via Texture.fromImage(). + * @param config A configuration object containing settings for the emitter. + * @param config.emit If config.emit is explicitly passed as false, the + * Emitter will start disabled. + * @param config.autoUpdate If config.autoUpdate is explicitly passed as + * true, the Emitter will automatically call + * update via the PIXI shared ticker. + */ + function Emitter(particleParent, particleImages, config) { + /** + * A number keeping index of currently applied image. Used to emit arts in order. + */ + this._currentImageIndex = -1; + this._particleConstructor = Particle; + //properties for individual particles + this.particleImages = null; + this.startAlpha = null; + this.startSpeed = null; + this.minimumSpeedMultiplier = 1; + this.acceleration = null; + this.maxSpeed = NaN; + this.startScale = null; + this.minimumScaleMultiplier = 1; + this.startColor = null; + this.minLifetime = 0; + this.maxLifetime = 0; + this.minStartRotation = 0; + this.maxStartRotation = 0; + this.noRotation = false; + this.minRotationSpeed = 0; + this.maxRotationSpeed = 0; + this.particleBlendMode = 0; + this.customEase = null; + this.extraData = null; + //properties for spawning particles + this._frequency = 1; + this.spawnChance = 1; + this.maxParticles = 1000; + this.emitterLifetime = -1; + this.spawnPos = null; + this.spawnType = null; + this._spawnFunc = null; + this.spawnRect = null; + this.spawnCircle = null; + this.spawnPolygonalChain = null; + this.particlesPerWave = 1; + this.particleSpacing = 0; + this.angleStart = 0; + //emitter properties + this.rotation = 0; + this.ownerPos = null; + this._prevEmitterPos = null; + this._prevPosIsValid = false; + this._posChanged = false; + this._parent = null; + this.addAtBack = false; + this.particleCount = 0; + this._emit = false; + this._spawnTimer = 0; + this._emitterLife = -1; + this._activeParticlesFirst = null; + this._activeParticlesLast = null; + this._poolFirst = null; + this._origConfig = null; + this._origArt = null; + this._autoUpdate = false; + this._currentImageIndex = -1; + this._destroyWhenComplete = false; + this._completeCallback = null; + //set the initial parent + this.parent = particleParent; + if (particleImages && config) + this.init(particleImages, config); + //save often used functions on the instance instead of the prototype for better speed + this.recycle = this.recycle; + this.update = this.update; + this.rotate = this.rotate; + this.updateSpawnPos = this.updateSpawnPos; + this.updateOwnerPos = this.updateOwnerPos; + } + Object.defineProperty(Emitter.prototype, "orderedArt", { + /** + * If the emitter is using particle art in order as provided in `particleImages`. + * Effective only when `particleImages` has multiple art options. + * This is particularly useful ensuring that each art shows up once, in case you need to emit a body in an order. + * For example: dragon - [Head, body1, body2, ..., tail] + */ + get: function () { return this._currentImageIndex !== -1; }, + set: function (value) { + this._currentImageIndex = value ? 0 : -1; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Emitter.prototype, "frequency", { + /** + * Time between particle spawns in seconds. If this value is not a number greater than 0, + * it will be set to 1 (particle per second) to prevent infinite loops. + */ + get: function () { return this._frequency; }, + set: function (value) { + //do some error checking to prevent infinite loops + if (typeof value == "number" && value > 0) + this._frequency = value; + else + this._frequency = 1; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Emitter.prototype, "particleConstructor", { + /** + * The constructor used to create new particles. The default is + * the built in Particle class. Setting this will dump any active or + * pooled particles, if the emitter has already been used. + */ + get: function () { return this._particleConstructor; }, + set: function (value) { + if (value != this._particleConstructor) { + this._particleConstructor = value; + //clean up existing particles + this.cleanup(); + //scrap all the particles + for (var particle = this._poolFirst; particle; particle = particle.next) { + particle.destroy(); + } + this._poolFirst = null; + //re-initialize the emitter so that the new constructor can do anything it needs to + if (this._origConfig && this._origArt) + this.init(this._origArt, this._origConfig); + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Emitter.prototype, "parent", { + /** + * The container to add particles to. Settings this will dump any active particles. + */ + get: function () { return this._parent; }, + set: function (value) { + this.cleanup(); + this._parent = value; + }, + enumerable: true, + configurable: true + }); + /** + * Sets up the emitter based on the config settings. + * @param art A texture or array of textures to use for the particles. + * @param config A configuration object containing settings for the emitter. + */ + Emitter.prototype.init = function (art, config) { + if (!art || !config) + return; + //clean up any existing particles + this.cleanup(); + //store the original config and particle images, in case we need to re-initialize + //when the particle constructor is changed + this._origConfig = config; + this._origArt = art; + //set up the array of data, also ensuring that it is an array + art = Array.isArray(art) ? art.slice() : [art]; + //run the art through the particle class's parsing function + var partClass = this._particleConstructor; + this.particleImages = partClass.parseArt ? partClass.parseArt(art) : art; + /////////////////////////// + // Particle Properties // + /////////////////////////// + //set up the alpha + if (config.alpha) { + this.startAlpha = PropertyNode.createList(config.alpha); + } + else + this.startAlpha = new PropertyNode(1, 0); + //set up the speed + if (config.speed) { + this.startSpeed = PropertyNode.createList(config.speed); + this.minimumSpeedMultiplier = ('minimumSpeedMultiplier' in config ? config.minimumSpeedMultiplier : config.speed.minimumSpeedMultiplier) || 1; + } + else { + this.minimumSpeedMultiplier = 1; + this.startSpeed = new PropertyNode(0, 0); + } + //set up acceleration + var acceleration = config.acceleration; + if (acceleration && (acceleration.x || acceleration.y)) { + //make sure we disable speed interpolation + this.startSpeed.next = null; + this.acceleration = new pixi.Point(acceleration.x, acceleration.y); + this.maxSpeed = config.maxSpeed || NaN; + } + else + this.acceleration = new pixi.Point(); + //set up the scale + if (config.scale) { + this.startScale = PropertyNode.createList(config.scale); + this.minimumScaleMultiplier = ('minimumScaleMultiplier' in config ? config.minimumScaleMultiplier : config.scale.minimumScaleMultiplier) || 1; + } + else { + this.startScale = new PropertyNode(1, 0); + this.minimumScaleMultiplier = 1; + } + //set up the color + if (config.color) { + this.startColor = PropertyNode.createList(config.color); + } + else { + this.startColor = new PropertyNode({ r: 0xFF, g: 0xFF, b: 0xFF }, 0); + } + //set up the start rotation + if (config.startRotation) { + this.minStartRotation = config.startRotation.min; + this.maxStartRotation = config.startRotation.max; + } + else + this.minStartRotation = this.maxStartRotation = 0; + if (config.noRotation && + (this.minStartRotation || this.maxStartRotation)) { + this.noRotation = !!config.noRotation; + } + else + this.noRotation = false; + //set up the rotation speed + if (config.rotationSpeed) { + this.minRotationSpeed = config.rotationSpeed.min; + this.maxRotationSpeed = config.rotationSpeed.max; + } + else + this.minRotationSpeed = this.maxRotationSpeed = 0; + this.rotationAcceleration = config.rotationAcceleration || 0; + //set up the lifetime + this.minLifetime = config.lifetime.min; + this.maxLifetime = config.lifetime.max; + //get the blend mode + this.particleBlendMode = exports.ParticleUtils.getBlendMode(config.blendMode); + //use the custom ease if provided + if (config.ease) { + this.customEase = typeof config.ease == "function" ? + config.ease : exports.ParticleUtils.generateEase(config.ease); + } + else + this.customEase = null; + //set up the extra data, running it through the particle class's parseData function. + if (partClass.parseData) + this.extraData = partClass.parseData(config.extraData); + else + this.extraData = config.extraData || null; + ////////////////////////// + // Emitter Properties // + ////////////////////////// + //reset spawn type specific settings + this.spawnRect = this.spawnCircle = null; + this.particlesPerWave = 1; + if (config.particlesPerWave && config.particlesPerWave > 1) + this.particlesPerWave = config.particlesPerWave; + this.particleSpacing = 0; + this.angleStart = 0; + //determine the spawn function to use + this.parseSpawnType(config); + //set the spawning frequency + this.frequency = config.frequency; + this.spawnChance = (typeof config.spawnChance === 'number' && config.spawnChance > 0) ? config.spawnChance : 1; + //set the emitter lifetime + this.emitterLifetime = config.emitterLifetime || -1; + //set the max particles + this.maxParticles = config.maxParticles > 0 ? config.maxParticles : 1000; + //determine if we should add the particle at the back of the list or not + this.addAtBack = !!config.addAtBack; + //reset the emitter position and rotation variables + this.rotation = 0; + this.ownerPos = new pixi.Point(); + this.spawnPos = new pixi.Point(config.pos.x, config.pos.y); + this.initAdditional(art, config); + this._prevEmitterPos = this.spawnPos.clone(); + //previous emitter position is invalid and should not be used for interpolation + this._prevPosIsValid = false; + //start emitting + this._spawnTimer = 0; + this.emit = config.emit === undefined ? true : !!config.emit; + this.autoUpdate = !!config.autoUpdate; + this.orderedArt = !!config.orderedArt; + }; + /** + * Sets up additional parameters to the emitter from config settings. + * Using for parsing additional parameters on classes that extend from Emitter + * @param art A texture or array of textures to use for the particles. + * @param config A configuration object containing settings for the emitter. + */ + Emitter.prototype.initAdditional = function (art, config) { + }; + /** + * Parsing emitter spawn type from config settings. + * Place for override and add new kind of spawn type + * @param config A configuration object containing settings for the emitter. + */ + Emitter.prototype.parseSpawnType = function (config) { + var spawnCircle; + switch (config.spawnType) { + case "rect": + this.spawnType = "rect"; + this._spawnFunc = this._spawnRect; + var spawnRect = config.spawnRect; + this.spawnRect = new pixi.Rectangle(spawnRect.x, spawnRect.y, spawnRect.w, spawnRect.h); + break; + case "circle": + this.spawnType = "circle"; + this._spawnFunc = this._spawnCircle; + spawnCircle = config.spawnCircle; + this.spawnCircle = new pixi.Circle(spawnCircle.x, spawnCircle.y, spawnCircle.r); + break; + case "ring": + this.spawnType = "ring"; + this._spawnFunc = this._spawnRing; + spawnCircle = config.spawnCircle; + this.spawnCircle = new pixi.Circle(spawnCircle.x, spawnCircle.y, spawnCircle.r); + this.spawnCircle.minRadius = spawnCircle.minR; + break; + case "burst": + this.spawnType = "burst"; + this._spawnFunc = this._spawnBurst; + this.particleSpacing = config.particleSpacing; + this.angleStart = config.angleStart ? config.angleStart : 0; + break; + case "point": + this.spawnType = "point"; + this._spawnFunc = this._spawnPoint; + break; + case "polygonalChain": + this.spawnType = "polygonalChain"; + this._spawnFunc = this._spawnPolygonalChain; + this.spawnPolygonalChain = new PolygonalChain(config.spawnPolygon); + break; + default: + this.spawnType = "point"; + this._spawnFunc = this._spawnPoint; + break; + } + }; + /** + * Recycles an individual particle. For internal use only. + * @param particle The particle to recycle. + * @internal + */ + Emitter.prototype.recycle = function (particle) { + if (particle.next) + particle.next.prev = particle.prev; + if (particle.prev) + particle.prev.next = particle.next; + if (particle == this._activeParticlesLast) + this._activeParticlesLast = particle.prev; + if (particle == this._activeParticlesFirst) + this._activeParticlesFirst = particle.next; + //add to pool + particle.prev = null; + particle.next = this._poolFirst; + this._poolFirst = particle; + //remove child from display, or make it invisible if it is in a ParticleContainer + if (particle.parent) + particle.parent.removeChild(particle); + //decrease count + --this.particleCount; + }; + /** + * Sets the rotation of the emitter to a new value. + * @param newRot The new rotation, in degrees. + */ + Emitter.prototype.rotate = function (newRot) { + if (this.rotation == newRot) + return; + //caclulate the difference in rotation for rotating spawnPos + var diff = newRot - this.rotation; + this.rotation = newRot; + //rotate spawnPos + exports.ParticleUtils.rotatePoint(diff, this.spawnPos); + //mark the position as having changed + this._posChanged = true; + }; + /** + * Changes the spawn position of the emitter. + * @param x The new x value of the spawn position for the emitter. + * @param y The new y value of the spawn position for the emitter. + */ + Emitter.prototype.updateSpawnPos = function (x, y) { + this._posChanged = true; + this.spawnPos.x = x; + this.spawnPos.y = y; + }; + /** + * Changes the position of the emitter's owner. You should call this if you are adding + * particles to the world container that your emitter's owner is moving around in. + * @param x The new x value of the emitter's owner. + * @param y The new y value of the emitter's owner. + */ + Emitter.prototype.updateOwnerPos = function (x, y) { + this._posChanged = true; + this.ownerPos.x = x; + this.ownerPos.y = y; + }; + /** + * Prevents emitter position interpolation in the next update. + * This should be used if you made a major position change of your emitter's owner + * that was not normal movement. + */ + Emitter.prototype.resetPositionTracking = function () { + this._prevPosIsValid = false; + }; + Object.defineProperty(Emitter.prototype, "emit", { + /** + * If particles should be emitted during update() calls. Setting this to false + * stops new particles from being created, but allows existing ones to die out. + */ + get: function () { return this._emit; }, + set: function (value) { + this._emit = !!value; + this._emitterLife = this.emitterLifetime; + }, + enumerable: true, + configurable: true + }); + ; + Object.defineProperty(Emitter.prototype, "autoUpdate", { + /** + * If the update function is called automatically from the shared ticker. + * Setting this to false requires calling the update function manually. + */ + get: function () { return this._autoUpdate; }, + set: function (value) { + if (this._autoUpdate && !value) { + ticker.remove(this.update, this); + } + else if (!this._autoUpdate && value) { + ticker.add(this.update, this); + } + this._autoUpdate = !!value; + }, + enumerable: true, + configurable: true + }); + /** + * Starts emitting particles, sets autoUpdate to true, and sets up the Emitter to destroy itself + * when particle emission is complete. + * @param callback Callback for when emission is complete (all particles have died off) + */ + Emitter.prototype.playOnceAndDestroy = function (callback) { + this.autoUpdate = true; + this.emit = true; + this._destroyWhenComplete = true; + this._completeCallback = callback; + }; + /** + * Starts emitting particles and optionally calls a callback when particle emission is complete. + * @param callback Callback for when emission is complete (all particles have died off) + */ + Emitter.prototype.playOnce = function (callback) { + this.emit = true; + this._completeCallback = callback; + }; + /** + * Updates all particles spawned by this emitter and emits new ones. + * @param delta Time elapsed since the previous frame, in __seconds__. + */ + Emitter.prototype.update = function (delta) { + if (this._autoUpdate) { + delta = delta / pixi.settings.TARGET_FPMS / 1000; + } + //if we don't have a parent to add particles to, then don't do anything. + //this also works as a isDestroyed check + if (!this._parent) + return; + //update existing particles + var i, particle, next; + for (particle = this._activeParticlesFirst; particle; particle = next) { + next = particle.next; + particle.update(delta); + } + var prevX, prevY; + //if the previous position is valid, store these for later interpolation + if (this._prevPosIsValid) { + prevX = this._prevEmitterPos.x; + prevY = this._prevEmitterPos.y; + } + //store current position of the emitter as local variables + var curX = this.ownerPos.x + this.spawnPos.x; + var curY = this.ownerPos.y + this.spawnPos.y; + //spawn new particles + if (this._emit) { + //decrease spawn timer + this._spawnTimer -= delta < 0 ? 0 : delta; + //while _spawnTimer < 0, we have particles to spawn + while (this._spawnTimer <= 0) { + //determine if the emitter should stop spawning + if (this._emitterLife > 0) { + this._emitterLife -= this._frequency; + if (this._emitterLife <= 0) { + this._spawnTimer = 0; + this._emitterLife = 0; + this.emit = false; + break; + } + } + //determine if we have hit the particle limit + if (this.particleCount >= this.maxParticles) { + this._spawnTimer += this._frequency; + continue; + } + //determine the particle lifetime + var lifetime = void 0; + if (this.minLifetime == this.maxLifetime) + lifetime = this.minLifetime; + else + lifetime = Math.random() * (this.maxLifetime - this.minLifetime) + this.minLifetime; + //only make the particle if it wouldn't immediately destroy itself + if (-this._spawnTimer < lifetime) { + //If the position has changed and this isn't the first spawn, + //interpolate the spawn position + var emitPosX = void 0, emitPosY = void 0; + if (this._prevPosIsValid && this._posChanged) { + //1 - _spawnTimer / delta, but _spawnTimer is negative + var lerp = 1 + this._spawnTimer / delta; + emitPosX = (curX - prevX) * lerp + prevX; + emitPosY = (curY - prevY) * lerp + prevY; + } + else //otherwise just set to the spawn position + { + emitPosX = curX; + emitPosY = curY; + } + //create enough particles to fill the wave (non-burst types have a wave of 1) + i = 0; + for (var len = Math.min(this.particlesPerWave, this.maxParticles - this.particleCount); i < len; ++i) { + //see if we actually spawn one + if (this.spawnChance < 1 && Math.random() >= this.spawnChance) + continue; + //create particle + var p = void 0; + if (this._poolFirst) { + p = this._poolFirst; + this._poolFirst = this._poolFirst.next; + p.next = null; + } + else { + p = new this.particleConstructor(this); + } + //set a random texture if we have more than one + if (this.particleImages.length > 1) { + // if using ordered art + if (this._currentImageIndex !== -1) { + // get current art index, then increment for the next particle + p.applyArt(this.particleImages[this._currentImageIndex++]); + // loop around if needed + if (this._currentImageIndex < 0 || this._currentImageIndex >= this.particleImages.length) { + this._currentImageIndex = 0; + } + } + // otherwise grab a random one + else { + p.applyArt(this.particleImages[Math.floor(Math.random() * this.particleImages.length)]); + } + } + else { + //if they are actually the same texture, a standard particle + //will quit early from the texture setting in setTexture(). + p.applyArt(this.particleImages[0]); + } + //set up the start and end values + p.alphaList.reset(this.startAlpha); + if (this.minimumSpeedMultiplier != 1) { + p.speedMultiplier = Math.random() * (1 - this.minimumSpeedMultiplier) + this.minimumSpeedMultiplier; + } + p.speedList.reset(this.startSpeed); + p.acceleration.x = this.acceleration.x; + p.acceleration.y = this.acceleration.y; + p.maxSpeed = this.maxSpeed; + if (this.minimumScaleMultiplier != 1) { + p.scaleMultiplier = Math.random() * (1 - this.minimumScaleMultiplier) + this.minimumScaleMultiplier; + } + p.scaleList.reset(this.startScale); + p.colorList.reset(this.startColor); + //randomize the rotation speed + if (this.minRotationSpeed == this.maxRotationSpeed) + p.rotationSpeed = this.minRotationSpeed; + else + p.rotationSpeed = Math.random() * (this.maxRotationSpeed - this.minRotationSpeed) + this.minRotationSpeed; + p.rotationAcceleration = this.rotationAcceleration; + p.noRotation = this.noRotation; + //set up the lifetime + p.maxLife = lifetime; + //set the blend mode + p.blendMode = this.particleBlendMode; + //set the custom ease, if any + p.ease = this.customEase; + //set the extra data, if any + p.extraData = this.extraData; + //set additional properties to particle + this.applyAdditionalProperties(p); + //call the proper function to handle rotation and position of particle + this._spawnFunc(p, emitPosX, emitPosY, i); + //initialize particle + p.init(); + //update the particle by the time passed, so the particles are spread out properly + p.update(-this._spawnTimer); //we want a positive delta, because a negative delta messes things up + //add the particle to the display list + if (!p.parent) { + if (this.addAtBack) + this._parent.addChildAt(p, 0); + else + this._parent.addChild(p); + } + else { + //kind of hacky, but performance friendly + //shuffle children to correct place + var children = this._parent.children; + //avoid using splice if possible + if (children[0] == p) + children.shift(); + else if (children[children.length - 1] == p) + children.pop(); + else { + var index = children.indexOf(p); + children.splice(index, 1); + } + if (this.addAtBack) + children.unshift(p); + else + children.push(p); + } + //add particle to list of active particles + if (this._activeParticlesLast) { + this._activeParticlesLast.next = p; + p.prev = this._activeParticlesLast; + this._activeParticlesLast = p; + } + else { + this._activeParticlesLast = this._activeParticlesFirst = p; + } + ++this.particleCount; + } + } + //increase timer and continue on to any other particles that need to be created + this._spawnTimer += this._frequency; + } + } + //if the position changed before this update, then keep track of that + if (this._posChanged) { + this._prevEmitterPos.x = curX; + this._prevEmitterPos.y = curY; + this._prevPosIsValid = true; + this._posChanged = false; + } + //if we are all done and should destroy ourselves, take care of that + if (!this._emit && !this._activeParticlesFirst) { + if (this._completeCallback) { + var cb = this._completeCallback; + this._completeCallback = null; + cb(); + } + if (this._destroyWhenComplete) { + this.destroy(); + } + } + }; + /** + * Set additional properties to new particle. + * Using on classes that extend from Emitter + * @param p The particle + */ + Emitter.prototype.applyAdditionalProperties = function (p) { + }; + /** + * Positions a particle for a point type emitter. + * @param p The particle to position and rotate. + * @param emitPosX The emitter's x position + * @param emitPosY The emitter's y position + * @param i The particle number in the current wave. Not used for this function. + */ + Emitter.prototype._spawnPoint = function (p, emitPosX, emitPosY) { + //set the initial rotation/direction of the particle based on + //starting particle angle and rotation of emitter + if (this.minStartRotation == this.maxStartRotation) + p.rotation = this.minStartRotation + this.rotation; + else + p.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + this.minStartRotation + this.rotation; + //drop the particle at the emitter's position + p.position.x = emitPosX; + p.position.y = emitPosY; + }; + /** + * Positions a particle for a rectangle type emitter. + * @param p The particle to position and rotate. + * @param emitPosX The emitter's x position + * @param emitPosY The emitter's y position + * @param i The particle number in the current wave. Not used for this function. + */ + Emitter.prototype._spawnRect = function (p, emitPosX, emitPosY) { + //set the initial rotation/direction of the particle based on starting + //particle angle and rotation of emitter + if (this.minStartRotation == this.maxStartRotation) + p.rotation = this.minStartRotation + this.rotation; + else + p.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + this.minStartRotation + this.rotation; + //place the particle at a random point in the rectangle + helperPoint.x = Math.random() * this.spawnRect.width + this.spawnRect.x; + helperPoint.y = Math.random() * this.spawnRect.height + this.spawnRect.y; + if (this.rotation !== 0) + exports.ParticleUtils.rotatePoint(this.rotation, helperPoint); + p.position.x = emitPosX + helperPoint.x; + p.position.y = emitPosY + helperPoint.y; + }; + /** + * Positions a particle for a circle type emitter. + * @param p The particle to position and rotate. + * @param emitPosX The emitter's x position + * @param emitPosY The emitter's y position + * @param i The particle number in the current wave. Not used for this function. + */ + Emitter.prototype._spawnCircle = function (p, emitPosX, emitPosY) { + //set the initial rotation/direction of the particle based on starting + //particle angle and rotation of emitter + if (this.minStartRotation == this.maxStartRotation) + p.rotation = this.minStartRotation + this.rotation; + else + p.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + + this.minStartRotation + this.rotation; + //place the particle at a random radius in the circle + helperPoint.x = Math.random() * this.spawnCircle.radius; + helperPoint.y = 0; + //rotate the point to a random angle in the circle + exports.ParticleUtils.rotatePoint(Math.random() * 360, helperPoint); + //offset by the circle's center + helperPoint.x += this.spawnCircle.x; + helperPoint.y += this.spawnCircle.y; + //rotate the point by the emitter's rotation + if (this.rotation !== 0) + exports.ParticleUtils.rotatePoint(this.rotation, helperPoint); + //set the position, offset by the emitter's position + p.position.x = emitPosX + helperPoint.x; + p.position.y = emitPosY + helperPoint.y; + }; + /** + * Positions a particle for a ring type emitter. + * @param p The particle to position and rotate. + * @param emitPosX The emitter's x position + * @param emitPosY The emitter's y position + * @param i The particle number in the current wave. Not used for this function. + */ + Emitter.prototype._spawnRing = function (p, emitPosX, emitPosY) { + var spawnCircle = this.spawnCircle; + //set the initial rotation/direction of the particle based on starting + //particle angle and rotation of emitter + if (this.minStartRotation == this.maxStartRotation) + p.rotation = this.minStartRotation + this.rotation; + else + p.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + + this.minStartRotation + this.rotation; + //place the particle at a random radius in the ring + if (spawnCircle.minRadius !== spawnCircle.radius) { + helperPoint.x = Math.random() * (spawnCircle.radius - spawnCircle.minRadius) + + spawnCircle.minRadius; + } + else + helperPoint.x = spawnCircle.radius; + helperPoint.y = 0; + //rotate the point to a random angle in the circle + var angle = Math.random() * 360; + p.rotation += angle; + exports.ParticleUtils.rotatePoint(angle, helperPoint); + //offset by the circle's center + helperPoint.x += this.spawnCircle.x; + helperPoint.y += this.spawnCircle.y; + //rotate the point by the emitter's rotation + if (this.rotation !== 0) + exports.ParticleUtils.rotatePoint(this.rotation, helperPoint); + //set the position, offset by the emitter's position + p.position.x = emitPosX + helperPoint.x; + p.position.y = emitPosY + helperPoint.y; + }; + /** + * Positions a particle for polygonal chain. + * @param p The particle to position and rotate. + * @param emitPosX The emitter's x position + * @param emitPosY The emitter's y position + * @param i The particle number in the current wave. Not used for this function. + */ + Emitter.prototype._spawnPolygonalChain = function (p, emitPosX, emitPosY) { + //set the initial rotation/direction of the particle based on starting + //particle angle and rotation of emitter + if (this.minStartRotation == this.maxStartRotation) + p.rotation = this.minStartRotation + this.rotation; + else + p.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + + this.minStartRotation + this.rotation; + // get random point on the polygon chain + this.spawnPolygonalChain.getRandomPoint(helperPoint); + //rotate the point by the emitter's rotation + if (this.rotation !== 0) + exports.ParticleUtils.rotatePoint(this.rotation, helperPoint); + //set the position, offset by the emitter's position + p.position.x = emitPosX + helperPoint.x; + p.position.y = emitPosY + helperPoint.y; + }; + /** + * Positions a particle for a burst type emitter. + * @param p The particle to position and rotate. + * @param emitPosX The emitter's x position + * @param emitPosY The emitter's y position + * @param i The particle number in the current wave. + */ + Emitter.prototype._spawnBurst = function (p, emitPosX, emitPosY, i) { + //set the initial rotation/direction of the particle based on spawn + //angle and rotation of emitter + if (this.particleSpacing === 0) + p.rotation = Math.random() * 360; + else + p.rotation = this.angleStart + (this.particleSpacing * i) + this.rotation; + //drop the particle at the emitter's position + p.position.x = emitPosX; + p.position.y = emitPosY; + }; + /** + * Kills all active particles immediately. + */ + Emitter.prototype.cleanup = function () { + var particle, next; + for (particle = this._activeParticlesFirst; particle; particle = next) { + next = particle.next; + this.recycle(particle); + if (particle.parent) + particle.parent.removeChild(particle); + } + this._activeParticlesFirst = this._activeParticlesLast = null; + this.particleCount = 0; + }; + /** + * Destroys the emitter and all of its particles. + */ + Emitter.prototype.destroy = function () { + //make sure we aren't still listening to any tickers + this.autoUpdate = false; + //puts all active particles in the pool, and removes them from the particle parent + this.cleanup(); + //wipe the pool clean + var next; + for (var particle = this._poolFirst; particle; particle = next) { + //store next value so we don't lose it in our destroy call + next = particle.next; + particle.destroy(); + } + this._poolFirst = this._parent = this.particleImages = this.spawnPos = this.ownerPos = + this.startColor = this.startScale = this.startAlpha = this.startSpeed = + this.customEase = this._completeCallback = null; + }; + return Emitter; }()); - /** - * A helper point for math things. - * @hidden - */ - var helperPoint$1 = new pixi.Point(); - /** - * A hand picked list of Math functions (and a couple properties) that are - * allowable. They should be used without the preceding "Math." - * @hidden - */ - var MATH_FUNCS = [ - "pow", - "sqrt", - "abs", - "floor", - "round", - "ceil", - "E", - "PI", - "sin", - "cos", - "tan", - "asin", - "acos", - "atan", - "atan2", - "log" - ]; - /** - * create an actual regular expression object from the string - * @hidden - */ - var WHITELISTER = new RegExp([ - //Allow the 4 basic operations, parentheses and all numbers/decimals, as well - //as 'x', for the variable usage. - "[01234567890\\.\\*\\-\\+\\/\\(\\)x ,]", - ].concat(MATH_FUNCS).join("|"), "g"); - /** - * Parses a string into a function for path following. - * This involves whitelisting the string for safety, inserting "Math." to math function - * names, and using `new Function()` to generate a function. - * @hidden - * @param pathString The string to parse. - * @return The path function - takes x, outputs y. - */ - var parsePath = function (pathString) { - var matches = pathString.match(WHITELISTER); - for (var i = matches.length - 1; i >= 0; --i) { - if (MATH_FUNCS.indexOf(matches[i]) >= 0) - matches[i] = "Math." + matches[i]; - } - pathString = matches.join(""); - return new Function("x", "return " + pathString + ";"); - }; - /** - * An particle that follows a path defined by an algebraic expression, e.g. "sin(x)" or - * "5x + 3". - * To use this class, the particle config must have a "path" string in the - * "extraData" parameter. This string should have "x" in it to represent movement (from the - * speed settings of the particle). It may have numbers, parentheses, the four basic - * operations, and the following Math functions or properties (without the preceding "Math."): - * "pow", "sqrt", "abs", "floor", "round", "ceil", "E", "PI", "sin", "cos", "tan", "asin", - * "acos", "atan", "atan2", "log". - * The overall movement of the particle and the expression value become x and y positions for - * the particle, respectively. The final position is rotated by the spawn rotation/angle of - * the particle. - * - * Some example paths: - * - * "sin(x/10) * 20" // A sine wave path. - * "cos(x/100) * 30" // Particles curve counterclockwise (for medium speed/low lifetime particles) - * "pow(x/10, 2) / 2" // Particles curve clockwise (remember, +y is down). - */ - var PathParticle = /** @class */ (function (_super) { - __extends(PathParticle, _super); - /** - * @param {PIXI.particles.Emitter} emitter The emitter that controls this PathParticle. - */ - function PathParticle(emitter) { - var _this = _super.call(this, emitter) || this; - _this.path = null; - _this.initialRotation = 0; - _this.initialPosition = new pixi.Point(); - _this.movement = 0; - return _this; - } - /** - * Initializes the particle for use, based on the properties that have to - * have been set already on the particle. - */ - PathParticle.prototype.init = function () { - //get initial rotation before it is converted to radians - this.initialRotation = this.rotation; - //standard init - this.Particle_init(); - //set the path for the particle - this.path = this.extraData.path; - //cancel the normal movement behavior - this._doNormalMovement = !this.path; - //reset movement - this.movement = 0; - //grab position - this.initialPosition.x = this.position.x; - this.initialPosition.y = this.position.y; - }; - /** - * Updates the particle. - * @param delta Time elapsed since the previous frame, in __seconds__. - */ - PathParticle.prototype.update = function (delta) { - var lerp = this.Particle_update(delta); - //if the particle died during the update, then don't bother - if (lerp >= 0 && this.path) { - //increase linear movement based on speed - var speed = this.speedList.interpolate(lerp) * this.speedMultiplier; - this.movement += speed * delta; - //set up the helper point for rotation - helperPoint$1.x = this.movement; - helperPoint$1.y = this.path(this.movement); - exports.ParticleUtils.rotatePoint(this.initialRotation, helperPoint$1); - this.position.x = this.initialPosition.x + helperPoint$1.x; - this.position.y = this.initialPosition.y + helperPoint$1.y; - } - return lerp; - }; - /** - * Destroys the particle, removing references and preventing future use. - */ - PathParticle.prototype.destroy = function () { - this.Particle_destroy(); - this.path = this.initialPosition = null; - }; - /** - * Checks over the art that was passed to the Emitter's init() function, to do any special - * modifications to prepare it ahead of time. This just runs Particle.parseArt(). - * @param art The array of art data. For Particle, it should be an array of - * Textures. Any strings in the array will be converted to - * Textures via Texture.fromImage(). - * @return The art, after any needed modifications. - */ - PathParticle.parseArt = function (art) { - return Particle.parseArt(art); - }; - /** - * Parses extra emitter data to ensure it is set up for this particle class. - * PathParticle checks for the existence of path data, and parses the path data for use - * by particle instances. - * @param extraData The extra data from the particle config. - * @return The parsed extra data. - */ - PathParticle.parseData = function (extraData) { - var output = {}; - if (extraData && extraData.path) { - try { - output.path = parsePath(extraData.path); - } - catch (e) { - if (exports.ParticleUtils.verbose) - console.error("PathParticle: error in parsing path expression"); - output.path = null; - } - } - else { - if (exports.ParticleUtils.verbose) - console.error("PathParticle requires a path string in extraData!"); - output.path = null; - } - return output; - }; - return PathParticle; + /** + * A helper point for math things. + * @hidden + */ + var helperPoint$1 = new pixi.Point(); + /** + * A hand picked list of Math functions (and a couple properties) that are + * allowable. They should be used without the preceding "Math." + * @hidden + */ + var MATH_FUNCS = [ + "pow", + "sqrt", + "abs", + "floor", + "round", + "ceil", + "E", + "PI", + "sin", + "cos", + "tan", + "asin", + "acos", + "atan", + "atan2", + "log" + ]; + /** + * create an actual regular expression object from the string + * @hidden + */ + var WHITELISTER = new RegExp([ + //Allow the 4 basic operations, parentheses and all numbers/decimals, as well + //as 'x', for the variable usage. + "[01234567890\\.\\*\\-\\+\\/\\(\\)x ,]", + ].concat(MATH_FUNCS).join("|"), "g"); + /** + * Parses a string into a function for path following. + * This involves whitelisting the string for safety, inserting "Math." to math function + * names, and using `new Function()` to generate a function. + * @hidden + * @param pathString The string to parse. + * @return The path function - takes x, outputs y. + */ + var parsePath = function (pathString) { + var matches = pathString.match(WHITELISTER); + for (var i = matches.length - 1; i >= 0; --i) { + if (MATH_FUNCS.indexOf(matches[i]) >= 0) + matches[i] = "Math." + matches[i]; + } + pathString = matches.join(""); + return new Function("x", "return " + pathString + ";"); + }; + /** + * An particle that follows a path defined by an algebraic expression, e.g. "sin(x)" or + * "5x + 3". + * To use this class, the particle config must have a "path" string in the + * "extraData" parameter. This string should have "x" in it to represent movement (from the + * speed settings of the particle). It may have numbers, parentheses, the four basic + * operations, and the following Math functions or properties (without the preceding "Math."): + * "pow", "sqrt", "abs", "floor", "round", "ceil", "E", "PI", "sin", "cos", "tan", "asin", + * "acos", "atan", "atan2", "log". + * The overall movement of the particle and the expression value become x and y positions for + * the particle, respectively. The final position is rotated by the spawn rotation/angle of + * the particle. + * + * Some example paths: + * + * "sin(x/10) * 20" // A sine wave path. + * "cos(x/100) * 30" // Particles curve counterclockwise (for medium speed/low lifetime particles) + * "pow(x/10, 2) / 2" // Particles curve clockwise (remember, +y is down). + */ + var PathParticle = /** @class */ (function (_super) { + __extends(PathParticle, _super); + /** + * @param {PIXI.particles.Emitter} emitter The emitter that controls this PathParticle. + */ + function PathParticle(emitter) { + var _this = _super.call(this, emitter) || this; + _this.path = null; + _this.initialRotation = 0; + _this.initialPosition = new pixi.Point(); + _this.movement = 0; + return _this; + } + /** + * Initializes the particle for use, based on the properties that have to + * have been set already on the particle. + */ + PathParticle.prototype.init = function () { + //get initial rotation before it is converted to radians + this.initialRotation = this.rotation; + //standard init + this.Particle_init(); + //set the path for the particle + this.path = this.extraData.path; + //cancel the normal movement behavior + this._doNormalMovement = !this.path; + //reset movement + this.movement = 0; + //grab position + this.initialPosition.x = this.position.x; + this.initialPosition.y = this.position.y; + }; + /** + * Updates the particle. + * @param delta Time elapsed since the previous frame, in __seconds__. + */ + PathParticle.prototype.update = function (delta) { + var lerp = this.Particle_update(delta); + //if the particle died during the update, then don't bother + if (lerp >= 0 && this.path) { + //increase linear movement based on speed + var speed = this.speedList.interpolate(lerp) * this.speedMultiplier; + this.movement += speed * delta; + //set up the helper point for rotation + helperPoint$1.x = this.movement; + helperPoint$1.y = this.path(this.movement); + exports.ParticleUtils.rotatePoint(this.initialRotation, helperPoint$1); + this.position.x = this.initialPosition.x + helperPoint$1.x; + this.position.y = this.initialPosition.y + helperPoint$1.y; + } + return lerp; + }; + /** + * Destroys the particle, removing references and preventing future use. + */ + PathParticle.prototype.destroy = function () { + this.Particle_destroy(); + this.path = this.initialPosition = null; + }; + /** + * Checks over the art that was passed to the Emitter's init() function, to do any special + * modifications to prepare it ahead of time. This just runs Particle.parseArt(). + * @param art The array of art data. For Particle, it should be an array of + * Textures. Any strings in the array will be converted to + * Textures via Texture.fromImage(). + * @return The art, after any needed modifications. + */ + PathParticle.parseArt = function (art) { + return Particle.parseArt(art); + }; + /** + * Parses extra emitter data to ensure it is set up for this particle class. + * PathParticle checks for the existence of path data, and parses the path data for use + * by particle instances. + * @param extraData The extra data from the particle config. + * @return The parsed extra data. + */ + PathParticle.parseData = function (extraData) { + var output = {}; + if (extraData && extraData.path) { + try { + output.path = parsePath(extraData.path); + } + catch (e) { + if (exports.ParticleUtils.verbose) + console.error("PathParticle: error in parsing path expression"); + output.path = null; + } + } + else { + if (exports.ParticleUtils.verbose) + console.error("PathParticle requires a path string in extraData!"); + output.path = null; + } + return output; + }; + return PathParticle; }(Particle)); - /** - * An individual particle image with an animation. Art data passed to the emitter must be - * formatted in a particular way for AnimatedParticle to be able to handle it: - * - * ```typescript - * { - * //framerate is required. It is the animation speed of the particle in frames per - * //second. - * //A value of "matchLife" causes the animation to match the lifetime of an individual - * //particle, instead of at a constant framerate. This causes the animation to play - * //through one time, completing when the particle expires. - * framerate: 6, - * //loop is optional, and defaults to false. - * loop: true, - * //textures is required, and can be an array of any (non-zero) length. - * textures: [ - * //each entry represents a single texture that should be used for one or more - * //frames. Any strings will be converted to Textures with Texture.from(). - * //Instances of PIXI.Texture will be used directly. - * "animFrame1.png", - * //entries can be an object with a 'count' property, telling AnimatedParticle to - * //use that texture for 'count' frames sequentially. - * { - * texture: "animFrame2.png", - * count: 3 - * }, - * "animFrame3.png" - * ] - * } - * ``` - */ - var AnimatedParticle = /** @class */ (function (_super) { - __extends(AnimatedParticle, _super); - /** - * @param emitter The emitter that controls this AnimatedParticle. - */ - function AnimatedParticle(emitter) { - var _this = _super.call(this, emitter) || this; - _this.textures = null; - _this.duration = 0; - _this.framerate = 0; - _this.elapsed = 0; - _this.loop = false; - return _this; - } - /** - * Initializes the particle for use, based on the properties that have to - * have been set already on the particle. - */ - AnimatedParticle.prototype.init = function () { - this.Particle_init(); - this.elapsed = 0; - //if the animation needs to match the particle's life, then cacluate variables - if (this.framerate < 0) { - this.duration = this.maxLife; - this.framerate = this.textures.length / this.duration; - } - }; - /** - * Sets the textures for the particle. - * @param art An array of PIXI.Texture objects for this animated particle. - */ - AnimatedParticle.prototype.applyArt = function (art) { - this.textures = art.textures; - this.framerate = art.framerate; - this.duration = art.duration; - this.loop = art.loop; - }; - /** - * Updates the particle. - * @param delta Time elapsed since the previous frame, in __seconds__. - */ - AnimatedParticle.prototype.update = function (delta) { - var lerp = this.Particle_update(delta); - //only animate the particle if it is still alive - if (lerp >= 0) { - this.elapsed += delta; - if (this.elapsed > this.duration) { - //loop elapsed back around - if (this.loop) - this.elapsed = this.elapsed % this.duration; - //subtract a small amount to prevent attempting to go past the end of the animation - else - this.elapsed = this.duration - 0.000001; - } - // add a very small number to the frame and then floor it to avoid - // the frame being one short due to floating point errors. - var frame = (this.elapsed * this.framerate + 0.0000001) | 0; - this.texture = this.textures[frame] || pixi.Texture.EMPTY; - } - return lerp; - }; - /** - * Destroys the particle, removing references and preventing future use. - */ - AnimatedParticle.prototype.destroy = function () { - this.Particle_destroy(); - this.textures = null; - }; - /** - * Checks over the art that was passed to the Emitter's init() function, to do any special - * modifications to prepare it ahead of time. - * @param art The array of art data, properly formatted for AnimatedParticle. - * @return The art, after any needed modifications. - */ - AnimatedParticle.parseArt = function (art) { - var data, output, textures, tex, outTextures; - var outArr = []; - for (var i = 0; i < art.length; ++i) { - data = art[i]; - outArr[i] = output = {}; - output.textures = outTextures = []; - textures = data.textures; - for (var j = 0; j < textures.length; ++j) { - tex = textures[j]; - if (typeof tex == "string") - outTextures.push(GetTextureFromString(tex)); - else if (tex instanceof pixi.Texture) - outTextures.push(tex); - //assume an object with extra data determining duplicate frame data - else { - var dupe = tex.count || 1; - if (typeof tex.texture == "string") - tex = GetTextureFromString(tex.texture); - else // if(tex.texture instanceof Texture) - tex = tex.texture; - for (; dupe > 0; --dupe) { - outTextures.push(tex); - } - } - } - //use these values to signify that the animation should match the particle life time. - if (data.framerate == "matchLife") { - //-1 means that it should be calculated - output.framerate = -1; - output.duration = 0; - output.loop = false; - } - else { - //determine if the animation should loop - output.loop = !!data.loop; - //get the framerate, default to 60 - output.framerate = data.framerate > 0 ? data.framerate : 60; - //determine the duration - output.duration = outTextures.length / output.framerate; - } - } - return outArr; - }; - return AnimatedParticle; + /** + * An individual particle image with an animation. Art data passed to the emitter must be + * formatted in a particular way for AnimatedParticle to be able to handle it: + * + * ```typescript + * { + * //framerate is required. It is the animation speed of the particle in frames per + * //second. + * //A value of "matchLife" causes the animation to match the lifetime of an individual + * //particle, instead of at a constant framerate. This causes the animation to play + * //through one time, completing when the particle expires. + * framerate: 6, + * //loop is optional, and defaults to false. + * loop: true, + * //textures is required, and can be an array of any (non-zero) length. + * textures: [ + * //each entry represents a single texture that should be used for one or more + * //frames. Any strings will be converted to Textures with Texture.from(). + * //Instances of PIXI.Texture will be used directly. + * "animFrame1.png", + * //entries can be an object with a 'count' property, telling AnimatedParticle to + * //use that texture for 'count' frames sequentially. + * { + * texture: "animFrame2.png", + * count: 3 + * }, + * "animFrame3.png" + * ] + * } + * ``` + */ + var AnimatedParticle = /** @class */ (function (_super) { + __extends(AnimatedParticle, _super); + /** + * @param emitter The emitter that controls this AnimatedParticle. + */ + function AnimatedParticle(emitter) { + var _this = _super.call(this, emitter) || this; + _this.textures = null; + _this.duration = 0; + _this.framerate = 0; + _this.elapsed = 0; + _this.loop = false; + return _this; + } + /** + * Initializes the particle for use, based on the properties that have to + * have been set already on the particle. + */ + AnimatedParticle.prototype.init = function () { + this.Particle_init(); + this.elapsed = 0; + //if the animation needs to match the particle's life, then cacluate variables + if (this.framerate < 0) { + this.duration = this.maxLife; + this.framerate = this.textures.length / this.duration; + } + }; + /** + * Sets the textures for the particle. + * @param art An array of PIXI.Texture objects for this animated particle. + */ + AnimatedParticle.prototype.applyArt = function (art) { + this.textures = art.textures; + this.framerate = art.framerate; + this.duration = art.duration; + this.loop = art.loop; + }; + /** + * Updates the particle. + * @param delta Time elapsed since the previous frame, in __seconds__. + */ + AnimatedParticle.prototype.update = function (delta) { + var lerp = this.Particle_update(delta); + //only animate the particle if it is still alive + if (lerp >= 0) { + this.elapsed += delta; + if (this.elapsed > this.duration) { + //loop elapsed back around + if (this.loop) + this.elapsed = this.elapsed % this.duration; + //subtract a small amount to prevent attempting to go past the end of the animation + else + this.elapsed = this.duration - 0.000001; + } + // add a very small number to the frame and then floor it to avoid + // the frame being one short due to floating point errors. + var frame = (this.elapsed * this.framerate + 0.0000001) | 0; + this.texture = this.textures[frame] || pixi.Texture.EMPTY; + } + return lerp; + }; + /** + * Destroys the particle, removing references and preventing future use. + */ + AnimatedParticle.prototype.destroy = function () { + this.Particle_destroy(); + this.textures = null; + }; + /** + * Checks over the art that was passed to the Emitter's init() function, to do any special + * modifications to prepare it ahead of time. + * @param art The array of art data, properly formatted for AnimatedParticle. + * @return The art, after any needed modifications. + */ + AnimatedParticle.parseArt = function (art) { + var data, output, textures, tex, outTextures; + var outArr = []; + for (var i = 0; i < art.length; ++i) { + data = art[i]; + outArr[i] = output = {}; + output.textures = outTextures = []; + textures = data.textures; + for (var j = 0; j < textures.length; ++j) { + tex = textures[j]; + if (typeof tex == "string") + outTextures.push(GetTextureFromString(tex)); + else if (tex instanceof pixi.Texture) + outTextures.push(tex); + //assume an object with extra data determining duplicate frame data + else { + var dupe = tex.count || 1; + if (typeof tex.texture == "string") + tex = GetTextureFromString(tex.texture); + else // if(tex.texture instanceof Texture) + tex = tex.texture; + for (; dupe > 0; --dupe) { + outTextures.push(tex); + } + } + } + //use these values to signify that the animation should match the particle life time. + if (data.framerate == "matchLife") { + //-1 means that it should be calculated + output.framerate = -1; + output.duration = 0; + output.loop = false; + } + else { + //determine if the animation should loop + output.loop = !!data.loop; + //get the framerate, default to 60 + output.framerate = data.framerate > 0 ? data.framerate : 60; + //determine the duration + output.duration = outTextures.length / output.framerate; + } + } + return outArr; + }; + return AnimatedParticle; }(Particle)); exports.GetTextureFromString = GetTextureFromString; @@ -52193,3654 +52195,3756 @@ this.PIXI = this.PIXI || {}; }(this.PIXI.particles = this.PIXI.particles || {}, PIXI)); -var pixi_projection; -(function (pixi_projection) { - var utils; - (function (utils) { - function getIntersectionFactor(p1, p2, p3, p4, out) { - var A1 = p2.x - p1.x, B1 = p3.x - p4.x, C1 = p3.x - p1.x; - var A2 = p2.y - p1.y, B2 = p3.y - p4.y, C2 = p3.y - p1.y; - var D = A1 * B2 - A2 * B1; - if (Math.abs(D) < 1e-7) { - out.x = A1; - out.y = A2; - return 0; - } - var T = C1 * B2 - C2 * B1; - var U = A1 * C2 - A2 * C1; - var t = T / D, u = U / D; - if (u < (1e-6) || u - 1 > -1e-6) { - return -1; - } - out.x = p1.x + t * (p2.x - p1.x); - out.y = p1.y + t * (p2.y - p1.y); - return 1; - } - utils.getIntersectionFactor = getIntersectionFactor; - function getPositionFromQuad(p, anchor, out) { - out = out || new PIXI.Point(); - var a1 = 1.0 - anchor.x, a2 = 1.0 - a1; - var b1 = 1.0 - anchor.y, b2 = 1.0 - b1; - out.x = (p[0].x * a1 + p[1].x * a2) * b1 + (p[3].x * a1 + p[2].x * a2) * b2; - out.y = (p[0].y * a1 + p[1].y * a2) * b1 + (p[3].y * a1 + p[2].y * a2) * b2; - return out; - } - utils.getPositionFromQuad = getPositionFromQuad; - })(utils = pixi_projection.utils || (pixi_projection.utils = {})); -})(pixi_projection || (pixi_projection = {})); -PIXI.projection = pixi_projection; -var pixi_projection; -(function (pixi_projection) { - var AbstractProjection = (function () { - function AbstractProjection(legacy, enable) { - if (enable === void 0) { enable = true; } - this._enabled = false; - this.legacy = legacy; - if (enable) { - this.enabled = true; - } - this.legacy.proj = this; - } - Object.defineProperty(AbstractProjection.prototype, "enabled", { - get: function () { - return this._enabled; - }, - set: function (value) { - this._enabled = value; - }, - enumerable: true, - configurable: true - }); - AbstractProjection.prototype.clear = function () { - }; - return AbstractProjection; - }()); - pixi_projection.AbstractProjection = AbstractProjection; - var TRANSFORM_STEP; - (function (TRANSFORM_STEP) { - TRANSFORM_STEP[TRANSFORM_STEP["NONE"] = 0] = "NONE"; - TRANSFORM_STEP[TRANSFORM_STEP["BEFORE_PROJ"] = 4] = "BEFORE_PROJ"; - TRANSFORM_STEP[TRANSFORM_STEP["PROJ"] = 5] = "PROJ"; - TRANSFORM_STEP[TRANSFORM_STEP["ALL"] = 9] = "ALL"; - })(TRANSFORM_STEP = pixi_projection.TRANSFORM_STEP || (pixi_projection.TRANSFORM_STEP = {})); -})(pixi_projection || (pixi_projection = {})); -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var pixi_projection; -(function (pixi_projection) { - function transformHack(parentTransform) { - var proj = this.proj; - var ta = this; - var pwid = parentTransform._worldID; - var lt = ta.localTransform; - var scaleAfterAffine = proj.scaleAfterAffine && proj.affine >= 2; - if (ta._localID !== ta._currentLocalID) { - if (scaleAfterAffine) { - lt.a = ta._cx; - lt.b = ta._sx; - lt.c = ta._cy; - lt.d = ta._sy; - lt.tx = ta.position._x; - lt.ty = ta.position._y; - } - else { - lt.a = ta._cx * ta.scale._x; - lt.b = ta._sx * ta.scale._x; - lt.c = ta._cy * ta.scale._y; - lt.d = ta._sy * ta.scale._y; - lt.tx = ta.position._x - ((ta.pivot._x * lt.a) + (ta.pivot._y * lt.c)); - lt.ty = ta.position._y - ((ta.pivot._x * lt.b) + (ta.pivot._y * lt.d)); - } - ta._currentLocalID = ta._localID; - proj._currentProjID = -1; - } - var _matrixID = proj._projID; - if (proj._currentProjID !== _matrixID) { - proj._currentProjID = _matrixID; - proj.updateLocalTransform(lt); - ta._parentID = -1; - } - if (ta._parentID !== pwid) { - var pp = parentTransform.proj; - if (pp && !pp._affine) { - proj.world.setToMult(pp.world, proj.local); - } - else { - proj.world.setToMultLegacy(parentTransform.worldTransform, proj.local); - } - var wa = ta.worldTransform; - proj.world.copyTo(wa, proj._affine, proj.affinePreserveOrientation); - if (scaleAfterAffine) { - wa.a *= ta.scale._x; - wa.b *= ta.scale._x; - wa.c *= ta.scale._y; - wa.d *= ta.scale._y; - wa.tx -= ((ta.pivot._x * wa.a) + (ta.pivot._y * wa.c)); - wa.ty -= ((ta.pivot._x * wa.b) + (ta.pivot._y * wa.d)); - } - ta._parentID = pwid; - ta._worldID++; - } - } - var LinearProjection = (function (_super) { - __extends(LinearProjection, _super); - function LinearProjection() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this._projID = 0; - _this._currentProjID = -1; - _this._affine = pixi_projection.AFFINE.NONE; - _this.affinePreserveOrientation = false; - _this.scaleAfterAffine = true; - return _this; - } - LinearProjection.prototype.updateLocalTransform = function (lt) { - }; - Object.defineProperty(LinearProjection.prototype, "affine", { - get: function () { - return this._affine; - }, - set: function (value) { - if (this._affine == value) - return; - this._affine = value; - this._currentProjID = -1; - this.legacy._currentLocalID = -1; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(LinearProjection.prototype, "enabled", { - set: function (value) { - if (value === this._enabled) { - return; - } - this._enabled = value; - if (value) { - this.legacy.updateTransform = transformHack; - this.legacy._parentID = -1; - } - else { - this.legacy.updateTransform = PIXI.Transform.prototype.updateTransform; - this.legacy._parentID = -1; - } - }, - enumerable: true, - configurable: true - }); - LinearProjection.prototype.clear = function () { - this._currentProjID = -1; - this._projID = 0; - }; - return LinearProjection; - }(pixi_projection.AbstractProjection)); - pixi_projection.LinearProjection = LinearProjection; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var TYPES = PIXI.TYPES; - var premultiplyTint = PIXI.utils.premultiplyTint; - var shaderVert = "precision highp float;\nattribute vec3 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\nattribute float aTextureId;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nvoid main(void){\n gl_Position.xyw = projectionMatrix * aVertexPosition;\n gl_Position.z = 0.0;\n \n vTextureCoord = aTextureCoord;\n vTextureId = aTextureId;\n vColor = aColor;\n}\n"; - var shaderFrag = "\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying float vTextureId;\nuniform sampler2D uSamplers[%count%];\n\nvoid main(void){\nvec4 color;\n%forloop%\ngl_FragColor = color * vColor;\n}"; - var Batch3dGeometry = (function (_super) { - __extends(Batch3dGeometry, _super); - function Batch3dGeometry(_static) { - if (_static === void 0) { _static = false; } - var _this = _super.call(this) || this; - _this._buffer = new PIXI.Buffer(null, _static, false); - _this._indexBuffer = new PIXI.Buffer(null, _static, true); - _this.addAttribute('aVertexPosition', _this._buffer, 3, false, TYPES.FLOAT) - .addAttribute('aTextureCoord', _this._buffer, 2, false, TYPES.FLOAT) - .addAttribute('aColor', _this._buffer, 4, true, TYPES.UNSIGNED_BYTE) - .addAttribute('aTextureId', _this._buffer, 1, true, TYPES.FLOAT) - .addIndex(_this._indexBuffer); - return _this; - } - return Batch3dGeometry; - }(PIXI.Geometry)); - pixi_projection.Batch3dGeometry = Batch3dGeometry; - var Batch2dPluginFactory = (function () { - function Batch2dPluginFactory() { - } - Batch2dPluginFactory.create = function (options) { - var _a = Object.assign({ - vertex: shaderVert, - fragment: shaderFrag, - geometryClass: Batch3dGeometry, - vertexSize: 7, - }, options), vertex = _a.vertex, fragment = _a.fragment, vertexSize = _a.vertexSize, geometryClass = _a.geometryClass; - return (function (_super) { - __extends(BatchPlugin, _super); - function BatchPlugin(renderer) { - var _this = _super.call(this, renderer) || this; - _this.shaderGenerator = new PIXI.BatchShaderGenerator(vertex, fragment); - _this.geometryClass = geometryClass; - _this.vertexSize = vertexSize; - return _this; - } - BatchPlugin.prototype.packInterleavedGeometry = function (element, attributeBuffer, indexBuffer, aIndex, iIndex) { - var uint32View = attributeBuffer.uint32View, float32View = attributeBuffer.float32View; - var p = aIndex / this.vertexSize; - var uvs = element.uvs; - var indicies = element.indices; - var vertexData = element.vertexData; - var vertexData2d = element.vertexData2d; - var textureId = element._texture.baseTexture._id; - var alpha = Math.min(element.worldAlpha, 1.0); - var argb = alpha < 1.0 && element._texture.baseTexture.premultiplyAlpha ? premultiplyTint(element._tintRGB, alpha) - : element._tintRGB + (alpha * 255 << 24); - if (vertexData2d) { - var j = 0; - for (var i = 0; i < vertexData2d.length; i += 3, j += 2) { - float32View[aIndex++] = vertexData2d[i]; - float32View[aIndex++] = vertexData2d[i + 1]; - float32View[aIndex++] = vertexData2d[i + 2]; - float32View[aIndex++] = uvs[j]; - float32View[aIndex++] = uvs[j + 1]; - uint32View[aIndex++] = argb; - float32View[aIndex++] = textureId; - } - } - else { - for (var i = 0; i < vertexData.length; i += 2) { - float32View[aIndex++] = vertexData[i]; - float32View[aIndex++] = vertexData[i + 1]; - float32View[aIndex++] = 1.0; - float32View[aIndex++] = uvs[i]; - float32View[aIndex++] = uvs[i + 1]; - uint32View[aIndex++] = argb; - float32View[aIndex++] = textureId; - } - } - for (var i = 0; i < indicies.length; i++) { - indexBuffer[iIndex++] = p + indicies[i]; - } - }; - return BatchPlugin; - }(PIXI.AbstractBatchRenderer)); - }; - return Batch2dPluginFactory; - }()); - pixi_projection.Batch2dPluginFactory = Batch2dPluginFactory; - PIXI.Renderer.registerPlugin('batch2d', Batch2dPluginFactory.create({})); -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var UniformBatchRenderer = (function (_super) { - __extends(UniformBatchRenderer, _super); - function UniformBatchRenderer() { - return _super !== null && _super.apply(this, arguments) || this; - } - UniformBatchRenderer.prototype.addToBatch = function (sprite) { - }; - return UniformBatchRenderer; - }(PIXI.AbstractBatchRenderer)); - pixi_projection.UniformBatchRenderer = UniformBatchRenderer; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var p = [new PIXI.Point(), new PIXI.Point(), new PIXI.Point(), new PIXI.Point()]; - var a = [0, 0, 0, 0]; - var Surface = (function () { - function Surface() { - this.surfaceID = "default"; - this._updateID = 0; - this.vertexSrc = ""; - this.fragmentSrc = ""; - } - Surface.prototype.fillUniforms = function (uniforms) { - }; - Surface.prototype.clear = function () { - }; - Surface.prototype.boundsQuad = function (v, out, after) { - var minX = out[0], minY = out[1]; - var maxX = out[0], maxY = out[1]; - for (var i = 2; i < 8; i += 2) { - if (minX > out[i]) - minX = out[i]; - if (maxX < out[i]) - maxX = out[i]; - if (minY > out[i + 1]) - minY = out[i + 1]; - if (maxY < out[i + 1]) - maxY = out[i + 1]; - } - p[0].set(minX, minY); - this.apply(p[0], p[0]); - p[1].set(maxX, minY); - this.apply(p[1], p[1]); - p[2].set(maxX, maxY); - this.apply(p[2], p[2]); - p[3].set(minX, maxY); - this.apply(p[3], p[3]); - if (after) { - after.apply(p[0], p[0]); - after.apply(p[1], p[1]); - after.apply(p[2], p[2]); - after.apply(p[3], p[3]); - out[0] = p[0].x; - out[1] = p[0].y; - out[2] = p[1].x; - out[3] = p[1].y; - out[4] = p[2].x; - out[5] = p[2].y; - out[6] = p[3].x; - out[7] = p[3].y; - } - else { - for (var i = 1; i <= 3; i++) { - if (p[i].y < p[0].y || p[i].y == p[0].y && p[i].x < p[0].x) { - var t = p[0]; - p[0] = p[i]; - p[i] = t; - } - } - for (var i = 1; i <= 3; i++) { - a[i] = Math.atan2(p[i].y - p[0].y, p[i].x - p[0].x); - } - for (var i = 1; i <= 3; i++) { - for (var j = i + 1; j <= 3; j++) { - if (a[i] > a[j]) { - var t = p[i]; - p[i] = p[j]; - p[j] = t; - var t2 = a[i]; - a[i] = a[j]; - a[j] = t2; - } - } - } - out[0] = p[0].x; - out[1] = p[0].y; - out[2] = p[1].x; - out[3] = p[1].y; - out[4] = p[2].x; - out[5] = p[2].y; - out[6] = p[3].x; - out[7] = p[3].y; - if ((p[3].x - p[2].x) * (p[1].y - p[2].y) - (p[1].x - p[2].x) * (p[3].y - p[2].y) < 0) { - out[4] = p[3].x; - out[5] = p[3].y; - return; - } - } - }; - return Surface; - }()); - pixi_projection.Surface = Surface; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var tempMat = new PIXI.Matrix(); - var tempRect = new PIXI.Rectangle(); - var tempPoint = new PIXI.Point(); - var BilinearSurface = (function (_super) { - __extends(BilinearSurface, _super); - function BilinearSurface() { - var _this = _super.call(this) || this; - _this.distortion = new PIXI.Point(); - return _this; - } - BilinearSurface.prototype.clear = function () { - this.distortion.set(0, 0); - }; - BilinearSurface.prototype.apply = function (pos, newPos) { - newPos = newPos || new PIXI.Point(); - var d = this.distortion; - var m = pos.x * pos.y; - newPos.x = pos.x + d.x * m; - newPos.y = pos.y + d.y * m; - return newPos; - }; - BilinearSurface.prototype.applyInverse = function (pos, newPos) { - newPos = newPos || new PIXI.Point(); - var vx = pos.x, vy = pos.y; - var dx = this.distortion.x, dy = this.distortion.y; - if (dx == 0.0) { - newPos.x = vx; - newPos.y = vy / (1.0 + dy * vx); - } - else if (dy == 0.0) { - newPos.y = vy; - newPos.x = vx / (1.0 + dx * vy); - } - else { - var b = (vy * dx - vx * dy + 1.0) * 0.5 / dy; - var d = b * b + vx / dy; - if (d <= 0.00001) { - newPos.set(NaN, NaN); - return; - } - if (dy > 0.0) { - newPos.x = -b + Math.sqrt(d); - } - else { - newPos.x = -b - Math.sqrt(d); - } - newPos.y = (vx / newPos.x - 1.0) / dx; - } - return newPos; - }; - BilinearSurface.prototype.mapSprite = function (sprite, quad, outTransform) { - var tex = sprite.texture; - tempRect.x = -sprite.anchor.x * tex.orig.width; - tempRect.y = -sprite.anchor.y * tex.orig.height; - tempRect.width = tex.orig.width; - tempRect.height = tex.orig.height; - return this.mapQuad(tempRect, quad, outTransform || sprite.transform); - }; - BilinearSurface.prototype.mapQuad = function (rect, quad, outTransform) { - var ax = -rect.x / rect.width; - var ay = -rect.y / rect.height; - var ax2 = (1.0 - rect.x) / rect.width; - var ay2 = (1.0 - rect.y) / rect.height; - var up1x = (quad[0].x * (1.0 - ax) + quad[1].x * ax); - var up1y = (quad[0].y * (1.0 - ax) + quad[1].y * ax); - var up2x = (quad[0].x * (1.0 - ax2) + quad[1].x * ax2); - var up2y = (quad[0].y * (1.0 - ax2) + quad[1].y * ax2); - var down1x = (quad[3].x * (1.0 - ax) + quad[2].x * ax); - var down1y = (quad[3].y * (1.0 - ax) + quad[2].y * ax); - var down2x = (quad[3].x * (1.0 - ax2) + quad[2].x * ax2); - var down2y = (quad[3].y * (1.0 - ax2) + quad[2].y * ax2); - var x00 = up1x * (1.0 - ay) + down1x * ay; - var y00 = up1y * (1.0 - ay) + down1y * ay; - var x10 = up2x * (1.0 - ay) + down2x * ay; - var y10 = up2y * (1.0 - ay) + down2y * ay; - var x01 = up1x * (1.0 - ay2) + down1x * ay2; - var y01 = up1y * (1.0 - ay2) + down1y * ay2; - var x11 = up2x * (1.0 - ay2) + down2x * ay2; - var y11 = up2y * (1.0 - ay2) + down2y * ay2; - var mat = tempMat; - mat.tx = x00; - mat.ty = y00; - mat.a = x10 - x00; - mat.b = y10 - y00; - mat.c = x01 - x00; - mat.d = y01 - y00; - tempPoint.set(x11, y11); - mat.applyInverse(tempPoint, tempPoint); - this.distortion.set(tempPoint.x - 1, tempPoint.y - 1); - outTransform.setFromMatrix(mat); - return this; - }; - BilinearSurface.prototype.fillUniforms = function (uniforms) { - uniforms.distortion = uniforms.distortion || new Float32Array([0, 0, 0, 0]); - var ax = Math.abs(this.distortion.x); - var ay = Math.abs(this.distortion.y); - uniforms.distortion[0] = ax * 10000 <= ay ? 0 : this.distortion.x; - uniforms.distortion[1] = ay * 10000 <= ax ? 0 : this.distortion.y; - uniforms.distortion[2] = 1.0 / uniforms.distortion[0]; - uniforms.distortion[3] = 1.0 / uniforms.distortion[1]; - }; - return BilinearSurface; - }(pixi_projection.Surface)); - pixi_projection.BilinearSurface = BilinearSurface; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var Container2s = (function (_super) { - __extends(Container2s, _super); - function Container2s() { - var _this = _super.call(this) || this; - _this.proj = new pixi_projection.ProjectionSurface(_this.transform); - return _this; - } - Object.defineProperty(Container2s.prototype, "worldTransform", { - get: function () { - return this.proj; - }, - enumerable: true, - configurable: true - }); - return Container2s; - }(PIXI.Container)); - pixi_projection.Container2s = Container2s; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var fun = PIXI.Transform.prototype.updateTransform; - function transformHack(parentTransform) { - var proj = this.proj; - var pp = parentTransform.proj; - var ta = this; - if (!pp) { - fun.call(this, parentTransform); - proj._activeProjection = null; - return; - } - if (pp._surface) { - proj._activeProjection = pp; - this.updateLocalTransform(); - this.localTransform.copyFrom(this.worldTransform); - if (ta._parentID < 0) { - ++ta._worldID; - } - return; - } - fun.call(this, parentTransform); - proj._activeProjection = pp._activeProjection; - } - var ProjectionSurface = (function (_super) { - __extends(ProjectionSurface, _super); - function ProjectionSurface(legacy, enable) { - var _this = _super.call(this, legacy, enable) || this; - _this._surface = null; - _this._activeProjection = null; - _this._currentSurfaceID = -1; - _this._currentLegacyID = -1; - _this._lastUniforms = null; - return _this; - } - Object.defineProperty(ProjectionSurface.prototype, "enabled", { - set: function (value) { - if (value === this._enabled) { - return; - } - this._enabled = value; - if (value) { - this.legacy.updateTransform = transformHack; - this.legacy._parentID = -1; - } - else { - this.legacy.updateTransform = PIXI.Transform.prototype.updateTransform; - this.legacy._parentID = -1; - } - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ProjectionSurface.prototype, "surface", { - get: function () { - return this._surface; - }, - set: function (value) { - if (this._surface == value) { - return; - } - this._surface = value || null; - this.legacy._parentID = -1; - }, - enumerable: true, - configurable: true - }); - ProjectionSurface.prototype.applyPartial = function (pos, newPos) { - if (this._activeProjection !== null) { - newPos = this.legacy.worldTransform.apply(pos, newPos); - return this._activeProjection.surface.apply(newPos, newPos); - } - if (this._surface !== null) { - return this.surface.apply(pos, newPos); - } - return this.legacy.worldTransform.apply(pos, newPos); - }; - ProjectionSurface.prototype.apply = function (pos, newPos) { - if (this._activeProjection !== null) { - newPos = this.legacy.worldTransform.apply(pos, newPos); - this._activeProjection.surface.apply(newPos, newPos); - return this._activeProjection.legacy.worldTransform.apply(newPos, newPos); - } - if (this._surface !== null) { - newPos = this.surface.apply(pos, newPos); - return this.legacy.worldTransform.apply(newPos, newPos); - } - return this.legacy.worldTransform.apply(pos, newPos); - }; - ProjectionSurface.prototype.applyInverse = function (pos, newPos) { - if (this._activeProjection !== null) { - newPos = this._activeProjection.legacy.worldTransform.applyInverse(pos, newPos); - this._activeProjection._surface.applyInverse(newPos, newPos); - return this.legacy.worldTransform.applyInverse(newPos, newPos); - } - if (this._surface !== null) { - newPos = this.legacy.worldTransform.applyInverse(pos, newPos); - return this._surface.applyInverse(newPos, newPos); - } - return this.legacy.worldTransform.applyInverse(pos, newPos); - }; - ProjectionSurface.prototype.mapBilinearSprite = function (sprite, quad) { - if (!(this._surface instanceof pixi_projection.BilinearSurface)) { - this.surface = new pixi_projection.BilinearSurface(); - } - this.surface.mapSprite(sprite, quad, this.legacy); - }; - ProjectionSurface.prototype.clear = function () { - if (this.surface) { - this.surface.clear(); - } - }; - Object.defineProperty(ProjectionSurface.prototype, "uniforms", { - get: function () { - if (this._currentLegacyID === this.legacy._worldID && - this._currentSurfaceID === this.surface._updateID) { - return this._lastUniforms; - } - this._lastUniforms = this._lastUniforms || {}; - this._lastUniforms.worldTransform = this.legacy.worldTransform.toArray(true); - this._surface.fillUniforms(this._lastUniforms); - return this._lastUniforms; - }, - enumerable: true, - configurable: true - }); - return ProjectionSurface; - }(pixi_projection.AbstractProjection)); - pixi_projection.ProjectionSurface = ProjectionSurface; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var TYPES = PIXI.TYPES; - var premultiplyTint = PIXI.utils.premultiplyTint; - var shaderVert = "precision highp float;\nattribute vec2 aVertexPosition;\nattribute vec3 aTrans1;\nattribute vec3 aTrans2;\nattribute vec4 aFrame;\nattribute vec4 aColor;\nattribute float aTextureId;\n\nuniform mat3 projectionMatrix;\nuniform mat3 worldTransform;\n\nvarying vec2 vTextureCoord;\nvarying vec3 vTrans1;\nvarying vec3 vTrans2;\nvarying vec4 vFrame;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nvoid main(void){\n gl_Position.xyw = projectionMatrix * worldTransform * vec3(aVertexPosition, 1.0);\n gl_Position.z = 0.0;\n \n vTextureCoord = aVertexPosition;\n vTrans1 = aTrans1;\n vTrans2 = aTrans2;\n vTextureId = aTextureId;\n vColor = aColor;\n vFrame = aFrame;\n}\n"; - var shaderFrag = "precision highp float;\nvarying vec2 vTextureCoord;\nvarying vec3 vTrans1;\nvarying vec3 vTrans2;\nvarying vec4 vFrame;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nuniform sampler2D uSamplers[%count%];\nuniform vec2 samplerSize[%count%]; \nuniform vec4 distortion;\n\nvoid main(void){\nvec2 surface;\nvec2 surface2;\n\nfloat vx = vTextureCoord.x;\nfloat vy = vTextureCoord.y;\nfloat dx = distortion.x;\nfloat dy = distortion.y;\nfloat revx = distortion.z;\nfloat revy = distortion.w;\n\nif (distortion.x == 0.0) {\n surface.x = vx;\n surface.y = vy / (1.0 + dy * vx);\n surface2 = surface;\n} else\nif (distortion.y == 0.0) {\n surface.y = vy;\n surface.x = vx/ (1.0 + dx * vy);\n surface2 = surface;\n} else {\n float c = vy * dx - vx * dy;\n float b = (c + 1.0) * 0.5;\n float b2 = (-c + 1.0) * 0.5;\n float d = b * b + vx * dy;\n if (d < -0.00001) {\n discard;\n }\n d = sqrt(max(d, 0.0));\n surface.x = (- b + d) * revy;\n surface2.x = (- b - d) * revy;\n surface.y = (- b2 + d) * revx;\n surface2.y = (- b2 - d) * revx;\n}\n\nvec2 uv;\nuv.x = vTrans1.x * surface.x + vTrans1.y * surface.y + vTrans1.z;\nuv.y = vTrans2.x * surface.x + vTrans2.y * surface.y + vTrans2.z;\n\nvec2 pixels = uv * samplerSize[0];\n\nif (pixels.x < vFrame.x || pixels.x > vFrame.z ||\n pixels.y < vFrame.y || pixels.y > vFrame.w) {\n uv.x = vTrans1.x * surface2.x + vTrans1.y * surface2.y + vTrans1.z;\n uv.y = vTrans2.x * surface2.x + vTrans2.y * surface2.y + vTrans2.z;\n pixels = uv * samplerSize[0];\n \n if (pixels.x < vFrame.x || pixels.x > vFrame.z ||\n pixels.y < vFrame.y || pixels.y > vFrame.w) {\n discard;\n }\n}\n\nvec4 edge;\nedge.xy = clamp(pixels - vFrame.xy + 0.5, vec2(0.0, 0.0), vec2(1.0, 1.0));\nedge.zw = clamp(vFrame.zw - pixels + 0.5, vec2(0.0, 0.0), vec2(1.0, 1.0));\n\nfloat alpha = 1.0; //edge.x * edge.y * edge.z * edge.w;\nvec4 rColor = vColor * alpha;\n\nfloat textureId = floor(vTextureId+0.5);\n%forloop%\ngl_FragColor = color * rColor;\n}"; - var BatchBilineardGeometry = (function (_super) { - __extends(BatchBilineardGeometry, _super); - function BatchBilineardGeometry(_static) { - if (_static === void 0) { _static = false; } - var _this = _super.call(this) || this; - _this._buffer = new PIXI.Buffer(null, _static, false); - _this._indexBuffer = new PIXI.Buffer(null, _static, true); - _this.addAttribute('aVertexPosition', _this._buffer, 2, false, TYPES.FLOAT) - .addAttribute('aTrans1', _this._buffer, 3, false, TYPES.FLOAT) - .addAttribute('aTrans2', _this._buffer, 3, false, TYPES.FLOAT) - .addAttribute('aFrame', _this._buffer, 4, false, TYPES.FLOAT) - .addAttribute('aColor', _this._buffer, 4, true, TYPES.UNSIGNED_BYTE) - .addIndex(_this._indexBuffer); - return _this; - } - return BatchBilineardGeometry; - }(PIXI.Geometry)); - pixi_projection.BatchBilineardGeometry = BatchBilineardGeometry; - var BatchBilinearPluginFactory = (function () { - function BatchBilinearPluginFactory() { - } - BatchBilinearPluginFactory.create = function (options) { - var _a = Object.assign({ - vertex: shaderVert, - fragment: shaderFrag, - geometryClass: pixi_projection.Batch3dGeometry, - vertexSize: 7, - }, options), vertex = _a.vertex, fragment = _a.fragment, vertexSize = _a.vertexSize, geometryClass = _a.geometryClass; - return (function (_super) { - __extends(BatchPlugin, _super); - function BatchPlugin(renderer) { - var _this = _super.call(this, renderer) || this; - _this.defUniforms = { - worldTransform: new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]), - distortion: new Float32Array([0, 0]) - }; - _this.shaderGenerator = new PIXI.BatchShaderGenerator(vertex, fragment); - _this.geometryClass = geometryClass; - _this.vertexSize = vertexSize; - return _this; - } - BatchPlugin.prototype.getUniforms = function (sprite) { - var proj = sprite.proj; - var shader = this._shader; - if (proj.surface !== null) { - return proj.uniforms; - } - if (proj._activeProjection !== null) { - return proj._activeProjection.uniforms; - } - return this.defUniforms; - }; - BatchPlugin.prototype.packGeometry = function (element, float32View, uint32View, indexBuffer, index, indexCount) { - var p = index / this.vertexSize; - var uvs = element.uvs; - var indices = element.indices; - var vertexData = element.vertexData; - var tex = element._texture; - var frame = tex._frame; - var aTrans = element.aTrans; - var alpha = Math.min(element.worldAlpha, 1.0); - var argb = alpha < 1.0 && element._texture.baseTexture.premultiplyAlpha ? premultiplyTint(element._tintRGB, alpha) - : element._tintRGB + (alpha * 255 << 24); - for (var i = 0; i < vertexData.length; i += 2) { - float32View[index] = vertexData[i * 2]; - float32View[index + 1] = vertexData[i * 2 + 1]; - float32View[index + 2] = aTrans.a; - float32View[index + 3] = aTrans.c; - float32View[index + 4] = aTrans.tx; - float32View[index + 5] = aTrans.b; - float32View[index + 6] = aTrans.d; - float32View[index + 7] = aTrans.ty; - float32View[index + 8] = frame.x; - float32View[index + 9] = frame.y; - float32View[index + 10] = frame.x + frame.width; - float32View[index + 11] = frame.y + frame.height; - uint32View[index + 12] = argb; - index += 13; - } - for (var i = 0; i < indices.length; i++) { - indexBuffer[indexCount++] = p + indices[i]; - } - }; - return BatchPlugin; - }(PIXI.AbstractBatchRenderer)); - }; - return BatchBilinearPluginFactory; - }()); - pixi_projection.BatchBilinearPluginFactory = BatchBilinearPluginFactory; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var Sprite2s = (function (_super) { - __extends(Sprite2s, _super); - function Sprite2s(texture) { - var _this = _super.call(this, texture) || this; - _this.aTrans = new PIXI.Matrix(); - _this.proj = new pixi_projection.ProjectionSurface(_this.transform); - _this.pluginName = 'batch_bilinear'; - return _this; - } - Sprite2s.prototype._calculateBounds = function () { - this.calculateTrimmedVertices(); - this._bounds.addQuad(this.vertexTrimmedData); - }; - Sprite2s.prototype.calculateVertices = function () { - var wid = this.transform._worldID; - var tuid = this._texture._updateID; - if (this._transformID === wid && this._textureID === tuid) { - return; - } - this._transformID = wid; - this._textureID = tuid; - var texture = this._texture; - var vertexData = this.vertexData; - var trim = texture.trim; - var orig = texture.orig; - var anchor = this._anchor; - var w0 = 0; - var w1 = 0; - var h0 = 0; - var h1 = 0; - if (trim) { - w1 = trim.x - (anchor._x * orig.width); - w0 = w1 + trim.width; - h1 = trim.y - (anchor._y * orig.height); - h0 = h1 + trim.height; - } - else { - w1 = -anchor._x * orig.width; - w0 = w1 + orig.width; - h1 = -anchor._y * orig.height; - h0 = h1 + orig.height; - } - if (this.proj._surface) { - vertexData[0] = w1; - vertexData[1] = h1; - vertexData[2] = w0; - vertexData[3] = h1; - vertexData[4] = w0; - vertexData[5] = h0; - vertexData[6] = w1; - vertexData[7] = h0; - this.proj._surface.boundsQuad(vertexData, vertexData); - } - else { - var wt = this.transform.worldTransform; - var a = wt.a; - var b = wt.b; - var c = wt.c; - var d = wt.d; - var tx = wt.tx; - var ty = wt.ty; - vertexData[0] = (a * w1) + (c * h1) + tx; - vertexData[1] = (d * h1) + (b * w1) + ty; - vertexData[2] = (a * w0) + (c * h1) + tx; - vertexData[3] = (d * h1) + (b * w0) + ty; - vertexData[4] = (a * w0) + (c * h0) + tx; - vertexData[5] = (d * h0) + (b * w0) + ty; - vertexData[6] = (a * w1) + (c * h0) + tx; - vertexData[7] = (d * h0) + (b * w1) + ty; - if (this.proj._activeProjection) { - this.proj._activeProjection.surface.boundsQuad(vertexData, vertexData); - } - } - if (!texture.uvMatrix) { - texture.uvMatrix = new PIXI.TextureMatrix(texture); - } - texture.uvMatrix.update(); - var aTrans = this.aTrans; - aTrans.set(orig.width, 0, 0, orig.height, w1, h1); - if (this.proj._surface === null) { - aTrans.prepend(this.transform.worldTransform); - } - aTrans.invert(); - aTrans.prepend(texture.uvMatrix.mapCoord); - }; - Sprite2s.prototype.calculateTrimmedVertices = function () { - var wid = this.transform._worldID; - var tuid = this._texture._updateID; - if (!this.vertexTrimmedData) { - this.vertexTrimmedData = new Float32Array(8); - } - else if (this._transformTrimmedID === wid && this._textureTrimmedID === tuid) { - return; - } - this._transformTrimmedID = wid; - this._textureTrimmedID = tuid; - var texture = this._texture; - var vertexData = this.vertexTrimmedData; - var orig = texture.orig; - var anchor = this._anchor; - var w1 = -anchor._x * orig.width; - var w0 = w1 + orig.width; - var h1 = -anchor._y * orig.height; - var h0 = h1 + orig.height; - if (this.proj._surface) { - vertexData[0] = w1; - vertexData[1] = h1; - vertexData[2] = w0; - vertexData[3] = h1; - vertexData[4] = w0; - vertexData[5] = h0; - vertexData[6] = w1; - vertexData[7] = h0; - this.proj._surface.boundsQuad(vertexData, vertexData, this.transform.worldTransform); - } - else { - var wt = this.transform.worldTransform; - var a = wt.a; - var b = wt.b; - var c = wt.c; - var d = wt.d; - var tx = wt.tx; - var ty = wt.ty; - vertexData[0] = (a * w1) + (c * h1) + tx; - vertexData[1] = (d * h1) + (b * w1) + ty; - vertexData[2] = (a * w0) + (c * h1) + tx; - vertexData[3] = (d * h1) + (b * w0) + ty; - vertexData[4] = (a * w0) + (c * h0) + tx; - vertexData[5] = (d * h0) + (b * w0) + ty; - vertexData[6] = (a * w1) + (c * h0) + tx; - vertexData[7] = (d * h0) + (b * w1) + ty; - if (this.proj._activeProjection) { - this.proj._activeProjection.surface.boundsQuad(vertexData, vertexData, this.proj._activeProjection.legacy.worldTransform); - } - } - }; - Object.defineProperty(Sprite2s.prototype, "worldTransform", { - get: function () { - return this.proj; - }, - enumerable: true, - configurable: true - }); - return Sprite2s; - }(PIXI.Sprite)); - pixi_projection.Sprite2s = Sprite2s; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var Text2s = (function (_super) { - __extends(Text2s, _super); - function Text2s(text, style, canvas) { - var _this = _super.call(this, text, style, canvas) || this; - _this.aTrans = new PIXI.Matrix(); - _this.proj = new pixi_projection.ProjectionSurface(_this.transform); - _this.pluginName = 'batch_bilinear'; - return _this; - } - Object.defineProperty(Text2s.prototype, "worldTransform", { - get: function () { - return this.proj; - }, - enumerable: true, - configurable: true - }); - return Text2s; - }(PIXI.Text)); - pixi_projection.Text2s = Text2s; - Text2s.prototype.calculateVertices = pixi_projection.Sprite2s.prototype.calculateVertices; - Text2s.prototype.calculateTrimmedVertices = pixi_projection.Sprite2s.prototype.calculateTrimmedVertices; - Text2s.prototype._calculateBounds = pixi_projection.Sprite2s.prototype._calculateBounds; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - PIXI.Sprite.prototype.convertTo2s = function () { - if (this.proj) - return; - this.pluginName = 'sprite_bilinear'; - this.aTrans = new PIXI.Matrix(); - this.calculateVertices = pixi_projection.Sprite2s.prototype.calculateVertices; - this.calculateTrimmedVertices = pixi_projection.Sprite2s.prototype.calculateTrimmedVertices; - this._calculateBounds = pixi_projection.Sprite2s.prototype._calculateBounds; - PIXI.Container.prototype.convertTo2s.call(this); - }; - PIXI.Container.prototype.convertTo2s = function () { - if (this.proj) - return; - this.proj = new pixi_projection.Projection2d(this.transform); - Object.defineProperty(this, "worldTransform", { - get: function () { - return this.proj; - }, - enumerable: true, - configurable: true - }); - }; - PIXI.Container.prototype.convertSubtreeTo2s = function () { - this.convertTo2s(); - for (var i = 0; i < this.children.length; i++) { - this.children[i].convertSubtreeTo2s(); - } - }; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - function container2dWorldTransform() { - return this.proj.affine ? this.transform.worldTransform : this.proj.world; - } - pixi_projection.container2dWorldTransform = container2dWorldTransform; - var Container2d = (function (_super) { - __extends(Container2d, _super); - function Container2d() { - var _this = _super.call(this) || this; - _this.proj = new pixi_projection.Projection2d(_this.transform); - return _this; - } - Container2d.prototype.toLocal = function (position, from, point, skipUpdate, step) { - if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } - if (from) { - position = from.toGlobal(position, point, skipUpdate); - } - if (!skipUpdate) { - this._recursivePostUpdateTransform(); - } - if (step >= pixi_projection.TRANSFORM_STEP.PROJ) { - if (!skipUpdate) { - this.displayObjectUpdateTransform(); - } - if (this.proj.affine) { - return this.transform.worldTransform.applyInverse(position, point); - } - return this.proj.world.applyInverse(position, point); - } - if (this.parent) { - point = this.parent.worldTransform.applyInverse(position, point); - } - else { - point.copyFrom(position); - } - if (step === pixi_projection.TRANSFORM_STEP.NONE) { - return point; - } - return this.transform.localTransform.applyInverse(point, point); - }; - Object.defineProperty(Container2d.prototype, "worldTransform", { - get: function () { - return this.proj.affine ? this.transform.worldTransform : this.proj.world; - }, - enumerable: true, - configurable: true - }); - return Container2d; - }(PIXI.Container)); - pixi_projection.Container2d = Container2d; - pixi_projection.container2dToLocal = Container2d.prototype.toLocal; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var Point = PIXI.Point; - var mat3id = [1, 0, 0, 0, 1, 0, 0, 0, 1]; - var AFFINE; - (function (AFFINE) { - AFFINE[AFFINE["NONE"] = 0] = "NONE"; - AFFINE[AFFINE["FREE"] = 1] = "FREE"; - AFFINE[AFFINE["AXIS_X"] = 2] = "AXIS_X"; - AFFINE[AFFINE["AXIS_Y"] = 3] = "AXIS_Y"; - AFFINE[AFFINE["POINT"] = 4] = "POINT"; - AFFINE[AFFINE["AXIS_XR"] = 5] = "AXIS_XR"; - })(AFFINE = pixi_projection.AFFINE || (pixi_projection.AFFINE = {})); - var Matrix2d = (function () { - function Matrix2d(backingArray) { - this.floatArray = null; - this.mat3 = new Float64Array(backingArray || mat3id); - } - Object.defineProperty(Matrix2d.prototype, "a", { - get: function () { - return this.mat3[0] / this.mat3[8]; - }, - set: function (value) { - this.mat3[0] = value * this.mat3[8]; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Matrix2d.prototype, "b", { - get: function () { - return this.mat3[1] / this.mat3[8]; - }, - set: function (value) { - this.mat3[1] = value * this.mat3[8]; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Matrix2d.prototype, "c", { - get: function () { - return this.mat3[3] / this.mat3[8]; - }, - set: function (value) { - this.mat3[3] = value * this.mat3[8]; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Matrix2d.prototype, "d", { - get: function () { - return this.mat3[4] / this.mat3[8]; - }, - set: function (value) { - this.mat3[4] = value * this.mat3[8]; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Matrix2d.prototype, "tx", { - get: function () { - return this.mat3[6] / this.mat3[8]; - }, - set: function (value) { - this.mat3[6] = value * this.mat3[8]; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Matrix2d.prototype, "ty", { - get: function () { - return this.mat3[7] / this.mat3[8]; - }, - set: function (value) { - this.mat3[7] = value * this.mat3[8]; - }, - enumerable: true, - configurable: true - }); - Matrix2d.prototype.set = function (a, b, c, d, tx, ty) { - var mat3 = this.mat3; - mat3[0] = a; - mat3[1] = b; - mat3[2] = 0; - mat3[3] = c; - mat3[4] = d; - mat3[5] = 0; - mat3[6] = tx; - mat3[7] = ty; - mat3[8] = 1; - return this; - }; - Matrix2d.prototype.toArray = function (transpose, out) { - if (!this.floatArray) { - this.floatArray = new Float32Array(9); - } - var array = out || this.floatArray; - var mat3 = this.mat3; - if (transpose) { - array[0] = mat3[0]; - array[1] = mat3[1]; - array[2] = mat3[2]; - array[3] = mat3[3]; - array[4] = mat3[4]; - array[5] = mat3[5]; - array[6] = mat3[6]; - array[7] = mat3[7]; - array[8] = mat3[8]; - } - else { - array[0] = mat3[0]; - array[1] = mat3[3]; - array[2] = mat3[6]; - array[3] = mat3[1]; - array[4] = mat3[4]; - array[5] = mat3[7]; - array[6] = mat3[2]; - array[7] = mat3[5]; - array[8] = mat3[8]; - } - return array; - }; - Matrix2d.prototype.apply = function (pos, newPos) { - newPos = newPos || new PIXI.Point(); - var mat3 = this.mat3; - var x = pos.x; - var y = pos.y; - var z = 1.0 / (mat3[2] * x + mat3[5] * y + mat3[8]); - newPos.x = z * (mat3[0] * x + mat3[3] * y + mat3[6]); - newPos.y = z * (mat3[1] * x + mat3[4] * y + mat3[7]); - return newPos; - }; - Matrix2d.prototype.translate = function (tx, ty) { - var mat3 = this.mat3; - mat3[0] += tx * mat3[2]; - mat3[1] += ty * mat3[2]; - mat3[3] += tx * mat3[5]; - mat3[4] += ty * mat3[5]; - mat3[6] += tx * mat3[8]; - mat3[7] += ty * mat3[8]; - return this; - }; - Matrix2d.prototype.scale = function (x, y) { - var mat3 = this.mat3; - mat3[0] *= x; - mat3[1] *= y; - mat3[3] *= x; - mat3[4] *= y; - mat3[6] *= x; - mat3[7] *= y; - return this; - }; - Matrix2d.prototype.scaleAndTranslate = function (scaleX, scaleY, tx, ty) { - var mat3 = this.mat3; - mat3[0] = scaleX * mat3[0] + tx * mat3[2]; - mat3[1] = scaleY * mat3[1] + ty * mat3[2]; - mat3[3] = scaleX * mat3[3] + tx * mat3[5]; - mat3[4] = scaleY * mat3[4] + ty * mat3[5]; - mat3[6] = scaleX * mat3[6] + tx * mat3[8]; - mat3[7] = scaleY * mat3[7] + ty * mat3[8]; - }; - Matrix2d.prototype.applyInverse = function (pos, newPos) { - newPos = newPos || new Point(); - var a = this.mat3; - var x = pos.x; - var y = pos.y; - var a00 = a[0], a01 = a[3], a02 = a[6], a10 = a[1], a11 = a[4], a12 = a[7], a20 = a[2], a21 = a[5], a22 = a[8]; - var newX = (a22 * a11 - a12 * a21) * x + (-a22 * a01 + a02 * a21) * y + (a12 * a01 - a02 * a11); - var newY = (-a22 * a10 + a12 * a20) * x + (a22 * a00 - a02 * a20) * y + (-a12 * a00 + a02 * a10); - var newZ = (a21 * a10 - a11 * a20) * x + (-a21 * a00 + a01 * a20) * y + (a11 * a00 - a01 * a10); - newPos.x = newX / newZ; - newPos.y = newY / newZ; - return newPos; - }; - Matrix2d.prototype.invert = function () { - var a = this.mat3; - var a00 = a[0], a01 = a[1], a02 = a[2], a10 = a[3], a11 = a[4], a12 = a[5], a20 = a[6], a21 = a[7], a22 = a[8], b01 = a22 * a11 - a12 * a21, b11 = -a22 * a10 + a12 * a20, b21 = a21 * a10 - a11 * a20; - var det = a00 * b01 + a01 * b11 + a02 * b21; - if (!det) { - return this; - } - det = 1.0 / det; - a[0] = b01 * det; - a[1] = (-a22 * a01 + a02 * a21) * det; - a[2] = (a12 * a01 - a02 * a11) * det; - a[3] = b11 * det; - a[4] = (a22 * a00 - a02 * a20) * det; - a[5] = (-a12 * a00 + a02 * a10) * det; - a[6] = b21 * det; - a[7] = (-a21 * a00 + a01 * a20) * det; - a[8] = (a11 * a00 - a01 * a10) * det; - return this; - }; - Matrix2d.prototype.identity = function () { - var mat3 = this.mat3; - mat3[0] = 1; - mat3[1] = 0; - mat3[2] = 0; - mat3[3] = 0; - mat3[4] = 1; - mat3[5] = 0; - mat3[6] = 0; - mat3[7] = 0; - mat3[8] = 1; - return this; - }; - Matrix2d.prototype.clone = function () { - return new Matrix2d(this.mat3); - }; - Matrix2d.prototype.copyTo2dOr3d = function (matrix) { - var mat3 = this.mat3; - var ar2 = matrix.mat3; - ar2[0] = mat3[0]; - ar2[1] = mat3[1]; - ar2[2] = mat3[2]; - ar2[3] = mat3[3]; - ar2[4] = mat3[4]; - ar2[5] = mat3[5]; - ar2[6] = mat3[6]; - ar2[7] = mat3[7]; - ar2[8] = mat3[8]; - return matrix; - }; - Matrix2d.prototype.copyTo = function (matrix, affine, preserveOrientation) { - var mat3 = this.mat3; - var d = 1.0 / mat3[8]; - var tx = mat3[6] * d, ty = mat3[7] * d; - matrix.a = (mat3[0] - mat3[2] * tx) * d; - matrix.b = (mat3[1] - mat3[2] * ty) * d; - matrix.c = (mat3[3] - mat3[5] * tx) * d; - matrix.d = (mat3[4] - mat3[5] * ty) * d; - matrix.tx = tx; - matrix.ty = ty; - if (affine >= 2) { - var D = matrix.a * matrix.d - matrix.b * matrix.c; - if (!preserveOrientation) { - D = Math.abs(D); - } - if (affine === AFFINE.POINT) { - if (D > 0) { - D = 1; - } - else - D = -1; - matrix.a = D; - matrix.b = 0; - matrix.c = 0; - matrix.d = D; - } - else if (affine === AFFINE.AXIS_X) { - D /= Math.sqrt(matrix.b * matrix.b + matrix.d * matrix.d); - matrix.c = 0; - matrix.d = D; - } - else if (affine === AFFINE.AXIS_Y) { - D /= Math.sqrt(matrix.a * matrix.a + matrix.c * matrix.c); - matrix.a = D; - matrix.c = 0; - } - else if (affine === AFFINE.AXIS_XR) { - matrix.a = matrix.d * D; - matrix.c = -matrix.b * D; - } - } - return matrix; - }; - Matrix2d.prototype.copyFrom = function (matrix) { - var mat3 = this.mat3; - mat3[0] = matrix.a; - mat3[1] = matrix.b; - mat3[2] = 0; - mat3[3] = matrix.c; - mat3[4] = matrix.d; - mat3[5] = 0; - mat3[6] = matrix.tx; - mat3[7] = matrix.ty; - mat3[8] = 1.0; - return this; - }; - Matrix2d.prototype.setToMultLegacy = function (pt, lt) { - var out = this.mat3; - var b = lt.mat3; - var a00 = pt.a, a01 = pt.b, a10 = pt.c, a11 = pt.d, a20 = pt.tx, a21 = pt.ty, b00 = b[0], b01 = b[1], b02 = b[2], b10 = b[3], b11 = b[4], b12 = b[5], b20 = b[6], b21 = b[7], b22 = b[8]; - out[0] = b00 * a00 + b01 * a10 + b02 * a20; - out[1] = b00 * a01 + b01 * a11 + b02 * a21; - out[2] = b02; - out[3] = b10 * a00 + b11 * a10 + b12 * a20; - out[4] = b10 * a01 + b11 * a11 + b12 * a21; - out[5] = b12; - out[6] = b20 * a00 + b21 * a10 + b22 * a20; - out[7] = b20 * a01 + b21 * a11 + b22 * a21; - out[8] = b22; - return this; - }; - Matrix2d.prototype.setToMultLegacy2 = function (pt, lt) { - var out = this.mat3; - var a = pt.mat3; - var a00 = a[0], a01 = a[1], a02 = a[2], a10 = a[3], a11 = a[4], a12 = a[5], a20 = a[6], a21 = a[7], a22 = a[8], b00 = lt.a, b01 = lt.b, b10 = lt.c, b11 = lt.d, b20 = lt.tx, b21 = lt.ty; - out[0] = b00 * a00 + b01 * a10; - out[1] = b00 * a01 + b01 * a11; - out[2] = b00 * a02 + b01 * a12; - out[3] = b10 * a00 + b11 * a10; - out[4] = b10 * a01 + b11 * a11; - out[5] = b10 * a02 + b11 * a12; - out[6] = b20 * a00 + b21 * a10 + a20; - out[7] = b20 * a01 + b21 * a11 + a21; - out[8] = b20 * a02 + b21 * a12 + a22; - return this; - }; - Matrix2d.prototype.setToMult = function (pt, lt) { - var out = this.mat3; - var a = pt.mat3, b = lt.mat3; - var a00 = a[0], a01 = a[1], a02 = a[2], a10 = a[3], a11 = a[4], a12 = a[5], a20 = a[6], a21 = a[7], a22 = a[8], b00 = b[0], b01 = b[1], b02 = b[2], b10 = b[3], b11 = b[4], b12 = b[5], b20 = b[6], b21 = b[7], b22 = b[8]; - out[0] = b00 * a00 + b01 * a10 + b02 * a20; - out[1] = b00 * a01 + b01 * a11 + b02 * a21; - out[2] = b00 * a02 + b01 * a12 + b02 * a22; - out[3] = b10 * a00 + b11 * a10 + b12 * a20; - out[4] = b10 * a01 + b11 * a11 + b12 * a21; - out[5] = b10 * a02 + b11 * a12 + b12 * a22; - out[6] = b20 * a00 + b21 * a10 + b22 * a20; - out[7] = b20 * a01 + b21 * a11 + b22 * a21; - out[8] = b20 * a02 + b21 * a12 + b22 * a22; - return this; - }; - Matrix2d.prototype.prepend = function (lt) { - if (lt.mat3) { - return this.setToMult(lt, this); - } - else { - return this.setToMultLegacy(lt, this); - } - }; - Matrix2d.IDENTITY = new Matrix2d(); - Matrix2d.TEMP_MATRIX = new Matrix2d(); - return Matrix2d; - }()); - pixi_projection.Matrix2d = Matrix2d; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var t0 = new PIXI.Point(); - var tt = [new PIXI.Point(), new PIXI.Point(), new PIXI.Point(), new PIXI.Point()]; - var tempRect = new PIXI.Rectangle(); - var tempMat = new pixi_projection.Matrix2d(); - var Projection2d = (function (_super) { - __extends(Projection2d, _super); - function Projection2d(legacy, enable) { - var _this = _super.call(this, legacy, enable) || this; - _this.matrix = new pixi_projection.Matrix2d(); - _this.pivot = new PIXI.ObservablePoint(_this.onChange, _this, 0, 0); - _this.reverseLocalOrder = false; - _this.local = new pixi_projection.Matrix2d(); - _this.world = new pixi_projection.Matrix2d(); - return _this; - } - Projection2d.prototype.onChange = function () { - var pivot = this.pivot; - var mat3 = this.matrix.mat3; - mat3[6] = -(pivot._x * mat3[0] + pivot._y * mat3[3]); - mat3[7] = -(pivot._x * mat3[1] + pivot._y * mat3[4]); - this._projID++; - }; - Projection2d.prototype.setAxisX = function (p, factor) { - if (factor === void 0) { factor = 1; } - var x = p.x, y = p.y; - var d = Math.sqrt(x * x + y * y); - var mat3 = this.matrix.mat3; - mat3[0] = x / d; - mat3[1] = y / d; - mat3[2] = factor / d; - this.onChange(); - }; - Projection2d.prototype.setAxisY = function (p, factor) { - if (factor === void 0) { factor = 1; } - var x = p.x, y = p.y; - var d = Math.sqrt(x * x + y * y); - var mat3 = this.matrix.mat3; - mat3[3] = x / d; - mat3[4] = y / d; - mat3[5] = factor / d; - this.onChange(); - }; - Projection2d.prototype.mapSprite = function (sprite, quad) { - var tex = sprite.texture; - tempRect.x = -sprite.anchor.x * tex.orig.width; - tempRect.y = -sprite.anchor.y * tex.orig.height; - tempRect.width = tex.orig.width; - tempRect.height = tex.orig.height; - return this.mapQuad(tempRect, quad); - }; - Projection2d.prototype.mapQuad = function (rect, p) { - tt[0].set(rect.x, rect.y); - tt[1].set(rect.x + rect.width, rect.y); - tt[2].set(rect.x + rect.width, rect.y + rect.height); - tt[3].set(rect.x, rect.y + rect.height); - var k1 = 1, k2 = 2, k3 = 3; - var f = pixi_projection.utils.getIntersectionFactor(p[0], p[2], p[1], p[3], t0); - if (f !== 0) { - k1 = 1; - k2 = 3; - k3 = 2; - } - else { - return; - } - var d0 = Math.sqrt((p[0].x - t0.x) * (p[0].x - t0.x) + (p[0].y - t0.y) * (p[0].y - t0.y)); - var d1 = Math.sqrt((p[k1].x - t0.x) * (p[k1].x - t0.x) + (p[k1].y - t0.y) * (p[k1].y - t0.y)); - var d2 = Math.sqrt((p[k2].x - t0.x) * (p[k2].x - t0.x) + (p[k2].y - t0.y) * (p[k2].y - t0.y)); - var d3 = Math.sqrt((p[k3].x - t0.x) * (p[k3].x - t0.x) + (p[k3].y - t0.y) * (p[k3].y - t0.y)); - var q0 = (d0 + d3) / d3; - var q1 = (d1 + d2) / d2; - var q2 = (d1 + d2) / d1; - var mat3 = this.matrix.mat3; - mat3[0] = tt[0].x * q0; - mat3[1] = tt[0].y * q0; - mat3[2] = q0; - mat3[3] = tt[k1].x * q1; - mat3[4] = tt[k1].y * q1; - mat3[5] = q1; - mat3[6] = tt[k2].x * q2; - mat3[7] = tt[k2].y * q2; - mat3[8] = q2; - this.matrix.invert(); - mat3 = tempMat.mat3; - mat3[0] = p[0].x; - mat3[1] = p[0].y; - mat3[2] = 1; - mat3[3] = p[k1].x; - mat3[4] = p[k1].y; - mat3[5] = 1; - mat3[6] = p[k2].x; - mat3[7] = p[k2].y; - mat3[8] = 1; - this.matrix.setToMult(tempMat, this.matrix); - this._projID++; - }; - Projection2d.prototype.updateLocalTransform = function (lt) { - if (this._projID !== 0) { - if (this.reverseLocalOrder) { - this.local.setToMultLegacy2(this.matrix, lt); - } - else { - this.local.setToMultLegacy(lt, this.matrix); - } - } - else { - this.local.copyFrom(lt); - } - }; - Projection2d.prototype.clear = function () { - _super.prototype.clear.call(this); - this.matrix.identity(); - this.pivot.set(0, 0); - }; - return Projection2d; - }(pixi_projection.LinearProjection)); - pixi_projection.Projection2d = Projection2d; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var Mesh2d = (function (_super) { - __extends(Mesh2d, _super); - function Mesh2d(geometry, shader, state, drawMode) { - var _this = _super.call(this, geometry, shader, state, drawMode) || this; - _this.vertexData2d = null; - _this.proj = new pixi_projection.Projection2d(_this.transform); - return _this; - } - Mesh2d.prototype.calculateVertices = function () { - if (this.proj._affine) { - this.vertexData2d = null; - _super.prototype.calculateVertices.call(this); - return; - } - var geometry = this.geometry; - var vertices = geometry.buffers[0].data; - var thisAny = this; - if (geometry.vertexDirtyId === thisAny.vertexDirty && thisAny._transformID === thisAny.transform._worldID) { - return; - } - thisAny._transformID = thisAny.transform._worldID; - if (thisAny.vertexData.length !== vertices.length) { - thisAny.vertexData = new Float32Array(vertices.length); - } - if (this.vertexData2d.length !== vertices.length * 3 / 2) { - this.vertexData2d = new Float32Array(vertices.length * 3); - } - var wt = this.proj.world.mat3; - var vertexData2d = this.vertexData2d; - var vertexData = thisAny.vertexData; - for (var i = 0; i < vertexData.length / 2; i++) { - var x = vertices[(i * 2)]; - var y = vertices[(i * 2) + 1]; - var xx = (wt[0] * x) + (wt[3] * y) + wt[6]; - var yy = (wt[1] * x) + (wt[4] * y) + wt[7]; - var ww = (wt[2] * x) + (wt[5] * y) + wt[8]; - vertexData2d[i * 3] = xx; - vertexData2d[i * 3 + 1] = yy; - vertexData2d[i * 3 + 2] = ww; - vertexData[(i * 2)] = xx / ww; - vertexData[(i * 2) + 1] = yy / ww; - } - thisAny.vertexDirty = geometry.vertexDirtyId; - }; - Mesh2d.prototype._renderDefault = function (renderer) { - var shader = this.shader; - shader.alpha = this.worldAlpha; - if (shader.update) { - shader.update(); - } - renderer.batch.flush(); - if (shader.program.uniformData.translationMatrix) { - shader.uniforms.translationMatrix = this.worldTransform.toArray(true); - } - renderer.shader.bind(shader, false); - renderer.state.set(this.state); - renderer.geometry.bind(this.geometry, shader); - renderer.geometry.draw(this.drawMode, this.size, this.start, this.geometry.instanceCount); - }; - Mesh2d.prototype.toLocal = function (position, from, point, skipUpdate, step) { - if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } - return pixi_projection.container2dToLocal.call(this, position, from, point, skipUpdate, step); - }; - Object.defineProperty(Mesh2d.prototype, "worldTransform", { - get: function () { - return this.proj.affine ? this.transform.worldTransform : this.proj.world; - }, - enumerable: true, - configurable: true - }); - Mesh2d.defaultVertexShader = "precision highp float;\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position.xyw = projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0);\n gl_Position.z = 0.0;\n\n vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\n}\n"; - Mesh2d.defaultFragmentShader = "\nvarying vec2 vTextureCoord;\nuniform vec4 uColor;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n gl_FragColor = texture2D(uSampler, vTextureCoord) * uColor;\n}"; - return Mesh2d; - }(PIXI.Mesh)); - pixi_projection.Mesh2d = Mesh2d; - var SimpleMesh2d = (function (_super) { - __extends(SimpleMesh2d, _super); - function SimpleMesh2d(texture, vertices, uvs, indices, drawMode) { - var _this = _super.call(this, new PIXI.MeshGeometry(vertices, uvs, indices), new PIXI.MeshMaterial(texture, { - program: PIXI.Program.from(Mesh2d.defaultVertexShader, Mesh2d.defaultFragmentShader), - pluginName: 'batch2d' - }), null, drawMode) || this; - _this.autoUpdate = true; - _this.geometry.getBuffer('aVertexPosition').static = false; - return _this; - } - Object.defineProperty(SimpleMesh2d.prototype, "vertices", { - get: function () { - return this.geometry.getBuffer('aVertexPosition').data; - }, - set: function (value) { - this.geometry.getBuffer('aVertexPosition').data = value; - }, - enumerable: true, - configurable: true - }); - SimpleMesh2d.prototype._render = function (renderer) { - if (this.autoUpdate) { - this.geometry.getBuffer('aVertexPosition').update(); - } - _super.prototype._render.call(this, renderer); - }; - return SimpleMesh2d; - }(Mesh2d)); - pixi_projection.SimpleMesh2d = SimpleMesh2d; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var Sprite2d = (function (_super) { - __extends(Sprite2d, _super); - function Sprite2d(texture) { - var _this = _super.call(this, texture) || this; - _this.vertexData2d = null; - _this.proj = new pixi_projection.Projection2d(_this.transform); - _this.pluginName = 'batch2d'; - return _this; - } - Sprite2d.prototype._calculateBounds = function () { - this.calculateTrimmedVertices(); - this._bounds.addQuad(this.vertexTrimmedData); - }; - Sprite2d.prototype.calculateVertices = function () { - var texture = this._texture; - if (this.proj._affine) { - this.vertexData2d = null; - _super.prototype.calculateVertices.call(this); - return; - } - if (!this.vertexData2d) { - this.vertexData2d = new Float32Array(12); - } - var wid = this.transform._worldID; - var tuid = texture._updateID; - if (this._transformID === wid && this._textureID === tuid) { - return; - } - if (this._textureID !== tuid) { - this.uvs = texture._uvs.uvsFloat32; - } - this._transformID = wid; - this._textureID = tuid; - var wt = this.proj.world.mat3; - var vertexData2d = this.vertexData2d; - var vertexData = this.vertexData; - var trim = texture.trim; - var orig = texture.orig; - var anchor = this._anchor; - var w0 = 0; - var w1 = 0; - var h0 = 0; - var h1 = 0; - if (trim) { - w1 = trim.x - (anchor._x * orig.width); - w0 = w1 + trim.width; - h1 = trim.y - (anchor._y * orig.height); - h0 = h1 + trim.height; - } - else { - w1 = -anchor._x * orig.width; - w0 = w1 + orig.width; - h1 = -anchor._y * orig.height; - h0 = h1 + orig.height; - } - vertexData2d[0] = (wt[0] * w1) + (wt[3] * h1) + wt[6]; - vertexData2d[1] = (wt[1] * w1) + (wt[4] * h1) + wt[7]; - vertexData2d[2] = (wt[2] * w1) + (wt[5] * h1) + wt[8]; - vertexData2d[3] = (wt[0] * w0) + (wt[3] * h1) + wt[6]; - vertexData2d[4] = (wt[1] * w0) + (wt[4] * h1) + wt[7]; - vertexData2d[5] = (wt[2] * w0) + (wt[5] * h1) + wt[8]; - vertexData2d[6] = (wt[0] * w0) + (wt[3] * h0) + wt[6]; - vertexData2d[7] = (wt[1] * w0) + (wt[4] * h0) + wt[7]; - vertexData2d[8] = (wt[2] * w0) + (wt[5] * h0) + wt[8]; - vertexData2d[9] = (wt[0] * w1) + (wt[3] * h0) + wt[6]; - vertexData2d[10] = (wt[1] * w1) + (wt[4] * h0) + wt[7]; - vertexData2d[11] = (wt[2] * w1) + (wt[5] * h0) + wt[8]; - vertexData[0] = vertexData2d[0] / vertexData2d[2]; - vertexData[1] = vertexData2d[1] / vertexData2d[2]; - vertexData[2] = vertexData2d[3] / vertexData2d[5]; - vertexData[3] = vertexData2d[4] / vertexData2d[5]; - vertexData[4] = vertexData2d[6] / vertexData2d[8]; - vertexData[5] = vertexData2d[7] / vertexData2d[8]; - vertexData[6] = vertexData2d[9] / vertexData2d[11]; - vertexData[7] = vertexData2d[10] / vertexData2d[11]; - }; - Sprite2d.prototype.calculateTrimmedVertices = function () { - if (this.proj._affine) { - _super.prototype.calculateTrimmedVertices.call(this); - return; - } - var wid = this.transform._worldID; - var tuid = this._texture._updateID; - if (!this.vertexTrimmedData) { - this.vertexTrimmedData = new Float32Array(8); - } - else if (this._transformTrimmedID === wid && this._textureTrimmedID === tuid) { - return; - } - this._transformTrimmedID = wid; - this._textureTrimmedID = tuid; - var texture = this._texture; - var vertexData = this.vertexTrimmedData; - var orig = texture.orig; - var anchor = this._anchor; - var wt = this.proj.world.mat3; - var w1 = -anchor._x * orig.width; - var w0 = w1 + orig.width; - var h1 = -anchor._y * orig.height; - var h0 = h1 + orig.height; - var z = 1.0 / (wt[2] * w1 + wt[5] * h1 + wt[8]); - vertexData[0] = z * ((wt[0] * w1) + (wt[3] * h1) + wt[6]); - vertexData[1] = z * ((wt[1] * w1) + (wt[4] * h1) + wt[7]); - z = 1.0 / (wt[2] * w0 + wt[5] * h1 + wt[8]); - vertexData[2] = z * ((wt[0] * w0) + (wt[3] * h1) + wt[6]); - vertexData[3] = z * ((wt[1] * w0) + (wt[4] * h1) + wt[7]); - z = 1.0 / (wt[2] * w0 + wt[5] * h0 + wt[8]); - vertexData[4] = z * ((wt[0] * w0) + (wt[3] * h0) + wt[6]); - vertexData[5] = z * ((wt[1] * w0) + (wt[4] * h0) + wt[7]); - z = 1.0 / (wt[2] * w1 + wt[5] * h0 + wt[8]); - vertexData[6] = z * ((wt[0] * w1) + (wt[3] * h0) + wt[6]); - vertexData[7] = z * ((wt[1] * w1) + (wt[4] * h0) + wt[7]); - }; - Sprite2d.prototype.toLocal = function (position, from, point, skipUpdate, step) { - if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } - return pixi_projection.container2dToLocal.call(this, position, from, point, skipUpdate, step); - }; - Object.defineProperty(Sprite2d.prototype, "worldTransform", { - get: function () { - return this.proj.affine ? this.transform.worldTransform : this.proj.world; - }, - enumerable: true, - configurable: true - }); - return Sprite2d; - }(PIXI.Sprite)); - pixi_projection.Sprite2d = Sprite2d; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var Text2d = (function (_super) { - __extends(Text2d, _super); - function Text2d(text, style, canvas) { - var _this = _super.call(this, text, style, canvas) || this; - _this.vertexData2d = null; - _this.proj = new pixi_projection.Projection2d(_this.transform); - _this.pluginName = 'batch2d'; - return _this; - } - Object.defineProperty(Text2d.prototype, "worldTransform", { - get: function () { - return this.proj.affine ? this.transform.worldTransform : this.proj.world; - }, - enumerable: true, - configurable: true - }); - return Text2d; - }(PIXI.Text)); - pixi_projection.Text2d = Text2d; - Text2d.prototype.calculateVertices = pixi_projection.Sprite2d.prototype.calculateVertices; - Text2d.prototype.calculateTrimmedVertices = pixi_projection.Sprite2d.prototype.calculateTrimmedVertices; - Text2d.prototype._calculateBounds = pixi_projection.Sprite2d.prototype._calculateBounds; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - function convertTo2d() { - if (this.proj) - return; - this.proj = new pixi_projection.Projection2d(this.transform); - this.toLocal = pixi_projection.Container2d.prototype.toLocal; - Object.defineProperty(this, "worldTransform", { - get: pixi_projection.container2dWorldTransform, - enumerable: true, - configurable: true - }); - } - PIXI.Container.prototype.convertTo2d = convertTo2d; - PIXI.Sprite.prototype.convertTo2d = function () { - if (this.proj) - return; - this.calculateVertices = pixi_projection.Sprite2d.prototype.calculateVertices; - this.calculateTrimmedVertices = pixi_projection.Sprite2d.prototype.calculateTrimmedVertices; - this._calculateBounds = pixi_projection.Sprite2d.prototype._calculateBounds; - this.pluginName = 'sprite2d'; - convertTo2d.call(this); - }; - PIXI.Container.prototype.convertSubtreeTo2d = function () { - this.convertTo2d(); - for (var i = 0; i < this.children.length; i++) { - this.children[i].convertSubtreeTo2d(); - } - }; - if (PIXI.SimpleMesh) { - PIXI.SimpleMesh.prototype.convertTo2d = - PIXI.SimpleRope.prototype.convertTo2d = - function () { - if (this.proj) - return; - this.calculateVertices = pixi_projection.Mesh2d.prototype.calculateVertices; - this._renderDefault = pixi_projection.Mesh2d.prototype._renderDefault; - if (this.material.pluginName !== 'batch2d') { - this.material = new PIXI.MeshMaterial(this.material.texture, { - program: PIXI.Program.from(pixi_projection.Mesh2d.defaultVertexShader, pixi_projection.Mesh2d.defaultFragmentShader), - pluginName: 'batch2d' - }); - } - convertTo2d.call(this); - }; - } -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var tempTransform = new PIXI.Transform(); - var TilingSprite2d = (function (_super) { - __extends(TilingSprite2d, _super); - function TilingSprite2d(texture, width, height) { - var _this = _super.call(this, texture, width, height) || this; - _this.tileProj = new pixi_projection.Projection2d(_this.tileTransform); - _this.tileProj.reverseLocalOrder = true; - _this.proj = new pixi_projection.Projection2d(_this.transform); - _this.pluginName = 'tilingSprite2d'; - _this.uvRespectAnchor = true; - return _this; - } - Object.defineProperty(TilingSprite2d.prototype, "worldTransform", { - get: function () { - return this.proj.affine ? this.transform.worldTransform : this.proj.world; - }, - enumerable: true, - configurable: true - }); - TilingSprite2d.prototype.toLocal = function (position, from, point, skipUpdate, step) { - if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } - return pixi_projection.container2dToLocal.call(this, position, from, point, skipUpdate, step); - }; - TilingSprite2d.prototype._render = function (renderer) { - var texture = this._texture; - if (!texture || !texture.valid) { - return; - } - this.tileTransform.updateTransform(tempTransform); - this.uvMatrix.update(); - renderer.batch.setObjectRenderer(renderer.plugins[this.pluginName]); - renderer.plugins[this.pluginName].render(this); - }; - return TilingSprite2d; - }(PIXI.TilingSprite)); - pixi_projection.TilingSprite2d = TilingSprite2d; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var shaderVert = "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nvarying vec3 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position.xyw = projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0);\n\n vTextureCoord = uTransform * vec3(aTextureCoord, 1.0);\n}\n"; - var shaderFrag = "\nvarying vec3 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\nuniform mat3 uMapCoord;\nuniform vec4 uClampFrame;\nuniform vec2 uClampOffset;\n\nvoid main(void)\n{\n vec2 coord = mod(vTextureCoord.xy / vTextureCoord.z - uClampOffset, vec2(1.0, 1.0)) + uClampOffset;\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\n\n vec4 sample = texture2D(uSampler, coord);\n gl_FragColor = sample * uColor;\n}\n"; - var shaderSimpleFrag = "\n\tvarying vec3 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\n\nvoid main(void)\n{\n vec4 sample = texture2D(uSampler, vTextureCoord.xy / vTextureCoord.z);\n gl_FragColor = sample * uColor;\n}\n"; - var tempMat = new pixi_projection.Matrix2d(); - var WRAP_MODES = PIXI.WRAP_MODES; - var utils = PIXI.utils; - var TilingSprite2dRenderer = (function (_super) { - __extends(TilingSprite2dRenderer, _super); - function TilingSprite2dRenderer(renderer) { - var _this = _super.call(this, renderer) || this; - _this.quad = new PIXI.QuadUv(); - var uniforms = { globals: _this.renderer.globalUniforms }; - _this.shader = PIXI.Shader.from(shaderVert, shaderFrag, uniforms); - _this.simpleShader = PIXI.Shader.from(shaderVert, shaderSimpleFrag, uniforms); - return _this; - } - TilingSprite2dRenderer.prototype.render = function (ts) { - var renderer = this.renderer; - var quad = this.quad; - var vertices = quad.vertices; - vertices[0] = vertices[6] = (ts._width) * -ts.anchor.x; - vertices[1] = vertices[3] = ts._height * -ts.anchor.y; - vertices[2] = vertices[4] = (ts._width) * (1.0 - ts.anchor.x); - vertices[5] = vertices[7] = ts._height * (1.0 - ts.anchor.y); - if (ts.uvRespectAnchor) { - vertices = quad.uvs; - vertices[0] = vertices[6] = -ts.anchor.x; - vertices[1] = vertices[3] = -ts.anchor.y; - vertices[2] = vertices[4] = 1.0 - ts.anchor.x; - vertices[5] = vertices[7] = 1.0 - ts.anchor.y; - } - quad.invalidate(); - var tex = ts._texture; - var baseTex = tex.baseTexture; - var lt = ts.tileProj.world; - var uv = ts.uvMatrix; - var isSimple = baseTex.isPowerOfTwo - && tex.frame.width === baseTex.width && tex.frame.height === baseTex.height; - if (isSimple) { - if (!baseTex._glTextures[renderer.CONTEXT_UID]) { - if (baseTex.wrapMode === WRAP_MODES.CLAMP) { - baseTex.wrapMode = WRAP_MODES.REPEAT; - } - } - else { - isSimple = baseTex.wrapMode !== WRAP_MODES.CLAMP; - } - } - var shader = isSimple ? this.simpleShader : this.shader; - tempMat.identity(); - tempMat.scale(tex.width, tex.height); - tempMat.prepend(lt); - tempMat.scale(1.0 / ts._width, 1.0 / ts._height); - tempMat.invert(); - if (isSimple) { - tempMat.prepend(uv.mapCoord); - } - else { - shader.uniforms.uMapCoord = uv.mapCoord.toArray(true); - shader.uniforms.uClampFrame = uv.uClampFrame; - shader.uniforms.uClampOffset = uv.uClampOffset; - } - shader.uniforms.uTransform = tempMat.toArray(true); - shader.uniforms.uColor = utils.premultiplyTintToRgba(ts.tint, ts.worldAlpha, shader.uniforms.uColor, baseTex.premultiplyAlpha); - shader.uniforms.translationMatrix = ts.transform.worldTransform.toArray(true); - shader.uniforms.uSampler = tex; - renderer.shader.bind(shader, false); - renderer.geometry.bind(quad, undefined); - renderer.state.setBlendMode(utils.correctBlendMode(ts.blendMode, baseTex.premultiplyAlpha)); - renderer.geometry.draw(PIXI.DRAW_MODES.TRIANGLES, 6, 0); - }; - return TilingSprite2dRenderer; - }(PIXI.ObjectRenderer)); - pixi_projection.TilingSprite2dRenderer = TilingSprite2dRenderer; - PIXI.Renderer.registerPlugin('tilingSprite2d', TilingSprite2dRenderer); -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - PIXI.systems.MaskSystem.prototype.pushSpriteMask = function (target, maskData) { - var alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex]; - if (!alphaMaskFilter) { - alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex] = [new pixi_projection.SpriteMaskFilter2d(maskData)]; - } - alphaMaskFilter[0].resolution = this.renderer.resolution; - alphaMaskFilter[0].maskSprite = maskData; - target.filterArea = maskData.getBounds(true); - this.renderer.filter.push(target, alphaMaskFilter); - this.alphaMaskIndex++; - }; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var spriteMaskVert = "\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 otherMatrix;\n\nvarying vec3 vMaskCoord;\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n\tgl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n\tvTextureCoord = aTextureCoord;\n\tvMaskCoord = otherMatrix * vec3( aTextureCoord, 1.0);\n}\n"; - var spriteMaskFrag = "\nvarying vec3 vMaskCoord;\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform sampler2D mask;\nuniform float alpha;\nuniform vec4 maskClamp;\n\nvoid main(void)\n{\n vec2 uv = vMaskCoord.xy / vMaskCoord.z;\n \n float clip = step(3.5,\n step(maskClamp.x, uv.x) +\n step(maskClamp.y, uv.y) +\n step(uv.x, maskClamp.z) +\n step(uv.y, maskClamp.w));\n\n vec4 original = texture2D(uSampler, vTextureCoord);\n vec4 masky = texture2D(mask, uv);\n \n original *= (masky.r * masky.a * alpha * clip);\n\n gl_FragColor = original;\n}\n"; - var tempMat = new pixi_projection.Matrix2d(); - var SpriteMaskFilter2d = (function (_super) { - __extends(SpriteMaskFilter2d, _super); - function SpriteMaskFilter2d(sprite) { - var _this = _super.call(this, spriteMaskVert, spriteMaskFrag) || this; - _this.maskMatrix = new pixi_projection.Matrix2d(); - sprite.renderable = false; - _this.maskSprite = sprite; - return _this; - } - SpriteMaskFilter2d.prototype.apply = function (filterManager, input, output, clear) { - var maskSprite = this.maskSprite; - var tex = this.maskSprite.texture; - if (!tex.valid) { - return; - } - if (!tex.uvMatrix) { - tex.uvMatrix = new PIXI.TextureMatrix(tex, 0.0); - } - tex.uvMatrix.update(); - this.uniforms.mask = maskSprite.texture; - this.uniforms.otherMatrix = SpriteMaskFilter2d.calculateSpriteMatrix(input, this.maskMatrix, maskSprite) - .prepend(tex.uvMatrix.mapCoord); - this.uniforms.alpha = maskSprite.worldAlpha; - this.uniforms.maskClamp = tex.uvMatrix.uClampFrame; - filterManager.applyFilter(this, input, output, clear); - }; - SpriteMaskFilter2d.calculateSpriteMatrix = function (input, mappedMatrix, sprite) { - var proj = sprite.proj; - var filterArea = input.filterFrame; - var worldTransform = proj && !proj._affine ? proj.world.copyTo2dOr3d(tempMat) : tempMat.copyFrom(sprite.transform.worldTransform); - var texture = sprite.texture.orig; - mappedMatrix.set(input.width, 0, 0, input.height, filterArea.x, filterArea.y); - worldTransform.invert(); - mappedMatrix.setToMult(worldTransform, mappedMatrix); - mappedMatrix.scaleAndTranslate(1.0 / texture.width, 1.0 / texture.height, sprite.anchor.x, sprite.anchor.y); - return mappedMatrix; - }; - return SpriteMaskFilter2d; - }(PIXI.Filter)); - pixi_projection.SpriteMaskFilter2d = SpriteMaskFilter2d; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - function container3dWorldTransform() { - return this.proj.affine ? this.transform.worldTransform : this.proj.world; - } - pixi_projection.container3dWorldTransform = container3dWorldTransform; - var Container3d = (function (_super) { - __extends(Container3d, _super); - function Container3d() { - var _this = _super.call(this) || this; - _this.proj = new pixi_projection.Projection3d(_this.transform); - return _this; - } - Container3d.prototype.isFrontFace = function (forceUpdate) { - if (forceUpdate === void 0) { forceUpdate = false; } - if (forceUpdate) { - this._recursivePostUpdateTransform(); - this.displayObjectUpdateTransform(); - } - var mat = this.proj.world.mat4; - var dx1 = mat[0] * mat[15] - mat[3] * mat[12]; - var dy1 = mat[1] * mat[15] - mat[3] * mat[13]; - var dx2 = mat[4] * mat[15] - mat[7] * mat[12]; - var dy2 = mat[5] * mat[15] - mat[7] * mat[13]; - return dx1 * dy2 - dx2 * dy1 > 0; - }; - Container3d.prototype.getDepth = function (forceUpdate) { - if (forceUpdate === void 0) { forceUpdate = false; } - if (forceUpdate) { - this._recursivePostUpdateTransform(); - this.displayObjectUpdateTransform(); - } - var mat4 = this.proj.world.mat4; - return mat4[14] / mat4[15]; - }; - Container3d.prototype.toLocal = function (position, from, point, skipUpdate, step) { - if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } - if (from) { - position = from.toGlobal(position, point, skipUpdate); - } - if (!skipUpdate) { - this._recursivePostUpdateTransform(); - } - if (step === pixi_projection.TRANSFORM_STEP.ALL) { - if (!skipUpdate) { - this.displayObjectUpdateTransform(); - } - if (this.proj.affine) { - return this.transform.worldTransform.applyInverse(position, point); - } - return this.proj.world.applyInverse(position, point); - } - if (this.parent) { - point = this.parent.worldTransform.applyInverse(position, point); - } - else { - point.copyFrom(position); - } - if (step === pixi_projection.TRANSFORM_STEP.NONE) { - return point; - } - point = this.transform.localTransform.applyInverse(point, point); - if (step === pixi_projection.TRANSFORM_STEP.PROJ && this.proj.cameraMode) { - point = this.proj.cameraMatrix.applyInverse(point, point); - } - return point; - }; - Object.defineProperty(Container3d.prototype, "worldTransform", { - get: function () { - return this.proj.affine ? this.transform.worldTransform : this.proj.world; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Container3d.prototype, "position3d", { - get: function () { - return this.proj.position; - }, - set: function (value) { - this.proj.position.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Container3d.prototype, "scale3d", { - get: function () { - return this.proj.scale; - }, - set: function (value) { - this.proj.scale.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Container3d.prototype, "euler", { - get: function () { - return this.proj.euler; - }, - set: function (value) { - this.proj.euler.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Container3d.prototype, "pivot3d", { - get: function () { - return this.proj.pivot; - }, - set: function (value) { - this.proj.pivot.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - return Container3d; - }(PIXI.Container)); - pixi_projection.Container3d = Container3d; - pixi_projection.container3dToLocal = Container3d.prototype.toLocal; - pixi_projection.container3dGetDepth = Container3d.prototype.getDepth; - pixi_projection.container3dIsFrontFace = Container3d.prototype.isFrontFace; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var Camera3d = (function (_super) { - __extends(Camera3d, _super); - function Camera3d() { - var _this = _super.call(this) || this; - _this._far = 0; - _this._near = 0; - _this._focus = 0; - _this._orthographic = false; - _this.proj.cameraMode = true; - _this.setPlanes(400, 10, 10000, false); - return _this; - } - Object.defineProperty(Camera3d.prototype, "far", { - get: function () { - return this._far; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Camera3d.prototype, "near", { - get: function () { - return this._near; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Camera3d.prototype, "focus", { - get: function () { - return this._focus; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Camera3d.prototype, "ortographic", { - get: function () { - return this._orthographic; - }, - enumerable: true, - configurable: true - }); - Camera3d.prototype.setPlanes = function (focus, near, far, orthographic) { - if (near === void 0) { near = 10; } - if (far === void 0) { far = 10000; } - if (orthographic === void 0) { orthographic = false; } - this._focus = focus; - this._near = near; - this._far = far; - this._orthographic = orthographic; - var proj = this.proj; - var mat4 = proj.cameraMatrix.mat4; - proj._projID++; - mat4[10] = 1.0 / (far - near); - mat4[14] = (focus - near) / (far - near); - if (this._orthographic) { - mat4[11] = 0; - } - else { - mat4[11] = 1.0 / focus; - } - }; - return Camera3d; - }(pixi_projection.Container3d)); - pixi_projection.Camera3d = Camera3d; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var Euler = (function () { - function Euler(x, y, z) { - this._quatUpdateId = -1; - this._quatDirtyId = 0; - this._sign = 1; - this._x = x || 0; - this._y = y || 0; - this._z = z || 0; - this.quaternion = new Float64Array(4); - this.quaternion[3] = 1; - this.update(); - } - Object.defineProperty(Euler.prototype, "x", { - get: function () { - return this._x; - }, - set: function (value) { - if (this._x !== value) { - this._x = value; - this._quatDirtyId++; - } - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Euler.prototype, "y", { - get: function () { - return this._y; - }, - set: function (value) { - if (this._y !== value) { - this._y = value; - this._quatDirtyId++; - } - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Euler.prototype, "z", { - get: function () { - return this._z; - }, - set: function (value) { - if (this._z !== value) { - this._z = value; - this._quatDirtyId++; - } - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Euler.prototype, "pitch", { - get: function () { - return this._x; - }, - set: function (value) { - if (this._x !== value) { - this._x = value; - this._quatDirtyId++; - } - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Euler.prototype, "yaw", { - get: function () { - return this._y; - }, - set: function (value) { - if (this._y !== value) { - this._y = value; - this._quatDirtyId++; - } - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Euler.prototype, "roll", { - get: function () { - return this._z; - }, - set: function (value) { - if (this._z !== value) { - this._z = value; - this._quatDirtyId++; - } - }, - enumerable: true, - configurable: true - }); - Euler.prototype.set = function (x, y, z) { - var _x = x || 0; - var _y = y || 0; - var _z = z || 0; - if (this._x !== _x || this._y !== _y || this._z !== _z) { - this._x = _x; - this._y = _y; - this._z = _z; - this._quatDirtyId++; - } - }; - ; - Euler.prototype.copyFrom = function (euler) { - var _x = euler.x; - var _y = euler.y; - var _z = euler.z; - if (this._x !== _x || this._y !== _y || this._z !== _z) { - this._x = _x; - this._y = _y; - this._z = _z; - this._quatDirtyId++; - } - }; - Euler.prototype.copyTo = function (p) { - p.set(this._x, this._y, this._z); - return p; - }; - Euler.prototype.equals = function (euler) { - return this._x === euler.x - && this._y === euler.y - && this._z === euler.z; - }; - Euler.prototype.clone = function () { - return new Euler(this._x, this._y, this._z); - }; - Euler.prototype.update = function () { - if (this._quatUpdateId === this._quatDirtyId) { - return false; - } - this._quatUpdateId = this._quatDirtyId; - var c1 = Math.cos(this._x / 2); - var c2 = Math.cos(this._y / 2); - var c3 = Math.cos(this._z / 2); - var s = this._sign; - var s1 = s * Math.sin(this._x / 2); - var s2 = s * Math.sin(this._y / 2); - var s3 = s * Math.sin(this._z / 2); - var q = this.quaternion; - q[0] = s1 * c2 * c3 + c1 * s2 * s3; - q[1] = c1 * s2 * c3 - s1 * c2 * s3; - q[2] = c1 * c2 * s3 + s1 * s2 * c3; - q[3] = c1 * c2 * c3 - s1 * s2 * s3; - return true; - }; - return Euler; - }()); - pixi_projection.Euler = Euler; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var mat4id = [1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1]; - var Matrix3d = (function () { - function Matrix3d(backingArray) { - this.floatArray = null; - this._dirtyId = 0; - this._updateId = -1; - this._mat4inv = null; - this.cacheInverse = false; - this.mat4 = new Float64Array(backingArray || mat4id); - } - Object.defineProperty(Matrix3d.prototype, "a", { - get: function () { - return this.mat4[0] / this.mat4[15]; - }, - set: function (value) { - this.mat4[0] = value * this.mat4[15]; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Matrix3d.prototype, "b", { - get: function () { - return this.mat4[1] / this.mat4[15]; - }, - set: function (value) { - this.mat4[1] = value * this.mat4[15]; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Matrix3d.prototype, "c", { - get: function () { - return this.mat4[4] / this.mat4[15]; - }, - set: function (value) { - this.mat4[4] = value * this.mat4[15]; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Matrix3d.prototype, "d", { - get: function () { - return this.mat4[5] / this.mat4[15]; - }, - set: function (value) { - this.mat4[5] = value * this.mat4[15]; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Matrix3d.prototype, "tx", { - get: function () { - return this.mat4[12] / this.mat4[15]; - }, - set: function (value) { - this.mat4[12] = value * this.mat4[15]; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Matrix3d.prototype, "ty", { - get: function () { - return this.mat4[13] / this.mat4[15]; - }, - set: function (value) { - this.mat4[13] = value * this.mat4[15]; - }, - enumerable: true, - configurable: true - }); - Matrix3d.prototype.set = function (a, b, c, d, tx, ty) { - var mat4 = this.mat4; - mat4[0] = a; - mat4[1] = b; - mat4[2] = 0; - mat4[3] = 0; - mat4[4] = c; - mat4[5] = d; - mat4[6] = 0; - mat4[7] = 0; - mat4[8] = 0; - mat4[9] = 0; - mat4[10] = 1; - mat4[11] = 0; - mat4[12] = tx; - mat4[13] = ty; - mat4[14] = 0; - mat4[15] = 1; - return this; - }; - Matrix3d.prototype.toArray = function (transpose, out) { - if (!this.floatArray) { - this.floatArray = new Float32Array(9); - } - var array = out || this.floatArray; - var mat3 = this.mat4; - if (transpose) { - array[0] = mat3[0]; - array[1] = mat3[1]; - array[2] = mat3[3]; - array[3] = mat3[4]; - array[4] = mat3[5]; - array[5] = mat3[7]; - array[6] = mat3[12]; - array[7] = mat3[13]; - array[8] = mat3[15]; - } - else { - array[0] = mat3[0]; - array[1] = mat3[4]; - array[2] = mat3[12]; - array[3] = mat3[2]; - array[4] = mat3[6]; - array[5] = mat3[13]; - array[6] = mat3[3]; - array[7] = mat3[7]; - array[8] = mat3[15]; - } - return array; - }; - Matrix3d.prototype.setToTranslation = function (tx, ty, tz) { - var mat4 = this.mat4; - mat4[0] = 1; - mat4[1] = 0; - mat4[2] = 0; - mat4[3] = 0; - mat4[4] = 0; - mat4[5] = 1; - mat4[6] = 0; - mat4[7] = 0; - mat4[8] = 0; - mat4[9] = 0; - mat4[10] = 1; - mat4[11] = 0; - mat4[12] = tx; - mat4[13] = ty; - mat4[14] = tz; - mat4[15] = 1; - }; - Matrix3d.prototype.setToRotationTranslationScale = function (quat, tx, ty, tz, sx, sy, sz) { - var out = this.mat4; - var x = quat[0], y = quat[1], z = quat[2], w = quat[3]; - var x2 = x + x; - var y2 = y + y; - var z2 = z + z; - var xx = x * x2; - var xy = x * y2; - var xz = x * z2; - var yy = y * y2; - var yz = y * z2; - var zz = z * z2; - var wx = w * x2; - var wy = w * y2; - var wz = w * z2; - out[0] = (1 - (yy + zz)) * sx; - out[1] = (xy + wz) * sx; - out[2] = (xz - wy) * sx; - out[3] = 0; - out[4] = (xy - wz) * sy; - out[5] = (1 - (xx + zz)) * sy; - out[6] = (yz + wx) * sy; - out[7] = 0; - out[8] = (xz + wy) * sz; - out[9] = (yz - wx) * sz; - out[10] = (1 - (xx + yy)) * sz; - out[11] = 0; - out[12] = tx; - out[13] = ty; - out[14] = tz; - out[15] = 1; - return out; - }; - Matrix3d.prototype.apply = function (pos, newPos) { - newPos = newPos || new pixi_projection.Point3d(); - var mat4 = this.mat4; - var x = pos.x; - var y = pos.y; - var z = pos.z || 0; - var w = 1.0 / (mat4[3] * x + mat4[7] * y + mat4[11] * z + mat4[15]); - newPos.x = w * (mat4[0] * x + mat4[4] * y + mat4[8] * z + mat4[12]); - newPos.y = w * (mat4[1] * x + mat4[5] * y + mat4[9] * z + mat4[13]); - newPos.z = w * (mat4[2] * x + mat4[6] * y + mat4[10] * z + mat4[14]); - return newPos; - }; - Matrix3d.prototype.translate = function (tx, ty, tz) { - var a = this.mat4; - a[12] = a[0] * tx + a[4] * ty + a[8] * tz + a[12]; - a[13] = a[1] * tx + a[5] * ty + a[9] * tz + a[13]; - a[14] = a[2] * tx + a[6] * ty + a[10] * tz + a[14]; - a[15] = a[3] * tx + a[7] * ty + a[11] * tz + a[15]; - return this; - }; - Matrix3d.prototype.scale = function (x, y, z) { - var mat4 = this.mat4; - mat4[0] *= x; - mat4[1] *= x; - mat4[2] *= x; - mat4[3] *= x; - mat4[4] *= y; - mat4[5] *= y; - mat4[6] *= y; - mat4[7] *= y; - if (z !== undefined) { - mat4[8] *= z; - mat4[9] *= z; - mat4[10] *= z; - mat4[11] *= z; - } - return this; - }; - Matrix3d.prototype.scaleAndTranslate = function (scaleX, scaleY, scaleZ, tx, ty, tz) { - var mat4 = this.mat4; - mat4[0] = scaleX * mat4[0] + tx * mat4[3]; - mat4[1] = scaleY * mat4[1] + ty * mat4[3]; - mat4[2] = scaleZ * mat4[2] + tz * mat4[3]; - mat4[4] = scaleX * mat4[4] + tx * mat4[7]; - mat4[5] = scaleY * mat4[5] + ty * mat4[7]; - mat4[6] = scaleZ * mat4[6] + tz * mat4[7]; - mat4[8] = scaleX * mat4[8] + tx * mat4[11]; - mat4[9] = scaleY * mat4[9] + ty * mat4[11]; - mat4[10] = scaleZ * mat4[10] + tz * mat4[11]; - mat4[12] = scaleX * mat4[12] + tx * mat4[15]; - mat4[13] = scaleY * mat4[13] + ty * mat4[15]; - mat4[14] = scaleZ * mat4[14] + tz * mat4[15]; - }; - Matrix3d.prototype.applyInverse = function (pos, newPos) { - newPos = newPos || new pixi_projection.Point3d(); - if (!this._mat4inv) { - this._mat4inv = new Float64Array(16); - } - var mat4 = this._mat4inv; - var a = this.mat4; - var x = pos.x; - var y = pos.y; - var z = pos.z || 0; - if (!this.cacheInverse || this._updateId !== this._dirtyId) { - this._updateId = this._dirtyId; - Matrix3d.glMatrixMat4Invert(mat4, a); - } - var w1 = 1.0 / (mat4[3] * x + mat4[7] * y + mat4[11] * z + mat4[15]); - var x1 = w1 * (mat4[0] * x + mat4[4] * y + mat4[8] * z + mat4[12]); - var y1 = w1 * (mat4[1] * x + mat4[5] * y + mat4[9] * z + mat4[13]); - var z1 = w1 * (mat4[2] * x + mat4[6] * y + mat4[10] * z + mat4[14]); - z += 1.0; - var w2 = 1.0 / (mat4[3] * x + mat4[7] * y + mat4[11] * z + mat4[15]); - var x2 = w2 * (mat4[0] * x + mat4[4] * y + mat4[8] * z + mat4[12]); - var y2 = w2 * (mat4[1] * x + mat4[5] * y + mat4[9] * z + mat4[13]); - var z2 = w2 * (mat4[2] * x + mat4[6] * y + mat4[10] * z + mat4[14]); - if (Math.abs(z1 - z2) < 1e-10) { - newPos.set(NaN, NaN, 0); - } - var alpha = (0 - z1) / (z2 - z1); - newPos.set((x2 - x1) * alpha + x1, (y2 - y1) * alpha + y1, 0.0); - return newPos; - }; - Matrix3d.prototype.invert = function () { - Matrix3d.glMatrixMat4Invert(this.mat4, this.mat4); - return this; - }; - Matrix3d.prototype.invertCopyTo = function (matrix) { - if (!this._mat4inv) { - this._mat4inv = new Float64Array(16); - } - var mat4 = this._mat4inv; - var a = this.mat4; - if (!this.cacheInverse || this._updateId !== this._dirtyId) { - this._updateId = this._dirtyId; - Matrix3d.glMatrixMat4Invert(mat4, a); - } - matrix.mat4.set(mat4); - }; - Matrix3d.prototype.identity = function () { - var mat3 = this.mat4; - mat3[0] = 1; - mat3[1] = 0; - mat3[2] = 0; - mat3[3] = 0; - mat3[4] = 0; - mat3[5] = 1; - mat3[6] = 0; - mat3[7] = 0; - mat3[8] = 0; - mat3[9] = 0; - mat3[10] = 1; - mat3[11] = 0; - mat3[12] = 0; - mat3[13] = 0; - mat3[14] = 0; - mat3[15] = 1; - return this; - }; - Matrix3d.prototype.clone = function () { - return new Matrix3d(this.mat4); - }; - Matrix3d.prototype.copyTo3d = function (matrix) { - var mat3 = this.mat4; - var ar2 = matrix.mat4; - ar2[0] = mat3[0]; - ar2[1] = mat3[1]; - ar2[2] = mat3[2]; - ar2[3] = mat3[3]; - ar2[4] = mat3[4]; - ar2[5] = mat3[5]; - ar2[6] = mat3[6]; - ar2[7] = mat3[7]; - ar2[8] = mat3[8]; - return matrix; - }; - Matrix3d.prototype.copyTo2d = function (matrix) { - var mat3 = this.mat4; - var ar2 = matrix.mat3; - ar2[0] = mat3[0]; - ar2[1] = mat3[1]; - ar2[2] = mat3[3]; - ar2[3] = mat3[4]; - ar2[4] = mat3[5]; - ar2[5] = mat3[7]; - ar2[6] = mat3[12]; - ar2[7] = mat3[13]; - ar2[8] = mat3[15]; - return matrix; - }; - Matrix3d.prototype.copyTo2dOr3d = function (matrix) { - if (matrix instanceof pixi_projection.Matrix2d) { - return this.copyTo2d(matrix); - } - else { - return this.copyTo3d(matrix); - } - }; - Matrix3d.prototype.copyTo = function (matrix, affine, preserveOrientation) { - var mat3 = this.mat4; - var d = 1.0 / mat3[15]; - var tx = mat3[12] * d, ty = mat3[13] * d; - matrix.a = (mat3[0] - mat3[3] * tx) * d; - matrix.b = (mat3[1] - mat3[3] * ty) * d; - matrix.c = (mat3[4] - mat3[7] * tx) * d; - matrix.d = (mat3[5] - mat3[7] * ty) * d; - matrix.tx = tx; - matrix.ty = ty; - if (affine >= 2) { - var D = matrix.a * matrix.d - matrix.b * matrix.c; - if (!preserveOrientation) { - D = Math.abs(D); - } - if (affine === pixi_projection.AFFINE.POINT) { - if (D > 0) { - D = 1; - } - else - D = -1; - matrix.a = D; - matrix.b = 0; - matrix.c = 0; - matrix.d = D; - } - else if (affine === pixi_projection.AFFINE.AXIS_X) { - D /= Math.sqrt(matrix.b * matrix.b + matrix.d * matrix.d); - matrix.c = 0; - matrix.d = D; - } - else if (affine === pixi_projection.AFFINE.AXIS_Y) { - D /= Math.sqrt(matrix.a * matrix.a + matrix.c * matrix.c); - matrix.a = D; - matrix.c = 0; - } - } - return matrix; - }; - Matrix3d.prototype.copyFrom = function (matrix) { - var mat3 = this.mat4; - mat3[0] = matrix.a; - mat3[1] = matrix.b; - mat3[2] = 0; - mat3[3] = 0; - mat3[4] = matrix.c; - mat3[5] = matrix.d; - mat3[6] = 0; - mat3[7] = 0; - mat3[8] = 0; - mat3[9] = 0; - mat3[10] = 1; - mat3[11] = 0; - mat3[12] = matrix.tx; - mat3[13] = matrix.ty; - mat3[14] = 0; - mat3[15] = 1; - this._dirtyId++; - return this; - }; - Matrix3d.prototype.setToMultLegacy = function (pt, lt) { - var out = this.mat4; - var b = lt.mat4; - var a00 = pt.a, a01 = pt.b, a10 = pt.c, a11 = pt.d, a30 = pt.tx, a31 = pt.ty; - var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; - out[0] = b0 * a00 + b1 * a10 + b3 * a30; - out[1] = b0 * a01 + b1 * a11 + b3 * a31; - out[2] = b2; - out[3] = b3; - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - out[4] = b0 * a00 + b1 * a10 + b3 * a30; - out[5] = b0 * a01 + b1 * a11 + b3 * a31; - out[6] = b2; - out[7] = b3; - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - out[8] = b0 * a00 + b1 * a10 + b3 * a30; - out[9] = b0 * a01 + b1 * a11 + b3 * a31; - out[10] = b2; - out[11] = b3; - b0 = b[12]; - b1 = b[13]; - b2 = b[14]; - b3 = b[15]; - out[12] = b0 * a00 + b1 * a10 + b3 * a30; - out[13] = b0 * a01 + b1 * a11 + b3 * a31; - out[14] = b2; - out[15] = b3; - this._dirtyId++; - return this; - }; - Matrix3d.prototype.setToMultLegacy2 = function (pt, lt) { - var out = this.mat4; - var a = pt.mat4; - var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3]; - var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7]; - var b00 = lt.a, b01 = lt.b, b10 = lt.c, b11 = lt.d, b30 = lt.tx, b31 = lt.ty; - out[0] = b00 * a00 + b01 * a10; - out[1] = b00 * a01 + b01 * a11; - out[2] = b00 * a02 + b01 * a12; - out[3] = b00 * a03 + b01 * a13; - out[4] = b10 * a00 + b11 * a10; - out[5] = b10 * a01 + b11 * a11; - out[6] = b10 * a02 + b11 * a12; - out[7] = b10 * a03 + b11 * a13; - out[8] = a[8]; - out[9] = a[9]; - out[10] = a[10]; - out[11] = a[11]; - out[12] = b30 * a00 + b31 * a10 + a[12]; - out[13] = b30 * a01 + b31 * a11 + a[13]; - out[14] = b30 * a02 + b31 * a12 + a[14]; - out[15] = b30 * a03 + b31 * a13 + a[15]; - this._dirtyId++; - return this; - }; - Matrix3d.prototype.setToMult = function (pt, lt) { - Matrix3d.glMatrixMat4Multiply(this.mat4, pt.mat4, lt.mat4); - this._dirtyId++; - return this; - }; - Matrix3d.prototype.prepend = function (lt) { - if (lt.mat4) { - this.setToMult(lt, this); - } - else { - this.setToMultLegacy(lt, this); - } - }; - Matrix3d.glMatrixMat4Invert = function (out, a) { - var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3]; - var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7]; - var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11]; - var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; - var b00 = a00 * a11 - a01 * a10; - var b01 = a00 * a12 - a02 * a10; - var b02 = a00 * a13 - a03 * a10; - var b03 = a01 * a12 - a02 * a11; - var b04 = a01 * a13 - a03 * a11; - var b05 = a02 * a13 - a03 * a12; - var b06 = a20 * a31 - a21 * a30; - var b07 = a20 * a32 - a22 * a30; - var b08 = a20 * a33 - a23 * a30; - var b09 = a21 * a32 - a22 * a31; - var b10 = a21 * a33 - a23 * a31; - var b11 = a22 * a33 - a23 * a32; - var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; - if (!det) { - return null; - } - det = 1.0 / det; - out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det; - out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det; - out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det; - out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det; - out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det; - out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det; - out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det; - out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det; - out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det; - out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det; - out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det; - out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det; - out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det; - out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det; - out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det; - out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det; - return out; - }; - Matrix3d.glMatrixMat4Multiply = function (out, a, b) { - var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3]; - var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7]; - var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11]; - var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; - var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; - out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; - out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; - out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; - out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; - out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; - out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; - out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; - out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; - out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; - out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; - b0 = b[12]; - b1 = b[13]; - b2 = b[14]; - b3 = b[15]; - out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; - out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; - out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; - out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; - return out; - }; - Matrix3d.IDENTITY = new Matrix3d(); - Matrix3d.TEMP_MATRIX = new Matrix3d(); - return Matrix3d; - }()); - pixi_projection.Matrix3d = Matrix3d; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var ObservableEuler = (function () { - function ObservableEuler(cb, scope, x, y, z) { - this.cb = cb; - this.scope = scope; - this._quatUpdateId = -1; - this._quatDirtyId = 0; - this._sign = 1; - this._x = x || 0; - this._y = y || 0; - this._z = z || 0; - this.quaternion = new Float64Array(4); - this.quaternion[3] = 1; - this.update(); - } - Object.defineProperty(ObservableEuler.prototype, "x", { - get: function () { - return this._x; - }, - set: function (value) { - if (this._x !== value) { - this._x = value; - this._quatDirtyId++; - this.cb.call(this.scope); - } - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ObservableEuler.prototype, "y", { - get: function () { - return this._y; - }, - set: function (value) { - if (this._y !== value) { - this._y = value; - this._quatDirtyId++; - this.cb.call(this.scope); - } - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ObservableEuler.prototype, "z", { - get: function () { - return this._z; - }, - set: function (value) { - if (this._z !== value) { - this._z = value; - this._quatDirtyId++; - this.cb.call(this.scope); - } - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ObservableEuler.prototype, "pitch", { - get: function () { - return this._x; - }, - set: function (value) { - if (this._x !== value) { - this._x = value; - this._quatDirtyId++; - this.cb.call(this.scope); - } - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ObservableEuler.prototype, "yaw", { - get: function () { - return this._y; - }, - set: function (value) { - if (this._y !== value) { - this._y = value; - this._quatDirtyId++; - this.cb.call(this.scope); - } - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ObservableEuler.prototype, "roll", { - get: function () { - return this._z; - }, - set: function (value) { - if (this._z !== value) { - this._z = value; - this._quatDirtyId++; - this.cb.call(this.scope); - } - }, - enumerable: true, - configurable: true - }); - ObservableEuler.prototype.set = function (x, y, z) { - var _x = x || 0; - var _y = y || 0; - var _z = z || 0; - if (this._x !== _x || this._y !== _y || this._z !== _z) { - this._x = _x; - this._y = _y; - this._z = _z; - this._quatDirtyId++; - this.cb.call(this.scope); - } - }; - ; - ObservableEuler.prototype.copyFrom = function (euler) { - var _x = euler.x; - var _y = euler.y; - var _z = euler.z; - if (this._x !== _x || this._y !== _y || this._z !== _z) { - this._x = _x; - this._y = _y; - this._z = _z; - this._quatDirtyId++; - this.cb.call(this.scope); - } - }; - ObservableEuler.prototype.copyTo = function (p) { - p.set(this._x, this._y, this._z); - return p; - }; - ObservableEuler.prototype.equals = function (euler) { - return this._x === euler.x - && this._y === euler.y - && this._z === euler.z; - }; - ObservableEuler.prototype.clone = function () { - return new pixi_projection.Euler(this._x, this._y, this._z); - }; - ObservableEuler.prototype.update = function () { - if (this._quatUpdateId === this._quatDirtyId) { - return false; - } - this._quatUpdateId = this._quatDirtyId; - var c1 = Math.cos(this._x / 2); - var c2 = Math.cos(this._y / 2); - var c3 = Math.cos(this._z / 2); - var s = this._sign; - var s1 = s * Math.sin(this._x / 2); - var s2 = s * Math.sin(this._y / 2); - var s3 = s * Math.sin(this._z / 2); - var q = this.quaternion; - q[0] = s1 * c2 * c3 + c1 * s2 * s3; - q[1] = c1 * s2 * c3 - s1 * c2 * s3; - q[2] = c1 * c2 * s3 + s1 * s2 * c3; - q[3] = c1 * c2 * c3 - s1 * s2 * s3; - return true; - }; - return ObservableEuler; - }()); - pixi_projection.ObservableEuler = ObservableEuler; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - PIXI.ObservablePoint.prototype.copy = function (point) { - }; - var Point3d = (function (_super) { - __extends(Point3d, _super); - function Point3d(x, y, z) { - var _this = _super.call(this, x, y) || this; - _this.z = z; - return _this; - } - Point3d.prototype.set = function (x, y, z) { - this.x = x || 0; - this.y = (y === undefined) ? this.x : (y || 0); - this.z = (y === undefined) ? this.x : (z || 0); - }; - Point3d.prototype.copyFrom = function (p) { - this.set(p.x, p.y, p.z || 0); - return this; - }; - Point3d.prototype.copyTo = function (p) { - p.set(this.x, this.y, this.z); - return p; - }; - return Point3d; - }(PIXI.Point)); - pixi_projection.Point3d = Point3d; - var ObservablePoint3d = (function (_super) { - __extends(ObservablePoint3d, _super); - function ObservablePoint3d() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this._z = 0; - return _this; - } - Object.defineProperty(ObservablePoint3d.prototype, "z", { - get: function () { - return this._z; - }, - set: function (value) { - if (this._z !== value) { - this._z = value; - this.cb.call(this.scope); - } - }, - enumerable: true, - configurable: true - }); - ObservablePoint3d.prototype.set = function (x, y, z) { - var _x = x || 0; - var _y = (y === undefined) ? _x : (y || 0); - var _z = (y === undefined) ? _x : (z || 0); - if (this._x !== _x || this._y !== _y || this._z !== _z) { - this._x = _x; - this._y = _y; - this._z = _z; - this.cb.call(this.scope); - } - }; - ObservablePoint3d.prototype.copyFrom = function (p) { - this.set(p.x, p.y, p.z || 0); - return this; - }; - ObservablePoint3d.prototype.copyTo = function (p) { - p.set(this._x, this._y, this._z); - return p; - }; - return ObservablePoint3d; - }(PIXI.ObservablePoint)); - pixi_projection.ObservablePoint3d = ObservablePoint3d; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var tempMat = new pixi_projection.Matrix3d(); - var Projection3d = (function (_super) { - __extends(Projection3d, _super); - function Projection3d(legacy, enable) { - var _this = _super.call(this, legacy, enable) || this; - _this.cameraMatrix = null; - _this._cameraMode = false; - _this.position = new pixi_projection.ObservablePoint3d(_this.onChange, _this, 0, 0); - _this.scale = new pixi_projection.ObservablePoint3d(_this.onChange, _this, 1, 1); - _this.euler = new pixi_projection.ObservableEuler(_this.onChange, _this, 0, 0, 0); - _this.pivot = new pixi_projection.ObservablePoint3d(_this.onChange, _this, 0, 0); - _this.local = new pixi_projection.Matrix3d(); - _this.world = new pixi_projection.Matrix3d(); - _this.local.cacheInverse = true; - _this.world.cacheInverse = true; - _this.position._z = 0; - _this.scale._z = 1; - _this.pivot._z = 0; - return _this; - } - Object.defineProperty(Projection3d.prototype, "cameraMode", { - get: function () { - return this._cameraMode; - }, - set: function (value) { - if (this._cameraMode === value) { - return; - } - this._cameraMode = value; - this.euler._sign = this._cameraMode ? -1 : 1; - this.euler._quatDirtyId++; - if (value) { - this.cameraMatrix = new pixi_projection.Matrix3d(); - } - }, - enumerable: true, - configurable: true - }); - Projection3d.prototype.onChange = function () { - this._projID++; - }; - Projection3d.prototype.clear = function () { - if (this.cameraMatrix) { - this.cameraMatrix.identity(); - } - this.position.set(0, 0, 0); - this.scale.set(1, 1, 1); - this.euler.set(0, 0, 0); - this.pivot.set(0, 0, 0); - _super.prototype.clear.call(this); - }; - Projection3d.prototype.updateLocalTransform = function (lt) { - if (this._projID === 0) { - this.local.copyFrom(lt); - return; - } - var matrix = this.local; - var euler = this.euler; - var pos = this.position; - var scale = this.scale; - var pivot = this.pivot; - euler.update(); - if (!this.cameraMode) { - matrix.setToRotationTranslationScale(euler.quaternion, pos._x, pos._y, pos._z, scale._x, scale._y, scale._z); - matrix.translate(-pivot._x, -pivot._y, -pivot._z); - matrix.setToMultLegacy(lt, matrix); - return; - } - matrix.setToMultLegacy(lt, this.cameraMatrix); - matrix.translate(pivot._x, pivot._y, pivot._z); - matrix.scale(1.0 / scale._x, 1.0 / scale._y, 1.0 / scale._z); - tempMat.setToRotationTranslationScale(euler.quaternion, 0, 0, 0, 1, 1, 1); - matrix.setToMult(matrix, tempMat); - matrix.translate(-pos._x, -pos._y, -pos._z); - this.local._dirtyId++; - }; - return Projection3d; - }(pixi_projection.LinearProjection)); - pixi_projection.Projection3d = Projection3d; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var Mesh3d2d = (function (_super) { - __extends(Mesh3d2d, _super); - function Mesh3d2d(geometry, shader, state, drawMode) { - var _this = _super.call(this, geometry, shader, state, drawMode) || this; - _this.vertexData2d = null; - _this.proj = new pixi_projection.Projection3d(_this.transform); - return _this; - } - Mesh3d2d.prototype.calculateVertices = function () { - if (this.proj._affine) { - this.vertexData2d = null; - _super.prototype.calculateVertices.call(this); - return; - } - var geometry = this.geometry; - var vertices = geometry.buffers[0].data; - var thisAny = this; - if (geometry.vertexDirtyId === thisAny.vertexDirty && thisAny._transformID === thisAny.transform._worldID) { - return; - } - thisAny._transformID = thisAny.transform._worldID; - if (thisAny.vertexData.length !== vertices.length) { - thisAny.vertexData = new Float32Array(vertices.length); - } - if (this.vertexData2d.length !== vertices.length * 3 / 2) { - this.vertexData2d = new Float32Array(vertices.length * 3); - } - var wt = this.proj.world.mat4; - var vertexData2d = this.vertexData2d; - var vertexData = thisAny.vertexData; - for (var i = 0; i < vertexData.length / 2; i++) { - var x = vertices[(i * 2)]; - var y = vertices[(i * 2) + 1]; - var xx = (wt[0] * x) + (wt[4] * y) + wt[12]; - var yy = (wt[1] * x) + (wt[5] * y) + wt[13]; - var ww = (wt[3] * x) + (wt[7] * y) + wt[15]; - vertexData2d[i * 3] = xx; - vertexData2d[i * 3 + 1] = yy; - vertexData2d[i * 3 + 2] = ww; - vertexData[(i * 2)] = xx / ww; - vertexData[(i * 2) + 1] = yy / ww; - } - thisAny.vertexDirty = geometry.vertexDirtyId; - }; - Object.defineProperty(Mesh3d2d.prototype, "worldTransform", { - get: function () { - return this.proj.affine ? this.transform.worldTransform : this.proj.world; - }, - enumerable: true, - configurable: true - }); - Mesh3d2d.prototype.toLocal = function (position, from, point, skipUpdate, step) { - if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } - return pixi_projection.container3dToLocal.call(this, position, from, point, skipUpdate, step); - }; - Mesh3d2d.prototype.isFrontFace = function (forceUpdate) { - return pixi_projection.container3dIsFrontFace.call(this, forceUpdate); - }; - Mesh3d2d.prototype.getDepth = function (forceUpdate) { - return pixi_projection.container3dGetDepth.call(this, forceUpdate); - }; - Object.defineProperty(Mesh3d2d.prototype, "position3d", { - get: function () { - return this.proj.position; - }, - set: function (value) { - this.proj.position.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Mesh3d2d.prototype, "scale3d", { - get: function () { - return this.proj.scale; - }, - set: function (value) { - this.proj.scale.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Mesh3d2d.prototype, "euler", { - get: function () { - return this.proj.euler; - }, - set: function (value) { - this.proj.euler.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Mesh3d2d.prototype, "pivot3d", { - get: function () { - return this.proj.pivot; - }, - set: function (value) { - this.proj.pivot.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - return Mesh3d2d; - }(PIXI.Mesh)); - pixi_projection.Mesh3d2d = Mesh3d2d; - Mesh3d2d.prototype._renderDefault = pixi_projection.Mesh2d.prototype._renderDefault; - var SimpleMesh3d2d = (function (_super) { - __extends(SimpleMesh3d2d, _super); - function SimpleMesh3d2d(texture, vertices, uvs, indices, drawMode) { - var _this = _super.call(this, new PIXI.MeshGeometry(vertices, uvs, indices), new PIXI.MeshMaterial(texture, { - program: PIXI.Program.from(pixi_projection.Mesh2d.defaultVertexShader, pixi_projection.Mesh2d.defaultFragmentShader), - pluginName: 'batch2d' - }), null, drawMode) || this; - _this.autoUpdate = true; - _this.geometry.getBuffer('aVertexPosition').static = false; - return _this; - } - Object.defineProperty(SimpleMesh3d2d.prototype, "vertices", { - get: function () { - return this.geometry.getBuffer('aVertexPosition').data; - }, - set: function (value) { - this.geometry.getBuffer('aVertexPosition').data = value; - }, - enumerable: true, - configurable: true - }); - SimpleMesh3d2d.prototype._render = function (renderer) { - if (this.autoUpdate) { - this.geometry.getBuffer('aVertexPosition').update(); - } - _super.prototype._render.call(this, renderer); - }; - return SimpleMesh3d2d; - }(Mesh3d2d)); - pixi_projection.SimpleMesh3d2d = SimpleMesh3d2d; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var Sprite3d = (function (_super) { - __extends(Sprite3d, _super); - function Sprite3d(texture) { - var _this = _super.call(this, texture) || this; - _this.vertexData2d = null; - _this.culledByFrustrum = false; - _this.trimmedCulledByFrustrum = false; - _this.proj = new pixi_projection.Projection3d(_this.transform); - _this.pluginName = 'batch2d'; - return _this; - } - Sprite3d.prototype.calculateVertices = function () { - var texture = this._texture; - if (this.proj._affine) { - this.vertexData2d = null; - _super.prototype.calculateVertices.call(this); - return; - } - if (!this.vertexData2d) { - this.vertexData2d = new Float32Array(12); - } - var wid = this.transform._worldID; - var tuid = texture._updateID; - if (this._transformID === wid && this._textureID === tuid) { - return; - } - if (this._textureID !== tuid) { - this.uvs = texture._uvs.uvsFloat32; - } - this._transformID = wid; - this._textureID = tuid; - var wt = this.proj.world.mat4; - var vertexData2d = this.vertexData2d; - var vertexData = this.vertexData; - var trim = texture.trim; - var orig = texture.orig; - var anchor = this._anchor; - var w0 = 0; - var w1 = 0; - var h0 = 0; - var h1 = 0; - if (trim) { - w1 = trim.x - (anchor._x * orig.width); - w0 = w1 + trim.width; - h1 = trim.y - (anchor._y * orig.height); - h0 = h1 + trim.height; - } - else { - w1 = -anchor._x * orig.width; - w0 = w1 + orig.width; - h1 = -anchor._y * orig.height; - h0 = h1 + orig.height; - } - var culled = false; - var z; - vertexData2d[0] = (wt[0] * w1) + (wt[4] * h1) + wt[12]; - vertexData2d[1] = (wt[1] * w1) + (wt[5] * h1) + wt[13]; - z = (wt[2] * w1) + (wt[6] * h1) + wt[14]; - vertexData2d[2] = (wt[3] * w1) + (wt[7] * h1) + wt[15]; - culled = culled || z < 0; - vertexData2d[3] = (wt[0] * w0) + (wt[4] * h1) + wt[12]; - vertexData2d[4] = (wt[1] * w0) + (wt[5] * h1) + wt[13]; - z = (wt[2] * w0) + (wt[6] * h1) + wt[14]; - vertexData2d[5] = (wt[3] * w0) + (wt[7] * h1) + wt[15]; - culled = culled || z < 0; - vertexData2d[6] = (wt[0] * w0) + (wt[4] * h0) + wt[12]; - vertexData2d[7] = (wt[1] * w0) + (wt[5] * h0) + wt[13]; - z = (wt[2] * w0) + (wt[6] * h0) + wt[14]; - vertexData2d[8] = (wt[3] * w0) + (wt[7] * h0) + wt[15]; - culled = culled || z < 0; - vertexData2d[9] = (wt[0] * w1) + (wt[4] * h0) + wt[12]; - vertexData2d[10] = (wt[1] * w1) + (wt[5] * h0) + wt[13]; - z = (wt[2] * w1) + (wt[6] * h0) + wt[14]; - vertexData2d[11] = (wt[3] * w1) + (wt[7] * h0) + wt[15]; - culled = culled || z < 0; - this.culledByFrustrum = culled; - vertexData[0] = vertexData2d[0] / vertexData2d[2]; - vertexData[1] = vertexData2d[1] / vertexData2d[2]; - vertexData[2] = vertexData2d[3] / vertexData2d[5]; - vertexData[3] = vertexData2d[4] / vertexData2d[5]; - vertexData[4] = vertexData2d[6] / vertexData2d[8]; - vertexData[5] = vertexData2d[7] / vertexData2d[8]; - vertexData[6] = vertexData2d[9] / vertexData2d[11]; - vertexData[7] = vertexData2d[10] / vertexData2d[11]; - }; - Sprite3d.prototype.calculateTrimmedVertices = function () { - if (this.proj._affine) { - _super.prototype.calculateTrimmedVertices.call(this); - return; - } - var wid = this.transform._worldID; - var tuid = this._texture._updateID; - if (!this.vertexTrimmedData) { - this.vertexTrimmedData = new Float32Array(8); - } - else if (this._transformTrimmedID === wid && this._textureTrimmedID === tuid) { - return; - } - this._transformTrimmedID = wid; - this._textureTrimmedID = tuid; - var texture = this._texture; - var vertexData = this.vertexTrimmedData; - var orig = texture.orig; - var anchor = this._anchor; - var wt = this.proj.world.mat4; - var w1 = -anchor._x * orig.width; - var w0 = w1 + orig.width; - var h1 = -anchor._y * orig.height; - var h0 = h1 + orig.height; - var culled = false; - var z; - var w = 1.0 / ((wt[3] * w1) + (wt[7] * h1) + wt[15]); - vertexData[0] = w * ((wt[0] * w1) + (wt[4] * h1) + wt[12]); - vertexData[1] = w * ((wt[1] * w1) + (wt[5] * h1) + wt[13]); - z = (wt[2] * w1) + (wt[6] * h1) + wt[14]; - culled = culled || z < 0; - w = 1.0 / ((wt[3] * w0) + (wt[7] * h1) + wt[15]); - vertexData[2] = w * ((wt[0] * w0) + (wt[4] * h1) + wt[12]); - vertexData[3] = w * ((wt[1] * w0) + (wt[5] * h1) + wt[13]); - z = (wt[2] * w0) + (wt[6] * h1) + wt[14]; - culled = culled || z < 0; - w = 1.0 / ((wt[3] * w0) + (wt[7] * h0) + wt[15]); - vertexData[4] = w * ((wt[0] * w0) + (wt[4] * h0) + wt[12]); - vertexData[5] = w * ((wt[1] * w0) + (wt[5] * h0) + wt[13]); - z = (wt[2] * w0) + (wt[6] * h0) + wt[14]; - culled = culled || z < 0; - w = 1.0 / ((wt[3] * w1) + (wt[7] * h0) + wt[15]); - vertexData[6] = w * ((wt[0] * w1) + (wt[4] * h0) + wt[12]); - vertexData[7] = w * ((wt[1] * w1) + (wt[5] * h0) + wt[13]); - z = (wt[2] * w1) + (wt[6] * h0) + wt[14]; - culled = culled || z < 0; - this.culledByFrustrum = culled; - }; - Sprite3d.prototype._calculateBounds = function () { - this.calculateVertices(); - if (this.culledByFrustrum) { - return; - } - var trim = this._texture.trim; - var orig = this._texture.orig; - if (!trim || (trim.width === orig.width && trim.height === orig.height)) { - this._bounds.addQuad(this.vertexData); - return; - } - this.calculateTrimmedVertices(); - if (!this.trimmedCulledByFrustrum) { - this._bounds.addQuad(this.vertexTrimmedData); - } - }; - Sprite3d.prototype._render = function (renderer) { - this.calculateVertices(); - if (this.culledByFrustrum) { - return; - } - renderer.batch.setObjectRenderer(renderer.plugins[this.pluginName]); - renderer.plugins[this.pluginName].render(this); - }; - Sprite3d.prototype.containsPoint = function (point) { - if (this.culledByFrustrum) { - return false; - } - return _super.prototype.containsPoint.call(this, point); - }; - Object.defineProperty(Sprite3d.prototype, "worldTransform", { - get: function () { - return this.proj.affine ? this.transform.worldTransform : this.proj.world; - }, - enumerable: true, - configurable: true - }); - Sprite3d.prototype.toLocal = function (position, from, point, skipUpdate, step) { - if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } - return pixi_projection.container3dToLocal.call(this, position, from, point, skipUpdate, step); - }; - Sprite3d.prototype.isFrontFace = function (forceUpdate) { - return pixi_projection.container3dIsFrontFace.call(this, forceUpdate); - }; - Sprite3d.prototype.getDepth = function (forceUpdate) { - return pixi_projection.container3dGetDepth.call(this, forceUpdate); - }; - Object.defineProperty(Sprite3d.prototype, "position3d", { - get: function () { - return this.proj.position; - }, - set: function (value) { - this.proj.position.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Sprite3d.prototype, "scale3d", { - get: function () { - return this.proj.scale; - }, - set: function (value) { - this.proj.scale.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Sprite3d.prototype, "euler", { - get: function () { - return this.proj.euler; - }, - set: function (value) { - this.proj.euler.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Sprite3d.prototype, "pivot3d", { - get: function () { - return this.proj.pivot; - }, - set: function (value) { - this.proj.pivot.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - return Sprite3d; - }(PIXI.Sprite)); - pixi_projection.Sprite3d = Sprite3d; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var Text3d = (function (_super) { - __extends(Text3d, _super); - function Text3d(text, style, canvas) { - var _this = _super.call(this, text, style, canvas) || this; - _this.vertexData2d = null; - _this.proj = new pixi_projection.Projection3d(_this.transform); - _this.pluginName = 'batch2d'; - return _this; - } - Object.defineProperty(Text3d.prototype, "worldTransform", { - get: function () { - return this.proj.affine ? this.transform.worldTransform : this.proj.world; - }, - enumerable: true, - configurable: true - }); - Text3d.prototype.toLocal = function (position, from, point, skipUpdate, step) { - if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } - return pixi_projection.container3dToLocal.call(this, position, from, point, skipUpdate, step); - }; - Text3d.prototype.isFrontFace = function (forceUpdate) { - return pixi_projection.container3dIsFrontFace.call(this, forceUpdate); - }; - Text3d.prototype.getDepth = function (forceUpdate) { - return pixi_projection.container3dGetDepth.call(this, forceUpdate); - }; - Object.defineProperty(Text3d.prototype, "position3d", { - get: function () { - return this.proj.position; - }, - set: function (value) { - this.proj.position.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Text3d.prototype, "scale3d", { - get: function () { - return this.proj.scale; - }, - set: function (value) { - this.proj.scale.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Text3d.prototype, "euler", { - get: function () { - return this.proj.euler; - }, - set: function (value) { - this.proj.euler.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Text3d.prototype, "pivot3d", { - get: function () { - return this.proj.pivot; - }, - set: function (value) { - this.proj.pivot.copyFrom(value); - }, - enumerable: true, - configurable: true - }); - return Text3d; - }(PIXI.Text)); - pixi_projection.Text3d = Text3d; - Text3d.prototype.calculateVertices = pixi_projection.Sprite3d.prototype.calculateVertices; - Text3d.prototype.calculateTrimmedVertices = pixi_projection.Sprite3d.prototype.calculateTrimmedVertices; - Text3d.prototype._calculateBounds = pixi_projection.Sprite3d.prototype._calculateBounds; - Text3d.prototype.containsPoint = pixi_projection.Sprite3d.prototype.containsPoint; - Text3d.prototype._render = pixi_projection.Sprite3d.prototype._render; -})(pixi_projection || (pixi_projection = {})); -var pixi_projection; -(function (pixi_projection) { - var containerProps = { - worldTransform: { - get: pixi_projection.container3dWorldTransform, - enumerable: true, - configurable: true - }, - position3d: { - get: function () { return this.proj.position; }, - set: function (value) { this.proj.position.copy(value); } - }, - scale3d: { - get: function () { return this.proj.scale; }, - set: function (value) { this.proj.scale.copy(value); } - }, - pivot3d: { - get: function () { return this.proj.pivot; }, - set: function (value) { this.proj.pivot.copy(value); } - }, - euler: { - get: function () { return this.proj.euler; }, - set: function (value) { this.proj.euler.copy(value); } - } - }; - function convertTo3d() { - if (this.proj) - return; - this.proj = new pixi_projection.Projection3d(this.transform); - this.toLocal = pixi_projection.Container3d.prototype.toLocal; - this.isFrontFace = pixi_projection.Container3d.prototype.isFrontFace; - this.getDepth = pixi_projection.Container3d.prototype.getDepth; - Object.defineProperties(this, containerProps); - } - PIXI.Container.prototype.convertTo3d = convertTo3d; - PIXI.Sprite.prototype.convertTo3d = function () { - if (this.proj) - return; - this.calculateVertices = pixi_projection.Sprite3d.prototype.calculateVertices; - this.calculateTrimmedVertices = pixi_projection.Sprite3d.prototype.calculateTrimmedVertices; - this._calculateBounds = pixi_projection.Sprite3d.prototype._calculateBounds; - this.containsPoint = pixi_projection.Sprite3d.prototype.containsPoint; - this.pluginName = 'batch2d'; - convertTo3d.call(this); - }; - PIXI.Container.prototype.convertSubtreeTo3d = function () { - this.convertTo3d(); - for (var i = 0; i < this.children.length; i++) { - this.children[i].convertSubtreeTo3d(); - } - }; - if (PIXI.SimpleMesh) { - PIXI.SimpleMesh.prototype.convertTo3d = - PIXI.SimpleRope.prototype.convertTo3d = - function () { - if (this.proj) - return; - this.calculateVertices = pixi_projection.Mesh3d2d.prototype.calculateVertices; - this._renderDefault = pixi_projection.Mesh3d2d.prototype._renderDefault; - if (this.material.pluginName !== 'batch2d') { - this.material = new PIXI.MeshMaterial(this.material.texture, { - program: PIXI.Program.from(pixi_projection.Mesh2d.defaultVertexShader, pixi_projection.Mesh2d.defaultFragmentShader), - pluginName: 'batch2d' - }); - } - convertTo3d.call(this); - }; - } -})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var utils; + (function (utils) { + function getIntersectionFactor(p1, p2, p3, p4, out) { + var A1 = p2.x - p1.x, B1 = p3.x - p4.x, C1 = p3.x - p1.x; + var A2 = p2.y - p1.y, B2 = p3.y - p4.y, C2 = p3.y - p1.y; + var D = A1 * B2 - A2 * B1; + if (Math.abs(D) < 1e-7) { + out.x = A1; + out.y = A2; + return 0; + } + var T = C1 * B2 - C2 * B1; + var U = A1 * C2 - A2 * C1; + var t = T / D, u = U / D; + if (u < (1e-6) || u - 1 > -1e-6) { + return -1; + } + out.x = p1.x + t * (p2.x - p1.x); + out.y = p1.y + t * (p2.y - p1.y); + return 1; + } + utils.getIntersectionFactor = getIntersectionFactor; + function getPositionFromQuad(p, anchor, out) { + out = out || new PIXI.Point(); + var a1 = 1.0 - anchor.x, a2 = 1.0 - a1; + var b1 = 1.0 - anchor.y, b2 = 1.0 - b1; + out.x = (p[0].x * a1 + p[1].x * a2) * b1 + (p[3].x * a1 + p[2].x * a2) * b2; + out.y = (p[0].y * a1 + p[1].y * a2) * b1 + (p[3].y * a1 + p[2].y * a2) * b2; + return out; + } + utils.getPositionFromQuad = getPositionFromQuad; + })(utils = pixi_projection.utils || (pixi_projection.utils = {})); +})(pixi_projection || (pixi_projection = {})); +PIXI.projection = pixi_projection; +var pixi_projection; +(function (pixi_projection) { + var AbstractProjection = (function () { + function AbstractProjection(legacy, enable) { + if (enable === void 0) { enable = true; } + this._enabled = false; + this.legacy = legacy; + if (enable) { + this.enabled = true; + } + this.legacy.proj = this; + } + Object.defineProperty(AbstractProjection.prototype, "enabled", { + get: function () { + return this._enabled; + }, + set: function (value) { + this._enabled = value; + }, + enumerable: true, + configurable: true + }); + AbstractProjection.prototype.clear = function () { + }; + return AbstractProjection; + }()); + pixi_projection.AbstractProjection = AbstractProjection; + var TRANSFORM_STEP; + (function (TRANSFORM_STEP) { + TRANSFORM_STEP[TRANSFORM_STEP["NONE"] = 0] = "NONE"; + TRANSFORM_STEP[TRANSFORM_STEP["BEFORE_PROJ"] = 4] = "BEFORE_PROJ"; + TRANSFORM_STEP[TRANSFORM_STEP["PROJ"] = 5] = "PROJ"; + TRANSFORM_STEP[TRANSFORM_STEP["ALL"] = 9] = "ALL"; + })(TRANSFORM_STEP = pixi_projection.TRANSFORM_STEP || (pixi_projection.TRANSFORM_STEP = {})); +})(pixi_projection || (pixi_projection = {})); +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var pixi_projection; +(function (pixi_projection) { + function transformHack(parentTransform) { + var proj = this.proj; + var ta = this; + var pwid = parentTransform._worldID; + var lt = ta.localTransform; + var scaleAfterAffine = proj.scaleAfterAffine && proj.affine >= 2; + if (ta._localID !== ta._currentLocalID) { + if (scaleAfterAffine) { + lt.a = ta._cx; + lt.b = ta._sx; + lt.c = ta._cy; + lt.d = ta._sy; + lt.tx = ta.position._x; + lt.ty = ta.position._y; + } + else { + lt.a = ta._cx * ta.scale._x; + lt.b = ta._sx * ta.scale._x; + lt.c = ta._cy * ta.scale._y; + lt.d = ta._sy * ta.scale._y; + lt.tx = ta.position._x - ((ta.pivot._x * lt.a) + (ta.pivot._y * lt.c)); + lt.ty = ta.position._y - ((ta.pivot._x * lt.b) + (ta.pivot._y * lt.d)); + } + ta._currentLocalID = ta._localID; + proj._currentProjID = -1; + } + var _matrixID = proj._projID; + if (proj._currentProjID !== _matrixID) { + proj._currentProjID = _matrixID; + proj.updateLocalTransform(lt); + ta._parentID = -1; + } + if (ta._parentID !== pwid) { + var pp = parentTransform.proj; + if (pp && !pp._affine) { + proj.world.setToMult(pp.world, proj.local); + } + else { + proj.world.setToMultLegacy(parentTransform.worldTransform, proj.local); + } + var wa = ta.worldTransform; + proj.world.copyTo(wa, proj._affine, proj.affinePreserveOrientation); + if (scaleAfterAffine) { + wa.a *= ta.scale._x; + wa.b *= ta.scale._x; + wa.c *= ta.scale._y; + wa.d *= ta.scale._y; + wa.tx -= ((ta.pivot._x * wa.a) + (ta.pivot._y * wa.c)); + wa.ty -= ((ta.pivot._x * wa.b) + (ta.pivot._y * wa.d)); + } + ta._parentID = pwid; + ta._worldID++; + } + } + var LinearProjection = (function (_super) { + __extends(LinearProjection, _super); + function LinearProjection() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this._projID = 0; + _this._currentProjID = -1; + _this._affine = pixi_projection.AFFINE.NONE; + _this.affinePreserveOrientation = false; + _this.scaleAfterAffine = true; + return _this; + } + LinearProjection.prototype.updateLocalTransform = function (lt) { + }; + Object.defineProperty(LinearProjection.prototype, "affine", { + get: function () { + return this._affine; + }, + set: function (value) { + if (this._affine == value) + return; + this._affine = value; + this._currentProjID = -1; + this.legacy._currentLocalID = -1; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(LinearProjection.prototype, "enabled", { + set: function (value) { + if (value === this._enabled) { + return; + } + this._enabled = value; + if (value) { + this.legacy.updateTransform = transformHack; + this.legacy._parentID = -1; + } + else { + this.legacy.updateTransform = PIXI.Transform.prototype.updateTransform; + this.legacy._parentID = -1; + } + }, + enumerable: true, + configurable: true + }); + LinearProjection.prototype.clear = function () { + this._currentProjID = -1; + this._projID = 0; + }; + return LinearProjection; + }(pixi_projection.AbstractProjection)); + pixi_projection.LinearProjection = LinearProjection; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var TYPES = PIXI.TYPES; + var premultiplyTint = PIXI.utils.premultiplyTint; + var shaderVert = "precision highp float;\nattribute vec3 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\nattribute float aTextureId;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nvoid main(void){\n gl_Position.xyw = projectionMatrix * aVertexPosition;\n gl_Position.z = 0.0;\n \n vTextureCoord = aTextureCoord;\n vTextureId = aTextureId;\n vColor = aColor;\n}\n"; + var shaderFrag = "\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying float vTextureId;\nuniform sampler2D uSamplers[%count%];\n\nvoid main(void){\nvec4 color;\n%forloop%\ngl_FragColor = color * vColor;\n}"; + var Batch3dGeometry = (function (_super) { + __extends(Batch3dGeometry, _super); + function Batch3dGeometry(_static) { + if (_static === void 0) { _static = false; } + var _this = _super.call(this) || this; + _this._buffer = new PIXI.Buffer(null, _static, false); + _this._indexBuffer = new PIXI.Buffer(null, _static, true); + _this.addAttribute('aVertexPosition', _this._buffer, 3, false, TYPES.FLOAT) + .addAttribute('aTextureCoord', _this._buffer, 2, false, TYPES.FLOAT) + .addAttribute('aColor', _this._buffer, 4, true, TYPES.UNSIGNED_BYTE) + .addAttribute('aTextureId', _this._buffer, 1, true, TYPES.FLOAT) + .addIndex(_this._indexBuffer); + return _this; + } + return Batch3dGeometry; + }(PIXI.Geometry)); + pixi_projection.Batch3dGeometry = Batch3dGeometry; + var Batch2dPluginFactory = (function () { + function Batch2dPluginFactory() { + } + Batch2dPluginFactory.create = function (options) { + var _a = Object.assign({ + vertex: shaderVert, + fragment: shaderFrag, + geometryClass: Batch3dGeometry, + vertexSize: 7, + }, options), vertex = _a.vertex, fragment = _a.fragment, vertexSize = _a.vertexSize, geometryClass = _a.geometryClass; + return (function (_super) { + __extends(BatchPlugin, _super); + function BatchPlugin(renderer) { + var _this = _super.call(this, renderer) || this; + _this.shaderGenerator = new PIXI.BatchShaderGenerator(vertex, fragment); + _this.geometryClass = geometryClass; + _this.vertexSize = vertexSize; + return _this; + } + BatchPlugin.prototype.packInterleavedGeometry = function (element, attributeBuffer, indexBuffer, aIndex, iIndex) { + var uint32View = attributeBuffer.uint32View, float32View = attributeBuffer.float32View; + var p = aIndex / this.vertexSize; + var uvs = element.uvs; + var indices = element.indices; + var vertexData = element.vertexData; + var vertexData2d = element.vertexData2d; + var textureId = element._texture.baseTexture._batchLocation; + var alpha = Math.min(element.worldAlpha, 1.0); + var argb = alpha < 1.0 && element._texture.baseTexture.alphaMode ? premultiplyTint(element._tintRGB, alpha) + : element._tintRGB + (alpha * 255 << 24); + if (vertexData2d) { + var j = 0; + for (var i = 0; i < vertexData2d.length; i += 3, j += 2) { + float32View[aIndex++] = vertexData2d[i]; + float32View[aIndex++] = vertexData2d[i + 1]; + float32View[aIndex++] = vertexData2d[i + 2]; + float32View[aIndex++] = uvs[j]; + float32View[aIndex++] = uvs[j + 1]; + uint32View[aIndex++] = argb; + float32View[aIndex++] = textureId; + } + } + else { + for (var i = 0; i < vertexData.length; i += 2) { + float32View[aIndex++] = vertexData[i]; + float32View[aIndex++] = vertexData[i + 1]; + float32View[aIndex++] = 1.0; + float32View[aIndex++] = uvs[i]; + float32View[aIndex++] = uvs[i + 1]; + uint32View[aIndex++] = argb; + float32View[aIndex++] = textureId; + } + } + for (var i = 0; i < indices.length; i++) { + indexBuffer[iIndex++] = p + indices[i]; + } + }; + return BatchPlugin; + }(PIXI.AbstractBatchRenderer)); + }; + return Batch2dPluginFactory; + }()); + pixi_projection.Batch2dPluginFactory = Batch2dPluginFactory; + PIXI.Renderer.registerPlugin('batch2d', Batch2dPluginFactory.create({})); +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var AbstractBatchRenderer = PIXI.AbstractBatchRenderer; + var premultiplyBlendMode = PIXI.utils.premultiplyBlendMode; + var UniformBatchRenderer = (function (_super) { + __extends(UniformBatchRenderer, _super); + function UniformBatchRenderer() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.forceMaxTextures = 0; + _this.defUniforms = {}; + return _this; + } + UniformBatchRenderer.prototype.getUniforms = function (sprite) { + return this.defUniforms; + }; + UniformBatchRenderer.prototype.syncUniforms = function (obj) { + if (!obj) + return; + var sh = this._shader; + for (var key in obj) { + sh.uniforms[key] = obj[key]; + } + }; + UniformBatchRenderer.prototype.buildDrawCalls = function (texArray, start, finish) { + var thisAny = this; + var _a = this, elements = _a._bufferedElements, _attributeBuffer = _a._attributeBuffer, _indexBuffer = _a._indexBuffer, vertexSize = _a.vertexSize; + var drawCalls = AbstractBatchRenderer._drawCallPool; + var dcIndex = this._dcIndex; + var aIndex = this._aIndex; + var iIndex = this._iIndex; + var drawCall = drawCalls[dcIndex]; + drawCall.start = this._iIndex; + drawCall.texArray = texArray; + for (var i = start; i < finish; ++i) { + var sprite = elements[i]; + var tex = sprite._texture.baseTexture; + var spriteBlendMode = premultiplyBlendMode[tex.alphaMode ? 1 : 0][sprite.blendMode]; + var uniforms = this.getUniforms(sprite); + elements[i] = null; + if (start < i && (drawCall.blend !== spriteBlendMode || drawCall.uniforms !== uniforms)) { + drawCall.size = iIndex - drawCall.start; + start = i; + drawCall = drawCalls[++dcIndex]; + drawCall.texArray = texArray; + drawCall.start = iIndex; + } + this.packInterleavedGeometry(sprite, _attributeBuffer, _indexBuffer, aIndex, iIndex); + aIndex += sprite.vertexData.length / 2 * vertexSize; + iIndex += sprite.indices.length; + drawCall.blend = spriteBlendMode; + drawCall.uniforms = uniforms; + } + if (start < finish) { + drawCall.size = iIndex - drawCall.start; + ++dcIndex; + } + thisAny._dcIndex = dcIndex; + thisAny._aIndex = aIndex; + thisAny._iIndex = iIndex; + }; + UniformBatchRenderer.prototype.drawBatches = function () { + var dcCount = this._dcIndex; + var _a = this.renderer, gl = _a.gl, stateSystem = _a.state, shaderSystem = _a.shader; + var drawCalls = AbstractBatchRenderer._drawCallPool; + var curUniforms = null; + var curTexArray = null; + for (var i = 0; i < dcCount; i++) { + var _b = drawCalls[i], texArray = _b.texArray, type = _b.type, size = _b.size, start = _b.start, blend = _b.blend, uniforms = _b.uniforms; + if (curTexArray !== texArray) { + curTexArray = texArray; + this.bindAndClearTexArray(texArray); + } + if (curUniforms !== uniforms) { + curUniforms = uniforms; + this.syncUniforms(uniforms); + shaderSystem.syncUniformGroup(this._shader.uniformGroup); + } + stateSystem.setBlendMode(blend); + gl.drawElements(type, size, gl.UNSIGNED_SHORT, start * 2); + } + }; + UniformBatchRenderer.prototype.contextChange = function () { + if (!this.forceMaxTextures) { + _super.prototype.contextChange.call(this); + this.syncUniforms(this.defUniforms); + return; + } + var gl = this.renderer.gl; + var thisAny = this; + thisAny.MAX_TEXTURES = this.forceMaxTextures; + this._shader = thisAny.shaderGenerator.generateShader(this.MAX_TEXTURES); + this.syncUniforms(this.defUniforms); + for (var i = 0; i < thisAny._packedGeometryPoolSize; i++) { + thisAny._packedGeometries[i] = new (this.geometryClass)(); + } + this.initFlushBuffers(); + }; + return UniformBatchRenderer; + }(AbstractBatchRenderer)); + pixi_projection.UniformBatchRenderer = UniformBatchRenderer; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var p = [new PIXI.Point(), new PIXI.Point(), new PIXI.Point(), new PIXI.Point()]; + var a = [0, 0, 0, 0]; + var Surface = (function () { + function Surface() { + this.surfaceID = "default"; + this._updateID = 0; + this.vertexSrc = ""; + this.fragmentSrc = ""; + } + Surface.prototype.fillUniforms = function (uniforms) { + }; + Surface.prototype.clear = function () { + }; + Surface.prototype.boundsQuad = function (v, out, after) { + var minX = out[0], minY = out[1]; + var maxX = out[0], maxY = out[1]; + for (var i = 2; i < 8; i += 2) { + if (minX > out[i]) + minX = out[i]; + if (maxX < out[i]) + maxX = out[i]; + if (minY > out[i + 1]) + minY = out[i + 1]; + if (maxY < out[i + 1]) + maxY = out[i + 1]; + } + p[0].set(minX, minY); + this.apply(p[0], p[0]); + p[1].set(maxX, minY); + this.apply(p[1], p[1]); + p[2].set(maxX, maxY); + this.apply(p[2], p[2]); + p[3].set(minX, maxY); + this.apply(p[3], p[3]); + if (after) { + after.apply(p[0], p[0]); + after.apply(p[1], p[1]); + after.apply(p[2], p[2]); + after.apply(p[3], p[3]); + out[0] = p[0].x; + out[1] = p[0].y; + out[2] = p[1].x; + out[3] = p[1].y; + out[4] = p[2].x; + out[5] = p[2].y; + out[6] = p[3].x; + out[7] = p[3].y; + } + else { + for (var i = 1; i <= 3; i++) { + if (p[i].y < p[0].y || p[i].y == p[0].y && p[i].x < p[0].x) { + var t = p[0]; + p[0] = p[i]; + p[i] = t; + } + } + for (var i = 1; i <= 3; i++) { + a[i] = Math.atan2(p[i].y - p[0].y, p[i].x - p[0].x); + } + for (var i = 1; i <= 3; i++) { + for (var j = i + 1; j <= 3; j++) { + if (a[i] > a[j]) { + var t = p[i]; + p[i] = p[j]; + p[j] = t; + var t2 = a[i]; + a[i] = a[j]; + a[j] = t2; + } + } + } + out[0] = p[0].x; + out[1] = p[0].y; + out[2] = p[1].x; + out[3] = p[1].y; + out[4] = p[2].x; + out[5] = p[2].y; + out[6] = p[3].x; + out[7] = p[3].y; + if ((p[3].x - p[2].x) * (p[1].y - p[2].y) - (p[1].x - p[2].x) * (p[3].y - p[2].y) < 0) { + out[4] = p[3].x; + out[5] = p[3].y; + return; + } + } + }; + return Surface; + }()); + pixi_projection.Surface = Surface; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var tempMat = new PIXI.Matrix(); + var tempRect = new PIXI.Rectangle(); + var tempPoint = new PIXI.Point(); + var BilinearSurface = (function (_super) { + __extends(BilinearSurface, _super); + function BilinearSurface() { + var _this = _super.call(this) || this; + _this.distortion = new PIXI.Point(); + return _this; + } + BilinearSurface.prototype.clear = function () { + this.distortion.set(0, 0); + }; + BilinearSurface.prototype.apply = function (pos, newPos) { + newPos = newPos || new PIXI.Point(); + var d = this.distortion; + var m = pos.x * pos.y; + newPos.x = pos.x + d.x * m; + newPos.y = pos.y + d.y * m; + return newPos; + }; + BilinearSurface.prototype.applyInverse = function (pos, newPos) { + newPos = newPos || new PIXI.Point(); + var vx = pos.x, vy = pos.y; + var dx = this.distortion.x, dy = this.distortion.y; + if (dx == 0.0) { + newPos.x = vx; + newPos.y = vy / (1.0 + dy * vx); + } + else if (dy == 0.0) { + newPos.y = vy; + newPos.x = vx / (1.0 + dx * vy); + } + else { + var b = (vy * dx - vx * dy + 1.0) * 0.5 / dy; + var d = b * b + vx / dy; + if (d <= 0.00001) { + newPos.set(NaN, NaN); + return; + } + if (dy > 0.0) { + newPos.x = -b + Math.sqrt(d); + } + else { + newPos.x = -b - Math.sqrt(d); + } + newPos.y = (vx / newPos.x - 1.0) / dx; + } + return newPos; + }; + BilinearSurface.prototype.mapSprite = function (sprite, quad, outTransform) { + var tex = sprite.texture; + tempRect.x = -sprite.anchor.x * tex.orig.width; + tempRect.y = -sprite.anchor.y * tex.orig.height; + tempRect.width = tex.orig.width; + tempRect.height = tex.orig.height; + return this.mapQuad(tempRect, quad, outTransform || sprite.transform); + }; + BilinearSurface.prototype.mapQuad = function (rect, quad, outTransform) { + var ax = -rect.x / rect.width; + var ay = -rect.y / rect.height; + var ax2 = (1.0 - rect.x) / rect.width; + var ay2 = (1.0 - rect.y) / rect.height; + var up1x = (quad[0].x * (1.0 - ax) + quad[1].x * ax); + var up1y = (quad[0].y * (1.0 - ax) + quad[1].y * ax); + var up2x = (quad[0].x * (1.0 - ax2) + quad[1].x * ax2); + var up2y = (quad[0].y * (1.0 - ax2) + quad[1].y * ax2); + var down1x = (quad[3].x * (1.0 - ax) + quad[2].x * ax); + var down1y = (quad[3].y * (1.0 - ax) + quad[2].y * ax); + var down2x = (quad[3].x * (1.0 - ax2) + quad[2].x * ax2); + var down2y = (quad[3].y * (1.0 - ax2) + quad[2].y * ax2); + var x00 = up1x * (1.0 - ay) + down1x * ay; + var y00 = up1y * (1.0 - ay) + down1y * ay; + var x10 = up2x * (1.0 - ay) + down2x * ay; + var y10 = up2y * (1.0 - ay) + down2y * ay; + var x01 = up1x * (1.0 - ay2) + down1x * ay2; + var y01 = up1y * (1.0 - ay2) + down1y * ay2; + var x11 = up2x * (1.0 - ay2) + down2x * ay2; + var y11 = up2y * (1.0 - ay2) + down2y * ay2; + var mat = tempMat; + mat.tx = x00; + mat.ty = y00; + mat.a = x10 - x00; + mat.b = y10 - y00; + mat.c = x01 - x00; + mat.d = y01 - y00; + tempPoint.set(x11, y11); + mat.applyInverse(tempPoint, tempPoint); + this.distortion.set(tempPoint.x - 1, tempPoint.y - 1); + outTransform.setFromMatrix(mat); + return this; + }; + BilinearSurface.prototype.fillUniforms = function (uniforms) { + uniforms.distortion = uniforms.distortion || new Float32Array([0, 0, 0, 0]); + var ax = Math.abs(this.distortion.x); + var ay = Math.abs(this.distortion.y); + uniforms.distortion[0] = ax * 10000 <= ay ? 0 : this.distortion.x; + uniforms.distortion[1] = ay * 10000 <= ax ? 0 : this.distortion.y; + uniforms.distortion[2] = 1.0 / uniforms.distortion[0]; + uniforms.distortion[3] = 1.0 / uniforms.distortion[1]; + }; + return BilinearSurface; + }(pixi_projection.Surface)); + pixi_projection.BilinearSurface = BilinearSurface; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var Container2s = (function (_super) { + __extends(Container2s, _super); + function Container2s() { + var _this = _super.call(this) || this; + _this.proj = new pixi_projection.ProjectionSurface(_this.transform); + return _this; + } + Object.defineProperty(Container2s.prototype, "worldTransform", { + get: function () { + return this.proj; + }, + enumerable: true, + configurable: true + }); + return Container2s; + }(PIXI.Container)); + pixi_projection.Container2s = Container2s; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var fun = PIXI.Transform.prototype.updateTransform; + function transformHack(parentTransform) { + var proj = this.proj; + var pp = parentTransform.proj; + var ta = this; + if (!pp) { + fun.call(this, parentTransform); + proj._activeProjection = null; + return; + } + if (pp._surface) { + proj._activeProjection = pp; + this.updateLocalTransform(); + this.localTransform.copyFrom(this.worldTransform); + if (ta._parentID < 0) { + ++ta._worldID; + } + return; + } + fun.call(this, parentTransform); + proj._activeProjection = pp._activeProjection; + } + var ProjectionSurface = (function (_super) { + __extends(ProjectionSurface, _super); + function ProjectionSurface(legacy, enable) { + var _this = _super.call(this, legacy, enable) || this; + _this._surface = null; + _this._activeProjection = null; + _this._currentSurfaceID = -1; + _this._currentLegacyID = -1; + _this._lastUniforms = null; + return _this; + } + Object.defineProperty(ProjectionSurface.prototype, "enabled", { + set: function (value) { + if (value === this._enabled) { + return; + } + this._enabled = value; + if (value) { + this.legacy.updateTransform = transformHack; + this.legacy._parentID = -1; + } + else { + this.legacy.updateTransform = PIXI.Transform.prototype.updateTransform; + this.legacy._parentID = -1; + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ProjectionSurface.prototype, "surface", { + get: function () { + return this._surface; + }, + set: function (value) { + if (this._surface == value) { + return; + } + this._surface = value || null; + this.legacy._parentID = -1; + }, + enumerable: true, + configurable: true + }); + ProjectionSurface.prototype.applyPartial = function (pos, newPos) { + if (this._activeProjection !== null) { + newPos = this.legacy.worldTransform.apply(pos, newPos); + return this._activeProjection.surface.apply(newPos, newPos); + } + if (this._surface !== null) { + return this.surface.apply(pos, newPos); + } + return this.legacy.worldTransform.apply(pos, newPos); + }; + ProjectionSurface.prototype.apply = function (pos, newPos) { + if (this._activeProjection !== null) { + newPos = this.legacy.worldTransform.apply(pos, newPos); + this._activeProjection.surface.apply(newPos, newPos); + return this._activeProjection.legacy.worldTransform.apply(newPos, newPos); + } + if (this._surface !== null) { + newPos = this.surface.apply(pos, newPos); + return this.legacy.worldTransform.apply(newPos, newPos); + } + return this.legacy.worldTransform.apply(pos, newPos); + }; + ProjectionSurface.prototype.applyInverse = function (pos, newPos) { + if (this._activeProjection !== null) { + newPos = this._activeProjection.legacy.worldTransform.applyInverse(pos, newPos); + this._activeProjection._surface.applyInverse(newPos, newPos); + return this.legacy.worldTransform.applyInverse(newPos, newPos); + } + if (this._surface !== null) { + newPos = this.legacy.worldTransform.applyInverse(pos, newPos); + return this._surface.applyInverse(newPos, newPos); + } + return this.legacy.worldTransform.applyInverse(pos, newPos); + }; + ProjectionSurface.prototype.mapBilinearSprite = function (sprite, quad) { + if (!(this._surface instanceof pixi_projection.BilinearSurface)) { + this.surface = new pixi_projection.BilinearSurface(); + } + this.surface.mapSprite(sprite, quad, this.legacy); + }; + ProjectionSurface.prototype.clear = function () { + if (this.surface) { + this.surface.clear(); + } + }; + Object.defineProperty(ProjectionSurface.prototype, "uniforms", { + get: function () { + if (this._currentLegacyID === this.legacy._worldID && + this._currentSurfaceID === this.surface._updateID) { + return this._lastUniforms; + } + this._lastUniforms = this._lastUniforms || {}; + this._lastUniforms.translationMatrix = this.legacy.worldTransform; + this._surface.fillUniforms(this._lastUniforms); + return this._lastUniforms; + }, + enumerable: true, + configurable: true + }); + return ProjectionSurface; + }(pixi_projection.AbstractProjection)); + pixi_projection.ProjectionSurface = ProjectionSurface; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var TYPES = PIXI.TYPES; + var premultiplyTint = PIXI.utils.premultiplyTint; + var shaderVert = "precision highp float;\nattribute vec2 aVertexPosition;\nattribute vec3 aTrans1;\nattribute vec3 aTrans2;\nattribute vec2 aSamplerSize;\nattribute vec4 aFrame;\nattribute vec4 aColor;\nattribute float aTextureId;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\n\nvarying vec2 vertexPosition;\nvarying vec3 vTrans1;\nvarying vec3 vTrans2;\nvarying vec2 vSamplerSize;\nvarying vec4 vFrame;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nvoid main(void){\n gl_Position.xyw = projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0);\n gl_Position.z = 0.0;\n \n vertexPosition = aVertexPosition;\n vTrans1 = aTrans1;\n vTrans2 = aTrans2;\n vTextureId = aTextureId;\n vColor = aColor;\n vSamplerSize = aSamplerSize;\n vFrame = aFrame;\n}\n"; + var shaderFrag = "precision highp float;\nvarying vec2 vertexPosition;\nvarying vec3 vTrans1;\nvarying vec3 vTrans2;\nvarying vec2 vSamplerSize;\nvarying vec4 vFrame;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nuniform sampler2D uSamplers[%count%];\nuniform vec4 distortion;\n\nvoid main(void){\nvec2 surface;\nvec2 surface2;\n\nfloat vx = vertexPosition.x;\nfloat vy = vertexPosition.y;\nfloat dx = distortion.x;\nfloat dy = distortion.y;\nfloat revx = distortion.z;\nfloat revy = distortion.w;\n\nif (distortion.x == 0.0) {\n surface.x = vx;\n surface.y = vy / (1.0 + dy * vx);\n surface2 = surface;\n} else\nif (distortion.y == 0.0) {\n surface.y = vy;\n surface.x = vx / (1.0 + dx * vy);\n surface2 = surface;\n} else {\n float c = vy * dx - vx * dy;\n float b = (c + 1.0) * 0.5;\n float b2 = (-c + 1.0) * 0.5;\n float d = b * b + vx * dy;\n //if (d < -0.00001) {\n // discard;\n //}\n d = sqrt(max(d, 0.0));\n surface.x = (- b + d) * revy;\n surface2.x = (- b - d) * revy;\n surface.y = (- b2 + d) * revx;\n surface2.y = (- b2 - d) * revx;\n}\n\nvec2 uv;\nuv.x = vTrans1.x * surface.x + vTrans1.y * surface.y + vTrans1.z;\nuv.y = vTrans2.x * surface.x + vTrans2.y * surface.y + vTrans2.z;\n\nvec2 pixels = uv * vSamplerSize;\n\nif (pixels.x < vFrame.x || pixels.x > vFrame.z ||\n pixels.y < vFrame.y || pixels.y > vFrame.w) {\n uv.x = vTrans1.x * surface2.x + vTrans1.y * surface2.y + vTrans1.z;\n uv.y = vTrans2.x * surface2.x + vTrans2.y * surface2.y + vTrans2.z;\n pixels = uv * vSamplerSize;\n \n// if (pixels.x < vFrame.x || pixels.x > vFrame.z ||\n// pixels.y < vFrame.y || pixels.y > vFrame.w) {\n// discard;\n// }\n}\n\nvec4 edge;\nedge.xy = clamp(pixels - vFrame.xy + 0.5, vec2(0.0, 0.0), vec2(1.0, 1.0));\nedge.zw = clamp(vFrame.zw - pixels + 0.5, vec2(0.0, 0.0), vec2(1.0, 1.0));\n\nfloat alpha = 1.0; //edge.x * edge.y * edge.z * edge.w;\nvec4 rColor = vColor * alpha;\n\nfloat textureId = floor(vTextureId+0.5);\nvec2 vTextureCoord = uv;\nvec4 color;\n%forloop%\ngl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);\n//gl_FragColor = color * rColor;\n}"; + var BatchBilineardGeometry = (function (_super) { + __extends(BatchBilineardGeometry, _super); + function BatchBilineardGeometry(_static) { + if (_static === void 0) { _static = false; } + var _this = _super.call(this) || this; + _this._buffer = new PIXI.Buffer(null, _static, false); + _this._indexBuffer = new PIXI.Buffer(null, _static, true); + _this.addAttribute('aVertexPosition', _this._buffer, 2, false, TYPES.FLOAT) + .addAttribute('aTrans1', _this._buffer, 3, false, TYPES.FLOAT) + .addAttribute('aTrans2', _this._buffer, 3, false, TYPES.FLOAT) + .addAttribute('aSamplerSize', _this._buffer, 2, false, TYPES.FLOAT) + .addAttribute('aFrame', _this._buffer, 4, false, TYPES.FLOAT) + .addAttribute('aColor', _this._buffer, 4, true, TYPES.UNSIGNED_BYTE) + .addAttribute('aTextureId', _this._buffer, 1, true, TYPES.FLOAT) + .addIndex(_this._indexBuffer); + return _this; + } + return BatchBilineardGeometry; + }(PIXI.Geometry)); + pixi_projection.BatchBilineardGeometry = BatchBilineardGeometry; + var BatchBilinearPluginFactory = (function () { + function BatchBilinearPluginFactory() { + } + BatchBilinearPluginFactory.create = function (options) { + var _a = Object.assign({ + vertex: shaderVert, + fragment: shaderFrag, + geometryClass: BatchBilineardGeometry, + vertexSize: 16, + }, options), vertex = _a.vertex, fragment = _a.fragment, vertexSize = _a.vertexSize, geometryClass = _a.geometryClass; + return (function (_super) { + __extends(BatchPlugin, _super); + function BatchPlugin(renderer) { + var _this = _super.call(this, renderer) || this; + _this.defUniforms = { + translationMatrix: new PIXI.Matrix(), + distortion: new Float32Array([0, 0]) + }; + _this.size = 1000; + _this.forceMaxTextures = 1; + _this.shaderGenerator = new PIXI.BatchShaderGenerator(vertex, fragment); + _this.geometryClass = geometryClass; + _this.vertexSize = vertexSize; + return _this; + } + BatchPlugin.prototype.getUniforms = function (sprite) { + var proj = sprite.proj; + if (proj.surface !== null) { + return proj.uniforms; + } + if (proj._activeProjection !== null) { + return proj._activeProjection.uniforms; + } + return this.defUniforms; + }; + BatchPlugin.prototype.packInterleavedGeometry = function (element, attributeBuffer, indexBuffer, aIndex, iIndex) { + var uint32View = attributeBuffer.uint32View, float32View = attributeBuffer.float32View; + var p = aIndex / this.vertexSize; + var indices = element.indices; + var vertexData = element.vertexData; + var tex = element._texture; + var frame = tex._frame; + var aTrans = element.aTrans; + var _a = element._texture.baseTexture, _batchLocation = _a._batchLocation, realWidth = _a.realWidth, realHeight = _a.realHeight, resolution = _a.resolution; + var alpha = Math.min(element.worldAlpha, 1.0); + var argb = alpha < 1.0 && element._texture.baseTexture.alphaMode ? premultiplyTint(element._tintRGB, alpha) + : element._tintRGB + (alpha * 255 << 24); + for (var i = 0; i < vertexData.length; i += 2) { + float32View[aIndex] = vertexData[i * 2]; + float32View[aIndex + 1] = vertexData[i * 2 + 1]; + float32View[aIndex + 2] = aTrans.a; + float32View[aIndex + 3] = aTrans.c; + float32View[aIndex + 4] = aTrans.tx; + float32View[aIndex + 5] = aTrans.b; + float32View[aIndex + 6] = aTrans.d; + float32View[aIndex + 7] = aTrans.ty; + float32View[aIndex + 8] = realWidth; + float32View[aIndex + 9] = realHeight; + float32View[aIndex + 10] = frame.x * resolution; + float32View[aIndex + 11] = frame.y * resolution; + float32View[aIndex + 12] = (frame.x + frame.width) * resolution; + float32View[aIndex + 13] = (frame.y + frame.height) * resolution; + uint32View[aIndex + 14] = argb; + float32View[aIndex + 15] = _batchLocation; + aIndex += 16; + } + for (var i = 0; i < indices.length; i++) { + indexBuffer[iIndex++] = p + indices[i]; + } + }; + return BatchPlugin; + }(pixi_projection.UniformBatchRenderer)); + }; + return BatchBilinearPluginFactory; + }()); + pixi_projection.BatchBilinearPluginFactory = BatchBilinearPluginFactory; + PIXI.Renderer.registerPlugin('batch_bilinear', BatchBilinearPluginFactory.create({})); +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var Sprite2s = (function (_super) { + __extends(Sprite2s, _super); + function Sprite2s(texture) { + var _this = _super.call(this, texture) || this; + _this.aTrans = new PIXI.Matrix(); + _this.proj = new pixi_projection.ProjectionSurface(_this.transform); + _this.pluginName = 'batch_bilinear'; + return _this; + } + Sprite2s.prototype._calculateBounds = function () { + this.calculateTrimmedVertices(); + this._bounds.addQuad(this.vertexTrimmedData); + }; + Sprite2s.prototype.calculateVertices = function () { + var wid = this.transform._worldID; + var tuid = this._texture._updateID; + if (this._transformID === wid && this._textureID === tuid) { + return; + } + this._transformID = wid; + this._textureID = tuid; + var texture = this._texture; + var vertexData = this.vertexData; + var trim = texture.trim; + var orig = texture.orig; + var anchor = this._anchor; + var w0 = 0; + var w1 = 0; + var h0 = 0; + var h1 = 0; + if (trim) { + w1 = trim.x - (anchor._x * orig.width); + w0 = w1 + trim.width; + h1 = trim.y - (anchor._y * orig.height); + h0 = h1 + trim.height; + } + else { + w1 = -anchor._x * orig.width; + w0 = w1 + orig.width; + h1 = -anchor._y * orig.height; + h0 = h1 + orig.height; + } + if (this.proj._surface) { + vertexData[0] = w1; + vertexData[1] = h1; + vertexData[2] = w0; + vertexData[3] = h1; + vertexData[4] = w0; + vertexData[5] = h0; + vertexData[6] = w1; + vertexData[7] = h0; + this.proj._surface.boundsQuad(vertexData, vertexData); + } + else { + var wt = this.transform.worldTransform; + var a = wt.a; + var b = wt.b; + var c = wt.c; + var d = wt.d; + var tx = wt.tx; + var ty = wt.ty; + vertexData[0] = (a * w1) + (c * h1) + tx; + vertexData[1] = (d * h1) + (b * w1) + ty; + vertexData[2] = (a * w0) + (c * h1) + tx; + vertexData[3] = (d * h1) + (b * w0) + ty; + vertexData[4] = (a * w0) + (c * h0) + tx; + vertexData[5] = (d * h0) + (b * w0) + ty; + vertexData[6] = (a * w1) + (c * h0) + tx; + vertexData[7] = (d * h0) + (b * w1) + ty; + if (this.proj._activeProjection) { + this.proj._activeProjection.surface.boundsQuad(vertexData, vertexData); + } + } + if (!texture.uvMatrix) { + texture.uvMatrix = new PIXI.TextureMatrix(texture); + } + texture.uvMatrix.update(); + var aTrans = this.aTrans; + aTrans.set(orig.width, 0, 0, orig.height, w1, h1); + if (this.proj._surface === null) { + aTrans.prepend(this.transform.worldTransform); + } + aTrans.invert(); + aTrans.prepend(texture.uvMatrix.mapCoord); + }; + Sprite2s.prototype.calculateTrimmedVertices = function () { + var wid = this.transform._worldID; + var tuid = this._texture._updateID; + if (!this.vertexTrimmedData) { + this.vertexTrimmedData = new Float32Array(8); + } + else if (this._transformTrimmedID === wid && this._textureTrimmedID === tuid) { + return; + } + this._transformTrimmedID = wid; + this._textureTrimmedID = tuid; + var texture = this._texture; + var vertexData = this.vertexTrimmedData; + var orig = texture.orig; + var anchor = this._anchor; + var w1 = -anchor._x * orig.width; + var w0 = w1 + orig.width; + var h1 = -anchor._y * orig.height; + var h0 = h1 + orig.height; + if (this.proj._surface) { + vertexData[0] = w1; + vertexData[1] = h1; + vertexData[2] = w0; + vertexData[3] = h1; + vertexData[4] = w0; + vertexData[5] = h0; + vertexData[6] = w1; + vertexData[7] = h0; + this.proj._surface.boundsQuad(vertexData, vertexData, this.transform.worldTransform); + } + else { + var wt = this.transform.worldTransform; + var a = wt.a; + var b = wt.b; + var c = wt.c; + var d = wt.d; + var tx = wt.tx; + var ty = wt.ty; + vertexData[0] = (a * w1) + (c * h1) + tx; + vertexData[1] = (d * h1) + (b * w1) + ty; + vertexData[2] = (a * w0) + (c * h1) + tx; + vertexData[3] = (d * h1) + (b * w0) + ty; + vertexData[4] = (a * w0) + (c * h0) + tx; + vertexData[5] = (d * h0) + (b * w0) + ty; + vertexData[6] = (a * w1) + (c * h0) + tx; + vertexData[7] = (d * h0) + (b * w1) + ty; + if (this.proj._activeProjection) { + this.proj._activeProjection.surface.boundsQuad(vertexData, vertexData, this.proj._activeProjection.legacy.worldTransform); + } + } + }; + Object.defineProperty(Sprite2s.prototype, "worldTransform", { + get: function () { + return this.proj; + }, + enumerable: true, + configurable: true + }); + return Sprite2s; + }(PIXI.Sprite)); + pixi_projection.Sprite2s = Sprite2s; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var Text2s = (function (_super) { + __extends(Text2s, _super); + function Text2s(text, style, canvas) { + var _this = _super.call(this, text, style, canvas) || this; + _this.aTrans = new PIXI.Matrix(); + _this.proj = new pixi_projection.ProjectionSurface(_this.transform); + _this.pluginName = 'batch_bilinear'; + return _this; + } + Object.defineProperty(Text2s.prototype, "worldTransform", { + get: function () { + return this.proj; + }, + enumerable: true, + configurable: true + }); + return Text2s; + }(PIXI.Text)); + pixi_projection.Text2s = Text2s; + Text2s.prototype.calculateVertices = pixi_projection.Sprite2s.prototype.calculateVertices; + Text2s.prototype.calculateTrimmedVertices = pixi_projection.Sprite2s.prototype.calculateTrimmedVertices; + Text2s.prototype._calculateBounds = pixi_projection.Sprite2s.prototype._calculateBounds; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + PIXI.Sprite.prototype.convertTo2s = function () { + if (this.proj) + return; + this.pluginName = 'sprite_bilinear'; + this.aTrans = new PIXI.Matrix(); + this.calculateVertices = pixi_projection.Sprite2s.prototype.calculateVertices; + this.calculateTrimmedVertices = pixi_projection.Sprite2s.prototype.calculateTrimmedVertices; + this._calculateBounds = pixi_projection.Sprite2s.prototype._calculateBounds; + PIXI.Container.prototype.convertTo2s.call(this); + }; + PIXI.Container.prototype.convertTo2s = function () { + if (this.proj) + return; + this.proj = new pixi_projection.Projection2d(this.transform); + Object.defineProperty(this, "worldTransform", { + get: function () { + return this.proj; + }, + enumerable: true, + configurable: true + }); + }; + PIXI.Container.prototype.convertSubtreeTo2s = function () { + this.convertTo2s(); + for (var i = 0; i < this.children.length; i++) { + this.children[i].convertSubtreeTo2s(); + } + }; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + function container2dWorldTransform() { + return this.proj.affine ? this.transform.worldTransform : this.proj.world; + } + pixi_projection.container2dWorldTransform = container2dWorldTransform; + var Container2d = (function (_super) { + __extends(Container2d, _super); + function Container2d() { + var _this = _super.call(this) || this; + _this.proj = new pixi_projection.Projection2d(_this.transform); + return _this; + } + Container2d.prototype.toLocal = function (position, from, point, skipUpdate, step) { + if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } + if (from) { + position = from.toGlobal(position, point, skipUpdate); + } + if (!skipUpdate) { + this._recursivePostUpdateTransform(); + } + if (step >= pixi_projection.TRANSFORM_STEP.PROJ) { + if (!skipUpdate) { + this.displayObjectUpdateTransform(); + } + if (this.proj.affine) { + return this.transform.worldTransform.applyInverse(position, point); + } + return this.proj.world.applyInverse(position, point); + } + if (this.parent) { + point = this.parent.worldTransform.applyInverse(position, point); + } + else { + point.copyFrom(position); + } + if (step === pixi_projection.TRANSFORM_STEP.NONE) { + return point; + } + return this.transform.localTransform.applyInverse(point, point); + }; + Object.defineProperty(Container2d.prototype, "worldTransform", { + get: function () { + return this.proj.affine ? this.transform.worldTransform : this.proj.world; + }, + enumerable: true, + configurable: true + }); + return Container2d; + }(PIXI.Container)); + pixi_projection.Container2d = Container2d; + pixi_projection.container2dToLocal = Container2d.prototype.toLocal; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var Point = PIXI.Point; + var mat3id = [1, 0, 0, 0, 1, 0, 0, 0, 1]; + var AFFINE; + (function (AFFINE) { + AFFINE[AFFINE["NONE"] = 0] = "NONE"; + AFFINE[AFFINE["FREE"] = 1] = "FREE"; + AFFINE[AFFINE["AXIS_X"] = 2] = "AXIS_X"; + AFFINE[AFFINE["AXIS_Y"] = 3] = "AXIS_Y"; + AFFINE[AFFINE["POINT"] = 4] = "POINT"; + AFFINE[AFFINE["AXIS_XR"] = 5] = "AXIS_XR"; + })(AFFINE = pixi_projection.AFFINE || (pixi_projection.AFFINE = {})); + var Matrix2d = (function () { + function Matrix2d(backingArray) { + this.floatArray = null; + this.mat3 = new Float64Array(backingArray || mat3id); + } + Object.defineProperty(Matrix2d.prototype, "a", { + get: function () { + return this.mat3[0] / this.mat3[8]; + }, + set: function (value) { + this.mat3[0] = value * this.mat3[8]; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Matrix2d.prototype, "b", { + get: function () { + return this.mat3[1] / this.mat3[8]; + }, + set: function (value) { + this.mat3[1] = value * this.mat3[8]; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Matrix2d.prototype, "c", { + get: function () { + return this.mat3[3] / this.mat3[8]; + }, + set: function (value) { + this.mat3[3] = value * this.mat3[8]; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Matrix2d.prototype, "d", { + get: function () { + return this.mat3[4] / this.mat3[8]; + }, + set: function (value) { + this.mat3[4] = value * this.mat3[8]; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Matrix2d.prototype, "tx", { + get: function () { + return this.mat3[6] / this.mat3[8]; + }, + set: function (value) { + this.mat3[6] = value * this.mat3[8]; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Matrix2d.prototype, "ty", { + get: function () { + return this.mat3[7] / this.mat3[8]; + }, + set: function (value) { + this.mat3[7] = value * this.mat3[8]; + }, + enumerable: true, + configurable: true + }); + Matrix2d.prototype.set = function (a, b, c, d, tx, ty) { + var mat3 = this.mat3; + mat3[0] = a; + mat3[1] = b; + mat3[2] = 0; + mat3[3] = c; + mat3[4] = d; + mat3[5] = 0; + mat3[6] = tx; + mat3[7] = ty; + mat3[8] = 1; + return this; + }; + Matrix2d.prototype.toArray = function (transpose, out) { + if (!this.floatArray) { + this.floatArray = new Float32Array(9); + } + var array = out || this.floatArray; + var mat3 = this.mat3; + if (transpose) { + array[0] = mat3[0]; + array[1] = mat3[1]; + array[2] = mat3[2]; + array[3] = mat3[3]; + array[4] = mat3[4]; + array[5] = mat3[5]; + array[6] = mat3[6]; + array[7] = mat3[7]; + array[8] = mat3[8]; + } + else { + array[0] = mat3[0]; + array[1] = mat3[3]; + array[2] = mat3[6]; + array[3] = mat3[1]; + array[4] = mat3[4]; + array[5] = mat3[7]; + array[6] = mat3[2]; + array[7] = mat3[5]; + array[8] = mat3[8]; + } + return array; + }; + Matrix2d.prototype.apply = function (pos, newPos) { + newPos = newPos || new PIXI.Point(); + var mat3 = this.mat3; + var x = pos.x; + var y = pos.y; + var z = 1.0 / (mat3[2] * x + mat3[5] * y + mat3[8]); + newPos.x = z * (mat3[0] * x + mat3[3] * y + mat3[6]); + newPos.y = z * (mat3[1] * x + mat3[4] * y + mat3[7]); + return newPos; + }; + Matrix2d.prototype.translate = function (tx, ty) { + var mat3 = this.mat3; + mat3[0] += tx * mat3[2]; + mat3[1] += ty * mat3[2]; + mat3[3] += tx * mat3[5]; + mat3[4] += ty * mat3[5]; + mat3[6] += tx * mat3[8]; + mat3[7] += ty * mat3[8]; + return this; + }; + Matrix2d.prototype.scale = function (x, y) { + var mat3 = this.mat3; + mat3[0] *= x; + mat3[1] *= y; + mat3[3] *= x; + mat3[4] *= y; + mat3[6] *= x; + mat3[7] *= y; + return this; + }; + Matrix2d.prototype.scaleAndTranslate = function (scaleX, scaleY, tx, ty) { + var mat3 = this.mat3; + mat3[0] = scaleX * mat3[0] + tx * mat3[2]; + mat3[1] = scaleY * mat3[1] + ty * mat3[2]; + mat3[3] = scaleX * mat3[3] + tx * mat3[5]; + mat3[4] = scaleY * mat3[4] + ty * mat3[5]; + mat3[6] = scaleX * mat3[6] + tx * mat3[8]; + mat3[7] = scaleY * mat3[7] + ty * mat3[8]; + }; + Matrix2d.prototype.applyInverse = function (pos, newPos) { + newPos = newPos || new Point(); + var a = this.mat3; + var x = pos.x; + var y = pos.y; + var a00 = a[0], a01 = a[3], a02 = a[6], a10 = a[1], a11 = a[4], a12 = a[7], a20 = a[2], a21 = a[5], a22 = a[8]; + var newX = (a22 * a11 - a12 * a21) * x + (-a22 * a01 + a02 * a21) * y + (a12 * a01 - a02 * a11); + var newY = (-a22 * a10 + a12 * a20) * x + (a22 * a00 - a02 * a20) * y + (-a12 * a00 + a02 * a10); + var newZ = (a21 * a10 - a11 * a20) * x + (-a21 * a00 + a01 * a20) * y + (a11 * a00 - a01 * a10); + newPos.x = newX / newZ; + newPos.y = newY / newZ; + return newPos; + }; + Matrix2d.prototype.invert = function () { + var a = this.mat3; + var a00 = a[0], a01 = a[1], a02 = a[2], a10 = a[3], a11 = a[4], a12 = a[5], a20 = a[6], a21 = a[7], a22 = a[8], b01 = a22 * a11 - a12 * a21, b11 = -a22 * a10 + a12 * a20, b21 = a21 * a10 - a11 * a20; + var det = a00 * b01 + a01 * b11 + a02 * b21; + if (!det) { + return this; + } + det = 1.0 / det; + a[0] = b01 * det; + a[1] = (-a22 * a01 + a02 * a21) * det; + a[2] = (a12 * a01 - a02 * a11) * det; + a[3] = b11 * det; + a[4] = (a22 * a00 - a02 * a20) * det; + a[5] = (-a12 * a00 + a02 * a10) * det; + a[6] = b21 * det; + a[7] = (-a21 * a00 + a01 * a20) * det; + a[8] = (a11 * a00 - a01 * a10) * det; + return this; + }; + Matrix2d.prototype.identity = function () { + var mat3 = this.mat3; + mat3[0] = 1; + mat3[1] = 0; + mat3[2] = 0; + mat3[3] = 0; + mat3[4] = 1; + mat3[5] = 0; + mat3[6] = 0; + mat3[7] = 0; + mat3[8] = 1; + return this; + }; + Matrix2d.prototype.clone = function () { + return new Matrix2d(this.mat3); + }; + Matrix2d.prototype.copyTo2dOr3d = function (matrix) { + var mat3 = this.mat3; + var ar2 = matrix.mat3; + ar2[0] = mat3[0]; + ar2[1] = mat3[1]; + ar2[2] = mat3[2]; + ar2[3] = mat3[3]; + ar2[4] = mat3[4]; + ar2[5] = mat3[5]; + ar2[6] = mat3[6]; + ar2[7] = mat3[7]; + ar2[8] = mat3[8]; + return matrix; + }; + Matrix2d.prototype.copyTo = function (matrix, affine, preserveOrientation) { + var mat3 = this.mat3; + var d = 1.0 / mat3[8]; + var tx = mat3[6] * d, ty = mat3[7] * d; + matrix.a = (mat3[0] - mat3[2] * tx) * d; + matrix.b = (mat3[1] - mat3[2] * ty) * d; + matrix.c = (mat3[3] - mat3[5] * tx) * d; + matrix.d = (mat3[4] - mat3[5] * ty) * d; + matrix.tx = tx; + matrix.ty = ty; + if (affine >= 2) { + var D = matrix.a * matrix.d - matrix.b * matrix.c; + if (!preserveOrientation) { + D = Math.abs(D); + } + if (affine === AFFINE.POINT) { + if (D > 0) { + D = 1; + } + else + D = -1; + matrix.a = D; + matrix.b = 0; + matrix.c = 0; + matrix.d = D; + } + else if (affine === AFFINE.AXIS_X) { + D /= Math.sqrt(matrix.b * matrix.b + matrix.d * matrix.d); + matrix.c = 0; + matrix.d = D; + } + else if (affine === AFFINE.AXIS_Y) { + D /= Math.sqrt(matrix.a * matrix.a + matrix.c * matrix.c); + matrix.a = D; + matrix.c = 0; + } + else if (affine === AFFINE.AXIS_XR) { + matrix.a = matrix.d * D; + matrix.c = -matrix.b * D; + } + } + return matrix; + }; + Matrix2d.prototype.copyFrom = function (matrix) { + var mat3 = this.mat3; + mat3[0] = matrix.a; + mat3[1] = matrix.b; + mat3[2] = 0; + mat3[3] = matrix.c; + mat3[4] = matrix.d; + mat3[5] = 0; + mat3[6] = matrix.tx; + mat3[7] = matrix.ty; + mat3[8] = 1.0; + return this; + }; + Matrix2d.prototype.setToMultLegacy = function (pt, lt) { + var out = this.mat3; + var b = lt.mat3; + var a00 = pt.a, a01 = pt.b, a10 = pt.c, a11 = pt.d, a20 = pt.tx, a21 = pt.ty, b00 = b[0], b01 = b[1], b02 = b[2], b10 = b[3], b11 = b[4], b12 = b[5], b20 = b[6], b21 = b[7], b22 = b[8]; + out[0] = b00 * a00 + b01 * a10 + b02 * a20; + out[1] = b00 * a01 + b01 * a11 + b02 * a21; + out[2] = b02; + out[3] = b10 * a00 + b11 * a10 + b12 * a20; + out[4] = b10 * a01 + b11 * a11 + b12 * a21; + out[5] = b12; + out[6] = b20 * a00 + b21 * a10 + b22 * a20; + out[7] = b20 * a01 + b21 * a11 + b22 * a21; + out[8] = b22; + return this; + }; + Matrix2d.prototype.setToMultLegacy2 = function (pt, lt) { + var out = this.mat3; + var a = pt.mat3; + var a00 = a[0], a01 = a[1], a02 = a[2], a10 = a[3], a11 = a[4], a12 = a[5], a20 = a[6], a21 = a[7], a22 = a[8], b00 = lt.a, b01 = lt.b, b10 = lt.c, b11 = lt.d, b20 = lt.tx, b21 = lt.ty; + out[0] = b00 * a00 + b01 * a10; + out[1] = b00 * a01 + b01 * a11; + out[2] = b00 * a02 + b01 * a12; + out[3] = b10 * a00 + b11 * a10; + out[4] = b10 * a01 + b11 * a11; + out[5] = b10 * a02 + b11 * a12; + out[6] = b20 * a00 + b21 * a10 + a20; + out[7] = b20 * a01 + b21 * a11 + a21; + out[8] = b20 * a02 + b21 * a12 + a22; + return this; + }; + Matrix2d.prototype.setToMult = function (pt, lt) { + var out = this.mat3; + var a = pt.mat3, b = lt.mat3; + var a00 = a[0], a01 = a[1], a02 = a[2], a10 = a[3], a11 = a[4], a12 = a[5], a20 = a[6], a21 = a[7], a22 = a[8], b00 = b[0], b01 = b[1], b02 = b[2], b10 = b[3], b11 = b[4], b12 = b[5], b20 = b[6], b21 = b[7], b22 = b[8]; + out[0] = b00 * a00 + b01 * a10 + b02 * a20; + out[1] = b00 * a01 + b01 * a11 + b02 * a21; + out[2] = b00 * a02 + b01 * a12 + b02 * a22; + out[3] = b10 * a00 + b11 * a10 + b12 * a20; + out[4] = b10 * a01 + b11 * a11 + b12 * a21; + out[5] = b10 * a02 + b11 * a12 + b12 * a22; + out[6] = b20 * a00 + b21 * a10 + b22 * a20; + out[7] = b20 * a01 + b21 * a11 + b22 * a21; + out[8] = b20 * a02 + b21 * a12 + b22 * a22; + return this; + }; + Matrix2d.prototype.prepend = function (lt) { + if (lt.mat3) { + return this.setToMult(lt, this); + } + else { + return this.setToMultLegacy(lt, this); + } + }; + Matrix2d.IDENTITY = new Matrix2d(); + Matrix2d.TEMP_MATRIX = new Matrix2d(); + return Matrix2d; + }()); + pixi_projection.Matrix2d = Matrix2d; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var t0 = new PIXI.Point(); + var tt = [new PIXI.Point(), new PIXI.Point(), new PIXI.Point(), new PIXI.Point()]; + var tempRect = new PIXI.Rectangle(); + var tempMat = new pixi_projection.Matrix2d(); + var Projection2d = (function (_super) { + __extends(Projection2d, _super); + function Projection2d(legacy, enable) { + var _this = _super.call(this, legacy, enable) || this; + _this.matrix = new pixi_projection.Matrix2d(); + _this.pivot = new PIXI.ObservablePoint(_this.onChange, _this, 0, 0); + _this.reverseLocalOrder = false; + _this.local = new pixi_projection.Matrix2d(); + _this.world = new pixi_projection.Matrix2d(); + return _this; + } + Projection2d.prototype.onChange = function () { + var pivot = this.pivot; + var mat3 = this.matrix.mat3; + mat3[6] = -(pivot._x * mat3[0] + pivot._y * mat3[3]); + mat3[7] = -(pivot._x * mat3[1] + pivot._y * mat3[4]); + this._projID++; + }; + Projection2d.prototype.setAxisX = function (p, factor) { + if (factor === void 0) { factor = 1; } + var x = p.x, y = p.y; + var d = Math.sqrt(x * x + y * y); + var mat3 = this.matrix.mat3; + mat3[0] = x / d; + mat3[1] = y / d; + mat3[2] = factor / d; + this.onChange(); + }; + Projection2d.prototype.setAxisY = function (p, factor) { + if (factor === void 0) { factor = 1; } + var x = p.x, y = p.y; + var d = Math.sqrt(x * x + y * y); + var mat3 = this.matrix.mat3; + mat3[3] = x / d; + mat3[4] = y / d; + mat3[5] = factor / d; + this.onChange(); + }; + Projection2d.prototype.mapSprite = function (sprite, quad) { + var tex = sprite.texture; + tempRect.x = -sprite.anchor.x * tex.orig.width; + tempRect.y = -sprite.anchor.y * tex.orig.height; + tempRect.width = tex.orig.width; + tempRect.height = tex.orig.height; + return this.mapQuad(tempRect, quad); + }; + Projection2d.prototype.mapQuad = function (rect, p) { + tt[0].set(rect.x, rect.y); + tt[1].set(rect.x + rect.width, rect.y); + tt[2].set(rect.x + rect.width, rect.y + rect.height); + tt[3].set(rect.x, rect.y + rect.height); + var k1 = 1, k2 = 2, k3 = 3; + var f = pixi_projection.utils.getIntersectionFactor(p[0], p[2], p[1], p[3], t0); + if (f !== 0) { + k1 = 1; + k2 = 3; + k3 = 2; + } + else { + return; + } + var d0 = Math.sqrt((p[0].x - t0.x) * (p[0].x - t0.x) + (p[0].y - t0.y) * (p[0].y - t0.y)); + var d1 = Math.sqrt((p[k1].x - t0.x) * (p[k1].x - t0.x) + (p[k1].y - t0.y) * (p[k1].y - t0.y)); + var d2 = Math.sqrt((p[k2].x - t0.x) * (p[k2].x - t0.x) + (p[k2].y - t0.y) * (p[k2].y - t0.y)); + var d3 = Math.sqrt((p[k3].x - t0.x) * (p[k3].x - t0.x) + (p[k3].y - t0.y) * (p[k3].y - t0.y)); + var q0 = (d0 + d3) / d3; + var q1 = (d1 + d2) / d2; + var q2 = (d1 + d2) / d1; + var mat3 = this.matrix.mat3; + mat3[0] = tt[0].x * q0; + mat3[1] = tt[0].y * q0; + mat3[2] = q0; + mat3[3] = tt[k1].x * q1; + mat3[4] = tt[k1].y * q1; + mat3[5] = q1; + mat3[6] = tt[k2].x * q2; + mat3[7] = tt[k2].y * q2; + mat3[8] = q2; + this.matrix.invert(); + mat3 = tempMat.mat3; + mat3[0] = p[0].x; + mat3[1] = p[0].y; + mat3[2] = 1; + mat3[3] = p[k1].x; + mat3[4] = p[k1].y; + mat3[5] = 1; + mat3[6] = p[k2].x; + mat3[7] = p[k2].y; + mat3[8] = 1; + this.matrix.setToMult(tempMat, this.matrix); + this._projID++; + }; + Projection2d.prototype.updateLocalTransform = function (lt) { + if (this._projID !== 0) { + if (this.reverseLocalOrder) { + this.local.setToMultLegacy2(this.matrix, lt); + } + else { + this.local.setToMultLegacy(lt, this.matrix); + } + } + else { + this.local.copyFrom(lt); + } + }; + Projection2d.prototype.clear = function () { + _super.prototype.clear.call(this); + this.matrix.identity(); + this.pivot.set(0, 0); + }; + return Projection2d; + }(pixi_projection.LinearProjection)); + pixi_projection.Projection2d = Projection2d; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var Mesh2d = (function (_super) { + __extends(Mesh2d, _super); + function Mesh2d(geometry, shader, state, drawMode) { + var _this = _super.call(this, geometry, shader, state, drawMode) || this; + _this.vertexData2d = null; + _this.proj = new pixi_projection.Projection2d(_this.transform); + return _this; + } + Mesh2d.prototype.calculateVertices = function () { + if (this.proj._affine) { + this.vertexData2d = null; + _super.prototype.calculateVertices.call(this); + return; + } + var geometry = this.geometry; + var vertices = geometry.buffers[0].data; + var thisAny = this; + if (geometry.vertexDirtyId === thisAny.vertexDirty && thisAny._transformID === thisAny.transform._worldID) { + return; + } + thisAny._transformID = thisAny.transform._worldID; + if (thisAny.vertexData.length !== vertices.length) { + thisAny.vertexData = new Float32Array(vertices.length); + } + if (this.vertexData2d.length !== vertices.length * 3 / 2) { + this.vertexData2d = new Float32Array(vertices.length * 3); + } + var wt = this.proj.world.mat3; + var vertexData2d = this.vertexData2d; + var vertexData = thisAny.vertexData; + for (var i = 0; i < vertexData.length / 2; i++) { + var x = vertices[(i * 2)]; + var y = vertices[(i * 2) + 1]; + var xx = (wt[0] * x) + (wt[3] * y) + wt[6]; + var yy = (wt[1] * x) + (wt[4] * y) + wt[7]; + var ww = (wt[2] * x) + (wt[5] * y) + wt[8]; + vertexData2d[i * 3] = xx; + vertexData2d[i * 3 + 1] = yy; + vertexData2d[i * 3 + 2] = ww; + vertexData[(i * 2)] = xx / ww; + vertexData[(i * 2) + 1] = yy / ww; + } + thisAny.vertexDirty = geometry.vertexDirtyId; + }; + Mesh2d.prototype._renderDefault = function (renderer) { + var shader = this.shader; + shader.alpha = this.worldAlpha; + if (shader.update) { + shader.update(); + } + renderer.batch.flush(); + if (shader.program.uniformData.translationMatrix) { + shader.uniforms.translationMatrix = this.worldTransform.toArray(true); + } + renderer.shader.bind(shader, false); + renderer.state.set(this.state); + renderer.geometry.bind(this.geometry, shader); + renderer.geometry.draw(this.drawMode, this.size, this.start, this.geometry.instanceCount); + }; + Mesh2d.prototype.toLocal = function (position, from, point, skipUpdate, step) { + if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } + return pixi_projection.container2dToLocal.call(this, position, from, point, skipUpdate, step); + }; + Object.defineProperty(Mesh2d.prototype, "worldTransform", { + get: function () { + return this.proj.affine ? this.transform.worldTransform : this.proj.world; + }, + enumerable: true, + configurable: true + }); + Mesh2d.defaultVertexShader = "precision highp float;\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position.xyw = projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0);\n gl_Position.z = 0.0;\n\n vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\n}\n"; + Mesh2d.defaultFragmentShader = "\nvarying vec2 vTextureCoord;\nuniform vec4 uColor;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n gl_FragColor = texture2D(uSampler, vTextureCoord) * uColor;\n}"; + return Mesh2d; + }(PIXI.Mesh)); + pixi_projection.Mesh2d = Mesh2d; + var SimpleMesh2d = (function (_super) { + __extends(SimpleMesh2d, _super); + function SimpleMesh2d(texture, vertices, uvs, indices, drawMode) { + var _this = _super.call(this, new PIXI.MeshGeometry(vertices, uvs, indices), new PIXI.MeshMaterial(texture, { + program: PIXI.Program.from(Mesh2d.defaultVertexShader, Mesh2d.defaultFragmentShader), + pluginName: 'batch2d' + }), null, drawMode) || this; + _this.autoUpdate = true; + _this.geometry.getBuffer('aVertexPosition').static = false; + return _this; + } + Object.defineProperty(SimpleMesh2d.prototype, "vertices", { + get: function () { + return this.geometry.getBuffer('aVertexPosition').data; + }, + set: function (value) { + this.geometry.getBuffer('aVertexPosition').data = value; + }, + enumerable: true, + configurable: true + }); + SimpleMesh2d.prototype._render = function (renderer) { + if (this.autoUpdate) { + this.geometry.getBuffer('aVertexPosition').update(); + } + _super.prototype._render.call(this, renderer); + }; + return SimpleMesh2d; + }(Mesh2d)); + pixi_projection.SimpleMesh2d = SimpleMesh2d; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var Sprite2d = (function (_super) { + __extends(Sprite2d, _super); + function Sprite2d(texture) { + var _this = _super.call(this, texture) || this; + _this.vertexData2d = null; + _this.proj = new pixi_projection.Projection2d(_this.transform); + _this.pluginName = 'batch2d'; + return _this; + } + Sprite2d.prototype._calculateBounds = function () { + this.calculateTrimmedVertices(); + this._bounds.addQuad(this.vertexTrimmedData); + }; + Sprite2d.prototype.calculateVertices = function () { + var texture = this._texture; + if (this.proj._affine) { + this.vertexData2d = null; + _super.prototype.calculateVertices.call(this); + return; + } + if (!this.vertexData2d) { + this.vertexData2d = new Float32Array(12); + } + var wid = this.transform._worldID; + var tuid = texture._updateID; + if (this._transformID === wid && this._textureID === tuid) { + return; + } + if (this._textureID !== tuid) { + this.uvs = texture._uvs.uvsFloat32; + } + this._transformID = wid; + this._textureID = tuid; + var wt = this.proj.world.mat3; + var vertexData2d = this.vertexData2d; + var vertexData = this.vertexData; + var trim = texture.trim; + var orig = texture.orig; + var anchor = this._anchor; + var w0 = 0; + var w1 = 0; + var h0 = 0; + var h1 = 0; + if (trim) { + w1 = trim.x - (anchor._x * orig.width); + w0 = w1 + trim.width; + h1 = trim.y - (anchor._y * orig.height); + h0 = h1 + trim.height; + } + else { + w1 = -anchor._x * orig.width; + w0 = w1 + orig.width; + h1 = -anchor._y * orig.height; + h0 = h1 + orig.height; + } + vertexData2d[0] = (wt[0] * w1) + (wt[3] * h1) + wt[6]; + vertexData2d[1] = (wt[1] * w1) + (wt[4] * h1) + wt[7]; + vertexData2d[2] = (wt[2] * w1) + (wt[5] * h1) + wt[8]; + vertexData2d[3] = (wt[0] * w0) + (wt[3] * h1) + wt[6]; + vertexData2d[4] = (wt[1] * w0) + (wt[4] * h1) + wt[7]; + vertexData2d[5] = (wt[2] * w0) + (wt[5] * h1) + wt[8]; + vertexData2d[6] = (wt[0] * w0) + (wt[3] * h0) + wt[6]; + vertexData2d[7] = (wt[1] * w0) + (wt[4] * h0) + wt[7]; + vertexData2d[8] = (wt[2] * w0) + (wt[5] * h0) + wt[8]; + vertexData2d[9] = (wt[0] * w1) + (wt[3] * h0) + wt[6]; + vertexData2d[10] = (wt[1] * w1) + (wt[4] * h0) + wt[7]; + vertexData2d[11] = (wt[2] * w1) + (wt[5] * h0) + wt[8]; + vertexData[0] = vertexData2d[0] / vertexData2d[2]; + vertexData[1] = vertexData2d[1] / vertexData2d[2]; + vertexData[2] = vertexData2d[3] / vertexData2d[5]; + vertexData[3] = vertexData2d[4] / vertexData2d[5]; + vertexData[4] = vertexData2d[6] / vertexData2d[8]; + vertexData[5] = vertexData2d[7] / vertexData2d[8]; + vertexData[6] = vertexData2d[9] / vertexData2d[11]; + vertexData[7] = vertexData2d[10] / vertexData2d[11]; + }; + Sprite2d.prototype.calculateTrimmedVertices = function () { + if (this.proj._affine) { + _super.prototype.calculateTrimmedVertices.call(this); + return; + } + var wid = this.transform._worldID; + var tuid = this._texture._updateID; + if (!this.vertexTrimmedData) { + this.vertexTrimmedData = new Float32Array(8); + } + else if (this._transformTrimmedID === wid && this._textureTrimmedID === tuid) { + return; + } + this._transformTrimmedID = wid; + this._textureTrimmedID = tuid; + var texture = this._texture; + var vertexData = this.vertexTrimmedData; + var orig = texture.orig; + var anchor = this._anchor; + var wt = this.proj.world.mat3; + var w1 = -anchor._x * orig.width; + var w0 = w1 + orig.width; + var h1 = -anchor._y * orig.height; + var h0 = h1 + orig.height; + var z = 1.0 / (wt[2] * w1 + wt[5] * h1 + wt[8]); + vertexData[0] = z * ((wt[0] * w1) + (wt[3] * h1) + wt[6]); + vertexData[1] = z * ((wt[1] * w1) + (wt[4] * h1) + wt[7]); + z = 1.0 / (wt[2] * w0 + wt[5] * h1 + wt[8]); + vertexData[2] = z * ((wt[0] * w0) + (wt[3] * h1) + wt[6]); + vertexData[3] = z * ((wt[1] * w0) + (wt[4] * h1) + wt[7]); + z = 1.0 / (wt[2] * w0 + wt[5] * h0 + wt[8]); + vertexData[4] = z * ((wt[0] * w0) + (wt[3] * h0) + wt[6]); + vertexData[5] = z * ((wt[1] * w0) + (wt[4] * h0) + wt[7]); + z = 1.0 / (wt[2] * w1 + wt[5] * h0 + wt[8]); + vertexData[6] = z * ((wt[0] * w1) + (wt[3] * h0) + wt[6]); + vertexData[7] = z * ((wt[1] * w1) + (wt[4] * h0) + wt[7]); + }; + Sprite2d.prototype.toLocal = function (position, from, point, skipUpdate, step) { + if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } + return pixi_projection.container2dToLocal.call(this, position, from, point, skipUpdate, step); + }; + Object.defineProperty(Sprite2d.prototype, "worldTransform", { + get: function () { + return this.proj.affine ? this.transform.worldTransform : this.proj.world; + }, + enumerable: true, + configurable: true + }); + return Sprite2d; + }(PIXI.Sprite)); + pixi_projection.Sprite2d = Sprite2d; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var Text2d = (function (_super) { + __extends(Text2d, _super); + function Text2d(text, style, canvas) { + var _this = _super.call(this, text, style, canvas) || this; + _this.vertexData2d = null; + _this.proj = new pixi_projection.Projection2d(_this.transform); + _this.pluginName = 'batch2d'; + return _this; + } + Object.defineProperty(Text2d.prototype, "worldTransform", { + get: function () { + return this.proj.affine ? this.transform.worldTransform : this.proj.world; + }, + enumerable: true, + configurable: true + }); + return Text2d; + }(PIXI.Text)); + pixi_projection.Text2d = Text2d; + Text2d.prototype.calculateVertices = pixi_projection.Sprite2d.prototype.calculateVertices; + Text2d.prototype.calculateTrimmedVertices = pixi_projection.Sprite2d.prototype.calculateTrimmedVertices; + Text2d.prototype._calculateBounds = pixi_projection.Sprite2d.prototype._calculateBounds; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + function convertTo2d() { + if (this.proj) + return; + this.proj = new pixi_projection.Projection2d(this.transform); + this.toLocal = pixi_projection.Container2d.prototype.toLocal; + Object.defineProperty(this, "worldTransform", { + get: pixi_projection.container2dWorldTransform, + enumerable: true, + configurable: true + }); + } + PIXI.Container.prototype.convertTo2d = convertTo2d; + PIXI.Sprite.prototype.convertTo2d = function () { + if (this.proj) + return; + this.calculateVertices = pixi_projection.Sprite2d.prototype.calculateVertices; + this.calculateTrimmedVertices = pixi_projection.Sprite2d.prototype.calculateTrimmedVertices; + this._calculateBounds = pixi_projection.Sprite2d.prototype._calculateBounds; + this.pluginName = 'sprite2d'; + convertTo2d.call(this); + }; + PIXI.Container.prototype.convertSubtreeTo2d = function () { + this.convertTo2d(); + for (var i = 0; i < this.children.length; i++) { + this.children[i].convertSubtreeTo2d(); + } + }; + if (PIXI.SimpleMesh) { + PIXI.SimpleMesh.prototype.convertTo2d = + PIXI.SimpleRope.prototype.convertTo2d = + function () { + if (this.proj) + return; + this.calculateVertices = pixi_projection.Mesh2d.prototype.calculateVertices; + this._renderDefault = pixi_projection.Mesh2d.prototype._renderDefault; + if (this.material.pluginName !== 'batch2d') { + this.material = new PIXI.MeshMaterial(this.material.texture, { + program: PIXI.Program.from(pixi_projection.Mesh2d.defaultVertexShader, pixi_projection.Mesh2d.defaultFragmentShader), + pluginName: 'batch2d' + }); + } + convertTo2d.call(this); + }; + } +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var tempTransform = new PIXI.Transform(); + var TilingSprite2d = (function (_super) { + __extends(TilingSprite2d, _super); + function TilingSprite2d(texture, width, height) { + var _this = _super.call(this, texture, width, height) || this; + _this.tileProj = new pixi_projection.Projection2d(_this.tileTransform); + _this.tileProj.reverseLocalOrder = true; + _this.proj = new pixi_projection.Projection2d(_this.transform); + _this.pluginName = 'tilingSprite2d'; + _this.uvRespectAnchor = true; + return _this; + } + Object.defineProperty(TilingSprite2d.prototype, "worldTransform", { + get: function () { + return this.proj.affine ? this.transform.worldTransform : this.proj.world; + }, + enumerable: true, + configurable: true + }); + TilingSprite2d.prototype.toLocal = function (position, from, point, skipUpdate, step) { + if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } + return pixi_projection.container2dToLocal.call(this, position, from, point, skipUpdate, step); + }; + TilingSprite2d.prototype._render = function (renderer) { + var texture = this._texture; + if (!texture || !texture.valid) { + return; + } + this.tileTransform.updateTransform(tempTransform); + this.uvMatrix.update(); + renderer.batch.setObjectRenderer(renderer.plugins[this.pluginName]); + renderer.plugins[this.pluginName].render(this); + }; + return TilingSprite2d; + }(PIXI.TilingSprite)); + pixi_projection.TilingSprite2d = TilingSprite2d; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var shaderVert = "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nvarying vec3 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position.xyw = projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0);\n\n vTextureCoord = uTransform * vec3(aTextureCoord, 1.0);\n}\n"; + var shaderFrag = "\nvarying vec3 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\nuniform mat3 uMapCoord;\nuniform vec4 uClampFrame;\nuniform vec2 uClampOffset;\n\nvoid main(void)\n{\n vec2 coord = mod(vTextureCoord.xy / vTextureCoord.z - uClampOffset, vec2(1.0, 1.0)) + uClampOffset;\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\n\n vec4 sample = texture2D(uSampler, coord);\n gl_FragColor = sample * uColor;\n}\n"; + var shaderSimpleFrag = "\n\tvarying vec3 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\n\nvoid main(void)\n{\n vec4 sample = texture2D(uSampler, vTextureCoord.xy / vTextureCoord.z);\n gl_FragColor = sample * uColor;\n}\n"; + var tempMat = new pixi_projection.Matrix2d(); + var WRAP_MODES = PIXI.WRAP_MODES; + var utils = PIXI.utils; + var TilingSprite2dRenderer = (function (_super) { + __extends(TilingSprite2dRenderer, _super); + function TilingSprite2dRenderer(renderer) { + var _this = _super.call(this, renderer) || this; + _this.quad = new PIXI.QuadUv(); + var uniforms = { globals: _this.renderer.globalUniforms }; + _this.shader = PIXI.Shader.from(shaderVert, shaderFrag, uniforms); + _this.simpleShader = PIXI.Shader.from(shaderVert, shaderSimpleFrag, uniforms); + return _this; + } + TilingSprite2dRenderer.prototype.render = function (ts) { + var renderer = this.renderer; + var quad = this.quad; + var vertices = quad.vertices; + vertices[0] = vertices[6] = (ts._width) * -ts.anchor.x; + vertices[1] = vertices[3] = ts._height * -ts.anchor.y; + vertices[2] = vertices[4] = (ts._width) * (1.0 - ts.anchor.x); + vertices[5] = vertices[7] = ts._height * (1.0 - ts.anchor.y); + if (ts.uvRespectAnchor) { + vertices = quad.uvs; + vertices[0] = vertices[6] = -ts.anchor.x; + vertices[1] = vertices[3] = -ts.anchor.y; + vertices[2] = vertices[4] = 1.0 - ts.anchor.x; + vertices[5] = vertices[7] = 1.0 - ts.anchor.y; + } + quad.invalidate(); + var tex = ts._texture; + var baseTex = tex.baseTexture; + var lt = ts.tileProj.world; + var uv = ts.uvMatrix; + var isSimple = baseTex.isPowerOfTwo + && tex.frame.width === baseTex.width && tex.frame.height === baseTex.height; + if (isSimple) { + if (!baseTex._glTextures[renderer.CONTEXT_UID]) { + if (baseTex.wrapMode === WRAP_MODES.CLAMP) { + baseTex.wrapMode = WRAP_MODES.REPEAT; + } + } + else { + isSimple = baseTex.wrapMode !== WRAP_MODES.CLAMP; + } + } + var shader = isSimple ? this.simpleShader : this.shader; + tempMat.identity(); + tempMat.scale(tex.width, tex.height); + tempMat.prepend(lt); + tempMat.scale(1.0 / ts._width, 1.0 / ts._height); + tempMat.invert(); + if (isSimple) { + tempMat.prepend(uv.mapCoord); + } + else { + shader.uniforms.uMapCoord = uv.mapCoord.toArray(true); + shader.uniforms.uClampFrame = uv.uClampFrame; + shader.uniforms.uClampOffset = uv.uClampOffset; + } + shader.uniforms.uTransform = tempMat.toArray(true); + shader.uniforms.uColor = utils.premultiplyTintToRgba(ts.tint, ts.worldAlpha, shader.uniforms.uColor, baseTex.premultiplyAlpha); + shader.uniforms.translationMatrix = ts.transform.worldTransform.toArray(true); + shader.uniforms.uSampler = tex; + renderer.shader.bind(shader, false); + renderer.geometry.bind(quad, undefined); + renderer.state.setBlendMode(utils.correctBlendMode(ts.blendMode, baseTex.premultiplyAlpha)); + renderer.geometry.draw(PIXI.DRAW_MODES.TRIANGLES, 6, 0); + }; + return TilingSprite2dRenderer; + }(PIXI.ObjectRenderer)); + pixi_projection.TilingSprite2dRenderer = TilingSprite2dRenderer; + PIXI.Renderer.registerPlugin('tilingSprite2d', TilingSprite2dRenderer); +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + PIXI.systems.MaskSystem.prototype.pushSpriteMask = function (maskData) { + var maskObject = maskData.maskObject; + var target = maskData._target; + var alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex]; + if (!alphaMaskFilter) { + alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex] = [new pixi_projection.SpriteMaskFilter2d(maskObject)]; + } + alphaMaskFilter[0].resolution = this.renderer.resolution; + alphaMaskFilter[0].maskSprite = maskData; + var stashFilterArea = target.filterArea; + target.filterArea = maskObject.getBounds(true); + this.renderer.filter.push(target, alphaMaskFilter); + target.filterArea = stashFilterArea; + this.renderer.filter.push(target, alphaMaskFilter); + this.alphaMaskIndex++; + }; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var spriteMaskVert = "\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 otherMatrix;\n\nvarying vec3 vMaskCoord;\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n\tgl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n\tvTextureCoord = aTextureCoord;\n\tvMaskCoord = otherMatrix * vec3( aTextureCoord, 1.0);\n}\n"; + var spriteMaskFrag = "\nvarying vec3 vMaskCoord;\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform sampler2D mask;\nuniform float alpha;\nuniform vec4 maskClamp;\n\nvoid main(void)\n{\n vec2 uv = vMaskCoord.xy / vMaskCoord.z;\n \n float clip = step(3.5,\n step(maskClamp.x, uv.x) +\n step(maskClamp.y, uv.y) +\n step(uv.x, maskClamp.z) +\n step(uv.y, maskClamp.w));\n\n vec4 original = texture2D(uSampler, vTextureCoord);\n vec4 masky = texture2D(mask, uv);\n \n original *= (masky.r * masky.a * alpha * clip);\n\n gl_FragColor = original;\n}\n"; + var tempMat = new pixi_projection.Matrix2d(); + var SpriteMaskFilter2d = (function (_super) { + __extends(SpriteMaskFilter2d, _super); + function SpriteMaskFilter2d(sprite) { + var _this = _super.call(this, spriteMaskVert, spriteMaskFrag) || this; + _this.maskMatrix = new pixi_projection.Matrix2d(); + sprite.renderable = false; + _this.maskSprite = sprite; + return _this; + } + SpriteMaskFilter2d.prototype.apply = function (filterManager, input, output, clear) { + var maskSprite = this.maskSprite; + var tex = this.maskSprite.texture; + if (!tex.valid) { + return; + } + if (!tex.uvMatrix) { + tex.uvMatrix = new PIXI.TextureMatrix(tex, 0.0); + } + tex.uvMatrix.update(); + this.uniforms.mask = maskSprite.texture; + this.uniforms.otherMatrix = SpriteMaskFilter2d.calculateSpriteMatrix(input, this.maskMatrix, maskSprite) + .prepend(tex.uvMatrix.mapCoord); + this.uniforms.alpha = maskSprite.worldAlpha; + this.uniforms.maskClamp = tex.uvMatrix.uClampFrame; + filterManager.applyFilter(this, input, output, clear); + }; + SpriteMaskFilter2d.calculateSpriteMatrix = function (input, mappedMatrix, sprite) { + var proj = sprite.proj; + var filterArea = input.filterFrame; + var worldTransform = proj && !proj._affine ? proj.world.copyTo2dOr3d(tempMat) : tempMat.copyFrom(sprite.transform.worldTransform); + var texture = sprite.texture.orig; + mappedMatrix.set(input.width, 0, 0, input.height, filterArea.x, filterArea.y); + worldTransform.invert(); + mappedMatrix.setToMult(worldTransform, mappedMatrix); + mappedMatrix.scaleAndTranslate(1.0 / texture.width, 1.0 / texture.height, sprite.anchor.x, sprite.anchor.y); + return mappedMatrix; + }; + return SpriteMaskFilter2d; + }(PIXI.Filter)); + pixi_projection.SpriteMaskFilter2d = SpriteMaskFilter2d; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + function container3dWorldTransform() { + return this.proj.affine ? this.transform.worldTransform : this.proj.world; + } + pixi_projection.container3dWorldTransform = container3dWorldTransform; + var Container3d = (function (_super) { + __extends(Container3d, _super); + function Container3d() { + var _this = _super.call(this) || this; + _this.proj = new pixi_projection.Projection3d(_this.transform); + return _this; + } + Container3d.prototype.isFrontFace = function (forceUpdate) { + if (forceUpdate === void 0) { forceUpdate = false; } + if (forceUpdate) { + this._recursivePostUpdateTransform(); + this.displayObjectUpdateTransform(); + } + var mat = this.proj.world.mat4; + var dx1 = mat[0] * mat[15] - mat[3] * mat[12]; + var dy1 = mat[1] * mat[15] - mat[3] * mat[13]; + var dx2 = mat[4] * mat[15] - mat[7] * mat[12]; + var dy2 = mat[5] * mat[15] - mat[7] * mat[13]; + return dx1 * dy2 - dx2 * dy1 > 0; + }; + Container3d.prototype.getDepth = function (forceUpdate) { + if (forceUpdate === void 0) { forceUpdate = false; } + if (forceUpdate) { + this._recursivePostUpdateTransform(); + this.displayObjectUpdateTransform(); + } + var mat4 = this.proj.world.mat4; + return mat4[14] / mat4[15]; + }; + Container3d.prototype.toLocal = function (position, from, point, skipUpdate, step) { + if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } + if (from) { + position = from.toGlobal(position, point, skipUpdate); + } + if (!skipUpdate) { + this._recursivePostUpdateTransform(); + } + if (step === pixi_projection.TRANSFORM_STEP.ALL) { + if (!skipUpdate) { + this.displayObjectUpdateTransform(); + } + if (this.proj.affine) { + return this.transform.worldTransform.applyInverse(position, point); + } + return this.proj.world.applyInverse(position, point); + } + if (this.parent) { + point = this.parent.worldTransform.applyInverse(position, point); + } + else { + point.copyFrom(position); + } + if (step === pixi_projection.TRANSFORM_STEP.NONE) { + return point; + } + point = this.transform.localTransform.applyInverse(point, point); + if (step === pixi_projection.TRANSFORM_STEP.PROJ && this.proj.cameraMode) { + point = this.proj.cameraMatrix.applyInverse(point, point); + } + return point; + }; + Object.defineProperty(Container3d.prototype, "worldTransform", { + get: function () { + return this.proj.affine ? this.transform.worldTransform : this.proj.world; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Container3d.prototype, "position3d", { + get: function () { + return this.proj.position; + }, + set: function (value) { + this.proj.position.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Container3d.prototype, "scale3d", { + get: function () { + return this.proj.scale; + }, + set: function (value) { + this.proj.scale.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Container3d.prototype, "euler", { + get: function () { + return this.proj.euler; + }, + set: function (value) { + this.proj.euler.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Container3d.prototype, "pivot3d", { + get: function () { + return this.proj.pivot; + }, + set: function (value) { + this.proj.pivot.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + return Container3d; + }(PIXI.Container)); + pixi_projection.Container3d = Container3d; + pixi_projection.container3dToLocal = Container3d.prototype.toLocal; + pixi_projection.container3dGetDepth = Container3d.prototype.getDepth; + pixi_projection.container3dIsFrontFace = Container3d.prototype.isFrontFace; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var Camera3d = (function (_super) { + __extends(Camera3d, _super); + function Camera3d() { + var _this = _super.call(this) || this; + _this._far = 0; + _this._near = 0; + _this._focus = 0; + _this._orthographic = false; + _this.proj.cameraMode = true; + _this.setPlanes(400, 10, 10000, false); + return _this; + } + Object.defineProperty(Camera3d.prototype, "far", { + get: function () { + return this._far; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Camera3d.prototype, "near", { + get: function () { + return this._near; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Camera3d.prototype, "focus", { + get: function () { + return this._focus; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Camera3d.prototype, "ortographic", { + get: function () { + return this._orthographic; + }, + enumerable: true, + configurable: true + }); + Camera3d.prototype.setPlanes = function (focus, near, far, orthographic) { + if (near === void 0) { near = 10; } + if (far === void 0) { far = 10000; } + if (orthographic === void 0) { orthographic = false; } + this._focus = focus; + this._near = near; + this._far = far; + this._orthographic = orthographic; + var proj = this.proj; + var mat4 = proj.cameraMatrix.mat4; + proj._projID++; + mat4[10] = 1.0 / (far - near); + mat4[14] = (focus - near) / (far - near); + if (this._orthographic) { + mat4[11] = 0; + } + else { + mat4[11] = 1.0 / focus; + } + }; + return Camera3d; + }(pixi_projection.Container3d)); + pixi_projection.Camera3d = Camera3d; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var Euler = (function () { + function Euler(x, y, z) { + this._quatUpdateId = -1; + this._quatDirtyId = 0; + this._sign = 1; + this._x = x || 0; + this._y = y || 0; + this._z = z || 0; + this.quaternion = new Float64Array(4); + this.quaternion[3] = 1; + this.update(); + } + Object.defineProperty(Euler.prototype, "x", { + get: function () { + return this._x; + }, + set: function (value) { + if (this._x !== value) { + this._x = value; + this._quatDirtyId++; + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Euler.prototype, "y", { + get: function () { + return this._y; + }, + set: function (value) { + if (this._y !== value) { + this._y = value; + this._quatDirtyId++; + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Euler.prototype, "z", { + get: function () { + return this._z; + }, + set: function (value) { + if (this._z !== value) { + this._z = value; + this._quatDirtyId++; + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Euler.prototype, "pitch", { + get: function () { + return this._x; + }, + set: function (value) { + if (this._x !== value) { + this._x = value; + this._quatDirtyId++; + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Euler.prototype, "yaw", { + get: function () { + return this._y; + }, + set: function (value) { + if (this._y !== value) { + this._y = value; + this._quatDirtyId++; + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Euler.prototype, "roll", { + get: function () { + return this._z; + }, + set: function (value) { + if (this._z !== value) { + this._z = value; + this._quatDirtyId++; + } + }, + enumerable: true, + configurable: true + }); + Euler.prototype.set = function (x, y, z) { + var _x = x || 0; + var _y = y || 0; + var _z = z || 0; + if (this._x !== _x || this._y !== _y || this._z !== _z) { + this._x = _x; + this._y = _y; + this._z = _z; + this._quatDirtyId++; + } + }; + ; + Euler.prototype.copyFrom = function (euler) { + var _x = euler.x; + var _y = euler.y; + var _z = euler.z; + if (this._x !== _x || this._y !== _y || this._z !== _z) { + this._x = _x; + this._y = _y; + this._z = _z; + this._quatDirtyId++; + } + }; + Euler.prototype.copyTo = function (p) { + p.set(this._x, this._y, this._z); + return p; + }; + Euler.prototype.equals = function (euler) { + return this._x === euler.x + && this._y === euler.y + && this._z === euler.z; + }; + Euler.prototype.clone = function () { + return new Euler(this._x, this._y, this._z); + }; + Euler.prototype.update = function () { + if (this._quatUpdateId === this._quatDirtyId) { + return false; + } + this._quatUpdateId = this._quatDirtyId; + var c1 = Math.cos(this._x / 2); + var c2 = Math.cos(this._y / 2); + var c3 = Math.cos(this._z / 2); + var s = this._sign; + var s1 = s * Math.sin(this._x / 2); + var s2 = s * Math.sin(this._y / 2); + var s3 = s * Math.sin(this._z / 2); + var q = this.quaternion; + q[0] = s1 * c2 * c3 + c1 * s2 * s3; + q[1] = c1 * s2 * c3 - s1 * c2 * s3; + q[2] = c1 * c2 * s3 + s1 * s2 * c3; + q[3] = c1 * c2 * c3 - s1 * s2 * s3; + return true; + }; + return Euler; + }()); + pixi_projection.Euler = Euler; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var mat4id = [1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1]; + var Matrix3d = (function () { + function Matrix3d(backingArray) { + this.floatArray = null; + this._dirtyId = 0; + this._updateId = -1; + this._mat4inv = null; + this.cacheInverse = false; + this.mat4 = new Float64Array(backingArray || mat4id); + } + Object.defineProperty(Matrix3d.prototype, "a", { + get: function () { + return this.mat4[0] / this.mat4[15]; + }, + set: function (value) { + this.mat4[0] = value * this.mat4[15]; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Matrix3d.prototype, "b", { + get: function () { + return this.mat4[1] / this.mat4[15]; + }, + set: function (value) { + this.mat4[1] = value * this.mat4[15]; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Matrix3d.prototype, "c", { + get: function () { + return this.mat4[4] / this.mat4[15]; + }, + set: function (value) { + this.mat4[4] = value * this.mat4[15]; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Matrix3d.prototype, "d", { + get: function () { + return this.mat4[5] / this.mat4[15]; + }, + set: function (value) { + this.mat4[5] = value * this.mat4[15]; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Matrix3d.prototype, "tx", { + get: function () { + return this.mat4[12] / this.mat4[15]; + }, + set: function (value) { + this.mat4[12] = value * this.mat4[15]; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Matrix3d.prototype, "ty", { + get: function () { + return this.mat4[13] / this.mat4[15]; + }, + set: function (value) { + this.mat4[13] = value * this.mat4[15]; + }, + enumerable: true, + configurable: true + }); + Matrix3d.prototype.set = function (a, b, c, d, tx, ty) { + var mat4 = this.mat4; + mat4[0] = a; + mat4[1] = b; + mat4[2] = 0; + mat4[3] = 0; + mat4[4] = c; + mat4[5] = d; + mat4[6] = 0; + mat4[7] = 0; + mat4[8] = 0; + mat4[9] = 0; + mat4[10] = 1; + mat4[11] = 0; + mat4[12] = tx; + mat4[13] = ty; + mat4[14] = 0; + mat4[15] = 1; + return this; + }; + Matrix3d.prototype.toArray = function (transpose, out) { + if (!this.floatArray) { + this.floatArray = new Float32Array(9); + } + var array = out || this.floatArray; + var mat3 = this.mat4; + if (transpose) { + array[0] = mat3[0]; + array[1] = mat3[1]; + array[2] = mat3[3]; + array[3] = mat3[4]; + array[4] = mat3[5]; + array[5] = mat3[7]; + array[6] = mat3[12]; + array[7] = mat3[13]; + array[8] = mat3[15]; + } + else { + array[0] = mat3[0]; + array[1] = mat3[4]; + array[2] = mat3[12]; + array[3] = mat3[2]; + array[4] = mat3[6]; + array[5] = mat3[13]; + array[6] = mat3[3]; + array[7] = mat3[7]; + array[8] = mat3[15]; + } + return array; + }; + Matrix3d.prototype.setToTranslation = function (tx, ty, tz) { + var mat4 = this.mat4; + mat4[0] = 1; + mat4[1] = 0; + mat4[2] = 0; + mat4[3] = 0; + mat4[4] = 0; + mat4[5] = 1; + mat4[6] = 0; + mat4[7] = 0; + mat4[8] = 0; + mat4[9] = 0; + mat4[10] = 1; + mat4[11] = 0; + mat4[12] = tx; + mat4[13] = ty; + mat4[14] = tz; + mat4[15] = 1; + }; + Matrix3d.prototype.setToRotationTranslationScale = function (quat, tx, ty, tz, sx, sy, sz) { + var out = this.mat4; + var x = quat[0], y = quat[1], z = quat[2], w = quat[3]; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var xy = x * y2; + var xz = x * z2; + var yy = y * y2; + var yz = y * z2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + out[0] = (1 - (yy + zz)) * sx; + out[1] = (xy + wz) * sx; + out[2] = (xz - wy) * sx; + out[3] = 0; + out[4] = (xy - wz) * sy; + out[5] = (1 - (xx + zz)) * sy; + out[6] = (yz + wx) * sy; + out[7] = 0; + out[8] = (xz + wy) * sz; + out[9] = (yz - wx) * sz; + out[10] = (1 - (xx + yy)) * sz; + out[11] = 0; + out[12] = tx; + out[13] = ty; + out[14] = tz; + out[15] = 1; + return out; + }; + Matrix3d.prototype.apply = function (pos, newPos) { + newPos = newPos || new pixi_projection.Point3d(); + var mat4 = this.mat4; + var x = pos.x; + var y = pos.y; + var z = pos.z || 0; + var w = 1.0 / (mat4[3] * x + mat4[7] * y + mat4[11] * z + mat4[15]); + newPos.x = w * (mat4[0] * x + mat4[4] * y + mat4[8] * z + mat4[12]); + newPos.y = w * (mat4[1] * x + mat4[5] * y + mat4[9] * z + mat4[13]); + newPos.z = w * (mat4[2] * x + mat4[6] * y + mat4[10] * z + mat4[14]); + return newPos; + }; + Matrix3d.prototype.translate = function (tx, ty, tz) { + var a = this.mat4; + a[12] = a[0] * tx + a[4] * ty + a[8] * tz + a[12]; + a[13] = a[1] * tx + a[5] * ty + a[9] * tz + a[13]; + a[14] = a[2] * tx + a[6] * ty + a[10] * tz + a[14]; + a[15] = a[3] * tx + a[7] * ty + a[11] * tz + a[15]; + return this; + }; + Matrix3d.prototype.scale = function (x, y, z) { + var mat4 = this.mat4; + mat4[0] *= x; + mat4[1] *= x; + mat4[2] *= x; + mat4[3] *= x; + mat4[4] *= y; + mat4[5] *= y; + mat4[6] *= y; + mat4[7] *= y; + if (z !== undefined) { + mat4[8] *= z; + mat4[9] *= z; + mat4[10] *= z; + mat4[11] *= z; + } + return this; + }; + Matrix3d.prototype.scaleAndTranslate = function (scaleX, scaleY, scaleZ, tx, ty, tz) { + var mat4 = this.mat4; + mat4[0] = scaleX * mat4[0] + tx * mat4[3]; + mat4[1] = scaleY * mat4[1] + ty * mat4[3]; + mat4[2] = scaleZ * mat4[2] + tz * mat4[3]; + mat4[4] = scaleX * mat4[4] + tx * mat4[7]; + mat4[5] = scaleY * mat4[5] + ty * mat4[7]; + mat4[6] = scaleZ * mat4[6] + tz * mat4[7]; + mat4[8] = scaleX * mat4[8] + tx * mat4[11]; + mat4[9] = scaleY * mat4[9] + ty * mat4[11]; + mat4[10] = scaleZ * mat4[10] + tz * mat4[11]; + mat4[12] = scaleX * mat4[12] + tx * mat4[15]; + mat4[13] = scaleY * mat4[13] + ty * mat4[15]; + mat4[14] = scaleZ * mat4[14] + tz * mat4[15]; + }; + Matrix3d.prototype.applyInverse = function (pos, newPos) { + newPos = newPos || new pixi_projection.Point3d(); + if (!this._mat4inv) { + this._mat4inv = new Float64Array(16); + } + var mat4 = this._mat4inv; + var a = this.mat4; + var x = pos.x; + var y = pos.y; + var z = pos.z || 0; + if (!this.cacheInverse || this._updateId !== this._dirtyId) { + this._updateId = this._dirtyId; + Matrix3d.glMatrixMat4Invert(mat4, a); + } + var w1 = 1.0 / (mat4[3] * x + mat4[7] * y + mat4[11] * z + mat4[15]); + var x1 = w1 * (mat4[0] * x + mat4[4] * y + mat4[8] * z + mat4[12]); + var y1 = w1 * (mat4[1] * x + mat4[5] * y + mat4[9] * z + mat4[13]); + var z1 = w1 * (mat4[2] * x + mat4[6] * y + mat4[10] * z + mat4[14]); + z += 1.0; + var w2 = 1.0 / (mat4[3] * x + mat4[7] * y + mat4[11] * z + mat4[15]); + var x2 = w2 * (mat4[0] * x + mat4[4] * y + mat4[8] * z + mat4[12]); + var y2 = w2 * (mat4[1] * x + mat4[5] * y + mat4[9] * z + mat4[13]); + var z2 = w2 * (mat4[2] * x + mat4[6] * y + mat4[10] * z + mat4[14]); + if (Math.abs(z1 - z2) < 1e-10) { + newPos.set(NaN, NaN, 0); + } + var alpha = (0 - z1) / (z2 - z1); + newPos.set((x2 - x1) * alpha + x1, (y2 - y1) * alpha + y1, 0.0); + return newPos; + }; + Matrix3d.prototype.invert = function () { + Matrix3d.glMatrixMat4Invert(this.mat4, this.mat4); + return this; + }; + Matrix3d.prototype.invertCopyTo = function (matrix) { + if (!this._mat4inv) { + this._mat4inv = new Float64Array(16); + } + var mat4 = this._mat4inv; + var a = this.mat4; + if (!this.cacheInverse || this._updateId !== this._dirtyId) { + this._updateId = this._dirtyId; + Matrix3d.glMatrixMat4Invert(mat4, a); + } + matrix.mat4.set(mat4); + }; + Matrix3d.prototype.identity = function () { + var mat3 = this.mat4; + mat3[0] = 1; + mat3[1] = 0; + mat3[2] = 0; + mat3[3] = 0; + mat3[4] = 0; + mat3[5] = 1; + mat3[6] = 0; + mat3[7] = 0; + mat3[8] = 0; + mat3[9] = 0; + mat3[10] = 1; + mat3[11] = 0; + mat3[12] = 0; + mat3[13] = 0; + mat3[14] = 0; + mat3[15] = 1; + return this; + }; + Matrix3d.prototype.clone = function () { + return new Matrix3d(this.mat4); + }; + Matrix3d.prototype.copyTo3d = function (matrix) { + var mat3 = this.mat4; + var ar2 = matrix.mat4; + ar2[0] = mat3[0]; + ar2[1] = mat3[1]; + ar2[2] = mat3[2]; + ar2[3] = mat3[3]; + ar2[4] = mat3[4]; + ar2[5] = mat3[5]; + ar2[6] = mat3[6]; + ar2[7] = mat3[7]; + ar2[8] = mat3[8]; + return matrix; + }; + Matrix3d.prototype.copyTo2d = function (matrix) { + var mat3 = this.mat4; + var ar2 = matrix.mat3; + ar2[0] = mat3[0]; + ar2[1] = mat3[1]; + ar2[2] = mat3[3]; + ar2[3] = mat3[4]; + ar2[4] = mat3[5]; + ar2[5] = mat3[7]; + ar2[6] = mat3[12]; + ar2[7] = mat3[13]; + ar2[8] = mat3[15]; + return matrix; + }; + Matrix3d.prototype.copyTo2dOr3d = function (matrix) { + if (matrix instanceof pixi_projection.Matrix2d) { + return this.copyTo2d(matrix); + } + else { + return this.copyTo3d(matrix); + } + }; + Matrix3d.prototype.copyTo = function (matrix, affine, preserveOrientation) { + var mat3 = this.mat4; + var d = 1.0 / mat3[15]; + var tx = mat3[12] * d, ty = mat3[13] * d; + matrix.a = (mat3[0] - mat3[3] * tx) * d; + matrix.b = (mat3[1] - mat3[3] * ty) * d; + matrix.c = (mat3[4] - mat3[7] * tx) * d; + matrix.d = (mat3[5] - mat3[7] * ty) * d; + matrix.tx = tx; + matrix.ty = ty; + if (affine >= 2) { + var D = matrix.a * matrix.d - matrix.b * matrix.c; + if (!preserveOrientation) { + D = Math.abs(D); + } + if (affine === pixi_projection.AFFINE.POINT) { + if (D > 0) { + D = 1; + } + else + D = -1; + matrix.a = D; + matrix.b = 0; + matrix.c = 0; + matrix.d = D; + } + else if (affine === pixi_projection.AFFINE.AXIS_X) { + D /= Math.sqrt(matrix.b * matrix.b + matrix.d * matrix.d); + matrix.c = 0; + matrix.d = D; + } + else if (affine === pixi_projection.AFFINE.AXIS_Y) { + D /= Math.sqrt(matrix.a * matrix.a + matrix.c * matrix.c); + matrix.a = D; + matrix.c = 0; + } + } + return matrix; + }; + Matrix3d.prototype.copyFrom = function (matrix) { + var mat3 = this.mat4; + mat3[0] = matrix.a; + mat3[1] = matrix.b; + mat3[2] = 0; + mat3[3] = 0; + mat3[4] = matrix.c; + mat3[5] = matrix.d; + mat3[6] = 0; + mat3[7] = 0; + mat3[8] = 0; + mat3[9] = 0; + mat3[10] = 1; + mat3[11] = 0; + mat3[12] = matrix.tx; + mat3[13] = matrix.ty; + mat3[14] = 0; + mat3[15] = 1; + this._dirtyId++; + return this; + }; + Matrix3d.prototype.setToMultLegacy = function (pt, lt) { + var out = this.mat4; + var b = lt.mat4; + var a00 = pt.a, a01 = pt.b, a10 = pt.c, a11 = pt.d, a30 = pt.tx, a31 = pt.ty; + var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; + out[0] = b0 * a00 + b1 * a10 + b3 * a30; + out[1] = b0 * a01 + b1 * a11 + b3 * a31; + out[2] = b2; + out[3] = b3; + b0 = b[4]; + b1 = b[5]; + b2 = b[6]; + b3 = b[7]; + out[4] = b0 * a00 + b1 * a10 + b3 * a30; + out[5] = b0 * a01 + b1 * a11 + b3 * a31; + out[6] = b2; + out[7] = b3; + b0 = b[8]; + b1 = b[9]; + b2 = b[10]; + b3 = b[11]; + out[8] = b0 * a00 + b1 * a10 + b3 * a30; + out[9] = b0 * a01 + b1 * a11 + b3 * a31; + out[10] = b2; + out[11] = b3; + b0 = b[12]; + b1 = b[13]; + b2 = b[14]; + b3 = b[15]; + out[12] = b0 * a00 + b1 * a10 + b3 * a30; + out[13] = b0 * a01 + b1 * a11 + b3 * a31; + out[14] = b2; + out[15] = b3; + this._dirtyId++; + return this; + }; + Matrix3d.prototype.setToMultLegacy2 = function (pt, lt) { + var out = this.mat4; + var a = pt.mat4; + var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3]; + var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7]; + var b00 = lt.a, b01 = lt.b, b10 = lt.c, b11 = lt.d, b30 = lt.tx, b31 = lt.ty; + out[0] = b00 * a00 + b01 * a10; + out[1] = b00 * a01 + b01 * a11; + out[2] = b00 * a02 + b01 * a12; + out[3] = b00 * a03 + b01 * a13; + out[4] = b10 * a00 + b11 * a10; + out[5] = b10 * a01 + b11 * a11; + out[6] = b10 * a02 + b11 * a12; + out[7] = b10 * a03 + b11 * a13; + out[8] = a[8]; + out[9] = a[9]; + out[10] = a[10]; + out[11] = a[11]; + out[12] = b30 * a00 + b31 * a10 + a[12]; + out[13] = b30 * a01 + b31 * a11 + a[13]; + out[14] = b30 * a02 + b31 * a12 + a[14]; + out[15] = b30 * a03 + b31 * a13 + a[15]; + this._dirtyId++; + return this; + }; + Matrix3d.prototype.setToMult = function (pt, lt) { + Matrix3d.glMatrixMat4Multiply(this.mat4, pt.mat4, lt.mat4); + this._dirtyId++; + return this; + }; + Matrix3d.prototype.prepend = function (lt) { + if (lt.mat4) { + this.setToMult(lt, this); + } + else { + this.setToMultLegacy(lt, this); + } + }; + Matrix3d.glMatrixMat4Invert = function (out, a) { + var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3]; + var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7]; + var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11]; + var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; + var b00 = a00 * a11 - a01 * a10; + var b01 = a00 * a12 - a02 * a10; + var b02 = a00 * a13 - a03 * a10; + var b03 = a01 * a12 - a02 * a11; + var b04 = a01 * a13 - a03 * a11; + var b05 = a02 * a13 - a03 * a12; + var b06 = a20 * a31 - a21 * a30; + var b07 = a20 * a32 - a22 * a30; + var b08 = a20 * a33 - a23 * a30; + var b09 = a21 * a32 - a22 * a31; + var b10 = a21 * a33 - a23 * a31; + var b11 = a22 * a33 - a23 * a32; + var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; + if (!det) { + return null; + } + det = 1.0 / det; + out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det; + out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det; + out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det; + out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det; + out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det; + out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det; + out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det; + out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det; + out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det; + out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det; + out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det; + out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det; + out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det; + out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det; + out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det; + out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det; + return out; + }; + Matrix3d.glMatrixMat4Multiply = function (out, a, b) { + var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3]; + var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7]; + var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11]; + var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; + var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; + out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + b0 = b[4]; + b1 = b[5]; + b2 = b[6]; + b3 = b[7]; + out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + b0 = b[8]; + b1 = b[9]; + b2 = b[10]; + b3 = b[11]; + out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + b0 = b[12]; + b1 = b[13]; + b2 = b[14]; + b3 = b[15]; + out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + return out; + }; + Matrix3d.IDENTITY = new Matrix3d(); + Matrix3d.TEMP_MATRIX = new Matrix3d(); + return Matrix3d; + }()); + pixi_projection.Matrix3d = Matrix3d; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var ObservableEuler = (function () { + function ObservableEuler(cb, scope, x, y, z) { + this.cb = cb; + this.scope = scope; + this._quatUpdateId = -1; + this._quatDirtyId = 0; + this._sign = 1; + this._x = x || 0; + this._y = y || 0; + this._z = z || 0; + this.quaternion = new Float64Array(4); + this.quaternion[3] = 1; + this.update(); + } + Object.defineProperty(ObservableEuler.prototype, "x", { + get: function () { + return this._x; + }, + set: function (value) { + if (this._x !== value) { + this._x = value; + this._quatDirtyId++; + this.cb.call(this.scope); + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ObservableEuler.prototype, "y", { + get: function () { + return this._y; + }, + set: function (value) { + if (this._y !== value) { + this._y = value; + this._quatDirtyId++; + this.cb.call(this.scope); + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ObservableEuler.prototype, "z", { + get: function () { + return this._z; + }, + set: function (value) { + if (this._z !== value) { + this._z = value; + this._quatDirtyId++; + this.cb.call(this.scope); + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ObservableEuler.prototype, "pitch", { + get: function () { + return this._x; + }, + set: function (value) { + if (this._x !== value) { + this._x = value; + this._quatDirtyId++; + this.cb.call(this.scope); + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ObservableEuler.prototype, "yaw", { + get: function () { + return this._y; + }, + set: function (value) { + if (this._y !== value) { + this._y = value; + this._quatDirtyId++; + this.cb.call(this.scope); + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ObservableEuler.prototype, "roll", { + get: function () { + return this._z; + }, + set: function (value) { + if (this._z !== value) { + this._z = value; + this._quatDirtyId++; + this.cb.call(this.scope); + } + }, + enumerable: true, + configurable: true + }); + ObservableEuler.prototype.set = function (x, y, z) { + var _x = x || 0; + var _y = y || 0; + var _z = z || 0; + if (this._x !== _x || this._y !== _y || this._z !== _z) { + this._x = _x; + this._y = _y; + this._z = _z; + this._quatDirtyId++; + this.cb.call(this.scope); + } + }; + ; + ObservableEuler.prototype.copyFrom = function (euler) { + var _x = euler.x; + var _y = euler.y; + var _z = euler.z; + if (this._x !== _x || this._y !== _y || this._z !== _z) { + this._x = _x; + this._y = _y; + this._z = _z; + this._quatDirtyId++; + this.cb.call(this.scope); + } + }; + ObservableEuler.prototype.copyTo = function (p) { + p.set(this._x, this._y, this._z); + return p; + }; + ObservableEuler.prototype.equals = function (euler) { + return this._x === euler.x + && this._y === euler.y + && this._z === euler.z; + }; + ObservableEuler.prototype.clone = function () { + return new pixi_projection.Euler(this._x, this._y, this._z); + }; + ObservableEuler.prototype.update = function () { + if (this._quatUpdateId === this._quatDirtyId) { + return false; + } + this._quatUpdateId = this._quatDirtyId; + var c1 = Math.cos(this._x / 2); + var c2 = Math.cos(this._y / 2); + var c3 = Math.cos(this._z / 2); + var s = this._sign; + var s1 = s * Math.sin(this._x / 2); + var s2 = s * Math.sin(this._y / 2); + var s3 = s * Math.sin(this._z / 2); + var q = this.quaternion; + q[0] = s1 * c2 * c3 + c1 * s2 * s3; + q[1] = c1 * s2 * c3 - s1 * c2 * s3; + q[2] = c1 * c2 * s3 + s1 * s2 * c3; + q[3] = c1 * c2 * c3 - s1 * s2 * s3; + return true; + }; + return ObservableEuler; + }()); + pixi_projection.ObservableEuler = ObservableEuler; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var Point3d = (function (_super) { + __extends(Point3d, _super); + function Point3d(x, y, z) { + var _this = _super.call(this, x, y) || this; + _this.z = z; + return _this; + } + Point3d.prototype.set = function (x, y, z) { + this.x = x || 0; + this.y = (y === undefined) ? this.x : (y || 0); + this.z = (y === undefined) ? this.x : (z || 0); + }; + Point3d.prototype.copyFrom = function (p) { + this.set(p.x, p.y, p.z || 0); + return this; + }; + Point3d.prototype.copyTo = function (p) { + p.set(this.x, this.y, this.z); + return p; + }; + return Point3d; + }(PIXI.Point)); + pixi_projection.Point3d = Point3d; + var ObservablePoint3d = (function (_super) { + __extends(ObservablePoint3d, _super); + function ObservablePoint3d() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this._z = 0; + return _this; + } + Object.defineProperty(ObservablePoint3d.prototype, "z", { + get: function () { + return this._z; + }, + set: function (value) { + if (this._z !== value) { + this._z = value; + this.cb.call(this.scope); + } + }, + enumerable: true, + configurable: true + }); + ObservablePoint3d.prototype.set = function (x, y, z) { + var _x = x || 0; + var _y = (y === undefined) ? _x : (y || 0); + var _z = (y === undefined) ? _x : (z || 0); + if (this._x !== _x || this._y !== _y || this._z !== _z) { + this._x = _x; + this._y = _y; + this._z = _z; + this.cb.call(this.scope); + } + }; + ObservablePoint3d.prototype.copyFrom = function (p) { + this.set(p.x, p.y, p.z || 0); + return this; + }; + ObservablePoint3d.prototype.copyTo = function (p) { + p.set(this._x, this._y, this._z); + return p; + }; + return ObservablePoint3d; + }(PIXI.ObservablePoint)); + pixi_projection.ObservablePoint3d = ObservablePoint3d; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var tempMat = new pixi_projection.Matrix3d(); + var Projection3d = (function (_super) { + __extends(Projection3d, _super); + function Projection3d(legacy, enable) { + var _this = _super.call(this, legacy, enable) || this; + _this.cameraMatrix = null; + _this._cameraMode = false; + _this.position = new pixi_projection.ObservablePoint3d(_this.onChange, _this, 0, 0); + _this.scale = new pixi_projection.ObservablePoint3d(_this.onChange, _this, 1, 1); + _this.euler = new pixi_projection.ObservableEuler(_this.onChange, _this, 0, 0, 0); + _this.pivot = new pixi_projection.ObservablePoint3d(_this.onChange, _this, 0, 0); + _this.local = new pixi_projection.Matrix3d(); + _this.world = new pixi_projection.Matrix3d(); + _this.local.cacheInverse = true; + _this.world.cacheInverse = true; + _this.position._z = 0; + _this.scale._z = 1; + _this.pivot._z = 0; + return _this; + } + Object.defineProperty(Projection3d.prototype, "cameraMode", { + get: function () { + return this._cameraMode; + }, + set: function (value) { + if (this._cameraMode === value) { + return; + } + this._cameraMode = value; + this.euler._sign = this._cameraMode ? -1 : 1; + this.euler._quatDirtyId++; + if (value) { + this.cameraMatrix = new pixi_projection.Matrix3d(); + } + }, + enumerable: true, + configurable: true + }); + Projection3d.prototype.onChange = function () { + this._projID++; + }; + Projection3d.prototype.clear = function () { + if (this.cameraMatrix) { + this.cameraMatrix.identity(); + } + this.position.set(0, 0, 0); + this.scale.set(1, 1, 1); + this.euler.set(0, 0, 0); + this.pivot.set(0, 0, 0); + _super.prototype.clear.call(this); + }; + Projection3d.prototype.updateLocalTransform = function (lt) { + if (this._projID === 0) { + this.local.copyFrom(lt); + return; + } + var matrix = this.local; + var euler = this.euler; + var pos = this.position; + var scale = this.scale; + var pivot = this.pivot; + euler.update(); + if (!this.cameraMode) { + matrix.setToRotationTranslationScale(euler.quaternion, pos._x, pos._y, pos._z, scale._x, scale._y, scale._z); + matrix.translate(-pivot._x, -pivot._y, -pivot._z); + matrix.setToMultLegacy(lt, matrix); + return; + } + matrix.setToMultLegacy(lt, this.cameraMatrix); + matrix.translate(pivot._x, pivot._y, pivot._z); + matrix.scale(1.0 / scale._x, 1.0 / scale._y, 1.0 / scale._z); + tempMat.setToRotationTranslationScale(euler.quaternion, 0, 0, 0, 1, 1, 1); + matrix.setToMult(matrix, tempMat); + matrix.translate(-pos._x, -pos._y, -pos._z); + this.local._dirtyId++; + }; + return Projection3d; + }(pixi_projection.LinearProjection)); + pixi_projection.Projection3d = Projection3d; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var Mesh3d2d = (function (_super) { + __extends(Mesh3d2d, _super); + function Mesh3d2d(geometry, shader, state, drawMode) { + var _this = _super.call(this, geometry, shader, state, drawMode) || this; + _this.vertexData2d = null; + _this.proj = new pixi_projection.Projection3d(_this.transform); + return _this; + } + Mesh3d2d.prototype.calculateVertices = function () { + if (this.proj._affine) { + this.vertexData2d = null; + _super.prototype.calculateVertices.call(this); + return; + } + var geometry = this.geometry; + var vertices = geometry.buffers[0].data; + var thisAny = this; + if (geometry.vertexDirtyId === thisAny.vertexDirty && thisAny._transformID === thisAny.transform._worldID) { + return; + } + thisAny._transformID = thisAny.transform._worldID; + if (thisAny.vertexData.length !== vertices.length) { + thisAny.vertexData = new Float32Array(vertices.length); + } + if (this.vertexData2d.length !== vertices.length * 3 / 2) { + this.vertexData2d = new Float32Array(vertices.length * 3); + } + var wt = this.proj.world.mat4; + var vertexData2d = this.vertexData2d; + var vertexData = thisAny.vertexData; + for (var i = 0; i < vertexData.length / 2; i++) { + var x = vertices[(i * 2)]; + var y = vertices[(i * 2) + 1]; + var xx = (wt[0] * x) + (wt[4] * y) + wt[12]; + var yy = (wt[1] * x) + (wt[5] * y) + wt[13]; + var ww = (wt[3] * x) + (wt[7] * y) + wt[15]; + vertexData2d[i * 3] = xx; + vertexData2d[i * 3 + 1] = yy; + vertexData2d[i * 3 + 2] = ww; + vertexData[(i * 2)] = xx / ww; + vertexData[(i * 2) + 1] = yy / ww; + } + thisAny.vertexDirty = geometry.vertexDirtyId; + }; + Object.defineProperty(Mesh3d2d.prototype, "worldTransform", { + get: function () { + return this.proj.affine ? this.transform.worldTransform : this.proj.world; + }, + enumerable: true, + configurable: true + }); + Mesh3d2d.prototype.toLocal = function (position, from, point, skipUpdate, step) { + if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } + return pixi_projection.container3dToLocal.call(this, position, from, point, skipUpdate, step); + }; + Mesh3d2d.prototype.isFrontFace = function (forceUpdate) { + return pixi_projection.container3dIsFrontFace.call(this, forceUpdate); + }; + Mesh3d2d.prototype.getDepth = function (forceUpdate) { + return pixi_projection.container3dGetDepth.call(this, forceUpdate); + }; + Object.defineProperty(Mesh3d2d.prototype, "position3d", { + get: function () { + return this.proj.position; + }, + set: function (value) { + this.proj.position.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Mesh3d2d.prototype, "scale3d", { + get: function () { + return this.proj.scale; + }, + set: function (value) { + this.proj.scale.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Mesh3d2d.prototype, "euler", { + get: function () { + return this.proj.euler; + }, + set: function (value) { + this.proj.euler.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Mesh3d2d.prototype, "pivot3d", { + get: function () { + return this.proj.pivot; + }, + set: function (value) { + this.proj.pivot.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + return Mesh3d2d; + }(PIXI.Mesh)); + pixi_projection.Mesh3d2d = Mesh3d2d; + Mesh3d2d.prototype._renderDefault = pixi_projection.Mesh2d.prototype._renderDefault; + var SimpleMesh3d2d = (function (_super) { + __extends(SimpleMesh3d2d, _super); + function SimpleMesh3d2d(texture, vertices, uvs, indices, drawMode) { + var _this = _super.call(this, new PIXI.MeshGeometry(vertices, uvs, indices), new PIXI.MeshMaterial(texture, { + program: PIXI.Program.from(pixi_projection.Mesh2d.defaultVertexShader, pixi_projection.Mesh2d.defaultFragmentShader), + pluginName: 'batch2d' + }), null, drawMode) || this; + _this.autoUpdate = true; + _this.geometry.getBuffer('aVertexPosition').static = false; + return _this; + } + Object.defineProperty(SimpleMesh3d2d.prototype, "vertices", { + get: function () { + return this.geometry.getBuffer('aVertexPosition').data; + }, + set: function (value) { + this.geometry.getBuffer('aVertexPosition').data = value; + }, + enumerable: true, + configurable: true + }); + SimpleMesh3d2d.prototype._render = function (renderer) { + if (this.autoUpdate) { + this.geometry.getBuffer('aVertexPosition').update(); + } + _super.prototype._render.call(this, renderer); + }; + return SimpleMesh3d2d; + }(Mesh3d2d)); + pixi_projection.SimpleMesh3d2d = SimpleMesh3d2d; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var Sprite3d = (function (_super) { + __extends(Sprite3d, _super); + function Sprite3d(texture) { + var _this = _super.call(this, texture) || this; + _this.vertexData2d = null; + _this.culledByFrustrum = false; + _this.trimmedCulledByFrustrum = false; + _this.proj = new pixi_projection.Projection3d(_this.transform); + _this.pluginName = 'batch2d'; + return _this; + } + Sprite3d.prototype.calculateVertices = function () { + var texture = this._texture; + if (this.proj._affine) { + this.vertexData2d = null; + _super.prototype.calculateVertices.call(this); + return; + } + if (!this.vertexData2d) { + this.vertexData2d = new Float32Array(12); + } + var wid = this.transform._worldID; + var tuid = texture._updateID; + if (this._transformID === wid && this._textureID === tuid) { + return; + } + if (this._textureID !== tuid) { + this.uvs = texture._uvs.uvsFloat32; + } + this._transformID = wid; + this._textureID = tuid; + var wt = this.proj.world.mat4; + var vertexData2d = this.vertexData2d; + var vertexData = this.vertexData; + var trim = texture.trim; + var orig = texture.orig; + var anchor = this._anchor; + var w0 = 0; + var w1 = 0; + var h0 = 0; + var h1 = 0; + if (trim) { + w1 = trim.x - (anchor._x * orig.width); + w0 = w1 + trim.width; + h1 = trim.y - (anchor._y * orig.height); + h0 = h1 + trim.height; + } + else { + w1 = -anchor._x * orig.width; + w0 = w1 + orig.width; + h1 = -anchor._y * orig.height; + h0 = h1 + orig.height; + } + var culled = false; + var z; + vertexData2d[0] = (wt[0] * w1) + (wt[4] * h1) + wt[12]; + vertexData2d[1] = (wt[1] * w1) + (wt[5] * h1) + wt[13]; + z = (wt[2] * w1) + (wt[6] * h1) + wt[14]; + vertexData2d[2] = (wt[3] * w1) + (wt[7] * h1) + wt[15]; + culled = culled || z < 0; + vertexData2d[3] = (wt[0] * w0) + (wt[4] * h1) + wt[12]; + vertexData2d[4] = (wt[1] * w0) + (wt[5] * h1) + wt[13]; + z = (wt[2] * w0) + (wt[6] * h1) + wt[14]; + vertexData2d[5] = (wt[3] * w0) + (wt[7] * h1) + wt[15]; + culled = culled || z < 0; + vertexData2d[6] = (wt[0] * w0) + (wt[4] * h0) + wt[12]; + vertexData2d[7] = (wt[1] * w0) + (wt[5] * h0) + wt[13]; + z = (wt[2] * w0) + (wt[6] * h0) + wt[14]; + vertexData2d[8] = (wt[3] * w0) + (wt[7] * h0) + wt[15]; + culled = culled || z < 0; + vertexData2d[9] = (wt[0] * w1) + (wt[4] * h0) + wt[12]; + vertexData2d[10] = (wt[1] * w1) + (wt[5] * h0) + wt[13]; + z = (wt[2] * w1) + (wt[6] * h0) + wt[14]; + vertexData2d[11] = (wt[3] * w1) + (wt[7] * h0) + wt[15]; + culled = culled || z < 0; + this.culledByFrustrum = culled; + vertexData[0] = vertexData2d[0] / vertexData2d[2]; + vertexData[1] = vertexData2d[1] / vertexData2d[2]; + vertexData[2] = vertexData2d[3] / vertexData2d[5]; + vertexData[3] = vertexData2d[4] / vertexData2d[5]; + vertexData[4] = vertexData2d[6] / vertexData2d[8]; + vertexData[5] = vertexData2d[7] / vertexData2d[8]; + vertexData[6] = vertexData2d[9] / vertexData2d[11]; + vertexData[7] = vertexData2d[10] / vertexData2d[11]; + }; + Sprite3d.prototype.calculateTrimmedVertices = function () { + if (this.proj._affine) { + _super.prototype.calculateTrimmedVertices.call(this); + return; + } + var wid = this.transform._worldID; + var tuid = this._texture._updateID; + if (!this.vertexTrimmedData) { + this.vertexTrimmedData = new Float32Array(8); + } + else if (this._transformTrimmedID === wid && this._textureTrimmedID === tuid) { + return; + } + this._transformTrimmedID = wid; + this._textureTrimmedID = tuid; + var texture = this._texture; + var vertexData = this.vertexTrimmedData; + var orig = texture.orig; + var anchor = this._anchor; + var wt = this.proj.world.mat4; + var w1 = -anchor._x * orig.width; + var w0 = w1 + orig.width; + var h1 = -anchor._y * orig.height; + var h0 = h1 + orig.height; + var culled = false; + var z; + var w = 1.0 / ((wt[3] * w1) + (wt[7] * h1) + wt[15]); + vertexData[0] = w * ((wt[0] * w1) + (wt[4] * h1) + wt[12]); + vertexData[1] = w * ((wt[1] * w1) + (wt[5] * h1) + wt[13]); + z = (wt[2] * w1) + (wt[6] * h1) + wt[14]; + culled = culled || z < 0; + w = 1.0 / ((wt[3] * w0) + (wt[7] * h1) + wt[15]); + vertexData[2] = w * ((wt[0] * w0) + (wt[4] * h1) + wt[12]); + vertexData[3] = w * ((wt[1] * w0) + (wt[5] * h1) + wt[13]); + z = (wt[2] * w0) + (wt[6] * h1) + wt[14]; + culled = culled || z < 0; + w = 1.0 / ((wt[3] * w0) + (wt[7] * h0) + wt[15]); + vertexData[4] = w * ((wt[0] * w0) + (wt[4] * h0) + wt[12]); + vertexData[5] = w * ((wt[1] * w0) + (wt[5] * h0) + wt[13]); + z = (wt[2] * w0) + (wt[6] * h0) + wt[14]; + culled = culled || z < 0; + w = 1.0 / ((wt[3] * w1) + (wt[7] * h0) + wt[15]); + vertexData[6] = w * ((wt[0] * w1) + (wt[4] * h0) + wt[12]); + vertexData[7] = w * ((wt[1] * w1) + (wt[5] * h0) + wt[13]); + z = (wt[2] * w1) + (wt[6] * h0) + wt[14]; + culled = culled || z < 0; + this.culledByFrustrum = culled; + }; + Sprite3d.prototype._calculateBounds = function () { + this.calculateVertices(); + if (this.culledByFrustrum) { + return; + } + var trim = this._texture.trim; + var orig = this._texture.orig; + if (!trim || (trim.width === orig.width && trim.height === orig.height)) { + this._bounds.addQuad(this.vertexData); + return; + } + this.calculateTrimmedVertices(); + if (!this.trimmedCulledByFrustrum) { + this._bounds.addQuad(this.vertexTrimmedData); + } + }; + Sprite3d.prototype._render = function (renderer) { + this.calculateVertices(); + if (this.culledByFrustrum) { + return; + } + renderer.batch.setObjectRenderer(renderer.plugins[this.pluginName]); + renderer.plugins[this.pluginName].render(this); + }; + Sprite3d.prototype.containsPoint = function (point) { + if (this.culledByFrustrum) { + return false; + } + return _super.prototype.containsPoint.call(this, point); + }; + Object.defineProperty(Sprite3d.prototype, "worldTransform", { + get: function () { + return this.proj.affine ? this.transform.worldTransform : this.proj.world; + }, + enumerable: true, + configurable: true + }); + Sprite3d.prototype.toLocal = function (position, from, point, skipUpdate, step) { + if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } + return pixi_projection.container3dToLocal.call(this, position, from, point, skipUpdate, step); + }; + Sprite3d.prototype.isFrontFace = function (forceUpdate) { + return pixi_projection.container3dIsFrontFace.call(this, forceUpdate); + }; + Sprite3d.prototype.getDepth = function (forceUpdate) { + return pixi_projection.container3dGetDepth.call(this, forceUpdate); + }; + Object.defineProperty(Sprite3d.prototype, "position3d", { + get: function () { + return this.proj.position; + }, + set: function (value) { + this.proj.position.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Sprite3d.prototype, "scale3d", { + get: function () { + return this.proj.scale; + }, + set: function (value) { + this.proj.scale.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Sprite3d.prototype, "euler", { + get: function () { + return this.proj.euler; + }, + set: function (value) { + this.proj.euler.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Sprite3d.prototype, "pivot3d", { + get: function () { + return this.proj.pivot; + }, + set: function (value) { + this.proj.pivot.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + return Sprite3d; + }(PIXI.Sprite)); + pixi_projection.Sprite3d = Sprite3d; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var Text3d = (function (_super) { + __extends(Text3d, _super); + function Text3d(text, style, canvas) { + var _this = _super.call(this, text, style, canvas) || this; + _this.vertexData2d = null; + _this.proj = new pixi_projection.Projection3d(_this.transform); + _this.pluginName = 'batch2d'; + return _this; + } + Object.defineProperty(Text3d.prototype, "worldTransform", { + get: function () { + return this.proj.affine ? this.transform.worldTransform : this.proj.world; + }, + enumerable: true, + configurable: true + }); + Text3d.prototype.toLocal = function (position, from, point, skipUpdate, step) { + if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; } + return pixi_projection.container3dToLocal.call(this, position, from, point, skipUpdate, step); + }; + Text3d.prototype.isFrontFace = function (forceUpdate) { + return pixi_projection.container3dIsFrontFace.call(this, forceUpdate); + }; + Text3d.prototype.getDepth = function (forceUpdate) { + return pixi_projection.container3dGetDepth.call(this, forceUpdate); + }; + Object.defineProperty(Text3d.prototype, "position3d", { + get: function () { + return this.proj.position; + }, + set: function (value) { + this.proj.position.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Text3d.prototype, "scale3d", { + get: function () { + return this.proj.scale; + }, + set: function (value) { + this.proj.scale.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Text3d.prototype, "euler", { + get: function () { + return this.proj.euler; + }, + set: function (value) { + this.proj.euler.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Text3d.prototype, "pivot3d", { + get: function () { + return this.proj.pivot; + }, + set: function (value) { + this.proj.pivot.copyFrom(value); + }, + enumerable: true, + configurable: true + }); + return Text3d; + }(PIXI.Text)); + pixi_projection.Text3d = Text3d; + Text3d.prototype.calculateVertices = pixi_projection.Sprite3d.prototype.calculateVertices; + Text3d.prototype.calculateTrimmedVertices = pixi_projection.Sprite3d.prototype.calculateTrimmedVertices; + Text3d.prototype._calculateBounds = pixi_projection.Sprite3d.prototype._calculateBounds; + Text3d.prototype.containsPoint = pixi_projection.Sprite3d.prototype.containsPoint; + Text3d.prototype._render = pixi_projection.Sprite3d.prototype._render; +})(pixi_projection || (pixi_projection = {})); +var pixi_projection; +(function (pixi_projection) { + var containerProps = { + worldTransform: { + get: pixi_projection.container3dWorldTransform, + enumerable: true, + configurable: true + }, + position3d: { + get: function () { return this.proj.position; }, + set: function (value) { this.proj.position.copy(value); } + }, + scale3d: { + get: function () { return this.proj.scale; }, + set: function (value) { this.proj.scale.copy(value); } + }, + pivot3d: { + get: function () { return this.proj.pivot; }, + set: function (value) { this.proj.pivot.copy(value); } + }, + euler: { + get: function () { return this.proj.euler; }, + set: function (value) { this.proj.euler.copy(value); } + } + }; + function convertTo3d() { + if (this.proj) + return; + this.proj = new pixi_projection.Projection3d(this.transform); + this.toLocal = pixi_projection.Container3d.prototype.toLocal; + this.isFrontFace = pixi_projection.Container3d.prototype.isFrontFace; + this.getDepth = pixi_projection.Container3d.prototype.getDepth; + Object.defineProperties(this, containerProps); + } + PIXI.Container.prototype.convertTo3d = convertTo3d; + PIXI.Sprite.prototype.convertTo3d = function () { + if (this.proj) + return; + this.calculateVertices = pixi_projection.Sprite3d.prototype.calculateVertices; + this.calculateTrimmedVertices = pixi_projection.Sprite3d.prototype.calculateTrimmedVertices; + this._calculateBounds = pixi_projection.Sprite3d.prototype._calculateBounds; + this.containsPoint = pixi_projection.Sprite3d.prototype.containsPoint; + this.pluginName = 'batch2d'; + convertTo3d.call(this); + }; + PIXI.Container.prototype.convertSubtreeTo3d = function () { + this.convertTo3d(); + for (var i = 0; i < this.children.length; i++) { + this.children[i].convertSubtreeTo3d(); + } + }; + if (PIXI.SimpleMesh) { + PIXI.SimpleMesh.prototype.convertTo3d = + PIXI.SimpleRope.prototype.convertTo3d = + function () { + if (this.proj) + return; + this.calculateVertices = pixi_projection.Mesh3d2d.prototype.calculateVertices; + this._renderDefault = pixi_projection.Mesh3d2d.prototype._renderDefault; + if (this.material.pluginName !== 'batch2d') { + this.material = new PIXI.MeshMaterial(this.material.texture, { + program: PIXI.Program.from(pixi_projection.Mesh2d.defaultVertexShader, pixi_projection.Mesh2d.defaultFragmentShader), + pluginName: 'batch2d' + }); + } + convertTo3d.call(this); + }; + } +})(pixi_projection || (pixi_projection = {})); /*! * VERSION: 2.1.3 @@ -75911,14 +76015,14 @@ var Wait = require('./wait'); var Ease = function (_Events) { _inherits(Ease, _Events); - /** - * Main class for creating eases - * @param {object} [options] - * @param {boolean} [options.noTicker] don't add the update function to PIXI.ticker - * @param {PIXI.ticker} [options.ticker=PIXI.ticker.shared] use this PIXI.ticker for the list - * @extends eventemitter - * @fire done - * @fire each + /** + * Main class for creating eases + * @param {object} [options] + * @param {boolean} [options.noTicker] don't add the update function to PIXI.ticker + * @param {PIXI.ticker} [options.ticker=PIXI.ticker.shared] use this PIXI.ticker for the list + * @extends eventemitter + * @fire done + * @fire each */ function Ease(options) { _classCallCheck(this, Ease); @@ -75940,10 +76044,10 @@ var Ease = function (_Events) { return _this; } - /** - * Add animation(s) to animation list - * @param {(object|object[])} any animation class - * @return {object} first animation + /** + * Add animation(s) to animation list + * @param {(object|object[])} any animation class + * @return {object} first animation */ @@ -76011,9 +76115,9 @@ var Ease = function (_Events) { return first; } - /** - * remove animation(s) - * @param {object|array} animate - the animation (or array of animations) to remove; can be null + /** + * remove animation(s) + * @param {object|array} animate - the animation (or array of animations) to remove; can be null */ }, { @@ -76029,9 +76133,9 @@ var Ease = function (_Events) { } } - /** - * remove all animations from list - * @inherited from yy-loop + /** + * remove all animations from list + * @inherited from yy-loop */ }, { @@ -76044,11 +76148,11 @@ var Ease = function (_Events) { } } - /** - * update frame - * this is automatically added to PIXI.ticker unless options.noTicker is set - * if using options.noTicker, this should be called manually - * @param {number} elasped time in MS since last update + /** + * update frame + * this is automatically added to PIXI.ticker unless options.noTicker is set + * if using options.noTicker, this should be called manually + * @param {number} elasped time in MS since last update */ }, { @@ -76077,50 +76181,50 @@ var Ease = function (_Events) { } } - /** - * number of animations - * @type {number} + /** + * number of animations + * @type {number} */ }, { key: 'to', - /** - * default options for all eases - * @typedef {object} EaseOptions - * @param {object} [EaseOptions.options] - * @param {number} [EaseOptions.options.wait=0] n milliseconds before starting animation (can also be used to pause animation for a length of time) - * @param {boolean} [EaseOptions.options.pause] start the animation paused - * @param {boolean|number} [EaseOptions.options.repeat] true: repeat animation forever n: repeat animation n times - * @param {boolean|number} [EaseOptions.options.reverse] true: reverse animation (if combined with repeat, then pulse) n: reverse animation n times - * @param {Function} [EaseOptions.options.load] loads an animation using an .save() object note the * parameters below cannot be loaded and must be re-set - * @param {string|Function} [EaseOptions.options.ease] name or function from easing.js (see http://easings.net for examples) + /** + * default options for all eases + * @typedef {object} EaseOptions + * @param {object} [EaseOptions.options] + * @param {number} [EaseOptions.options.wait=0] n milliseconds before starting animation (can also be used to pause animation for a length of time) + * @param {boolean} [EaseOptions.options.pause] start the animation paused + * @param {boolean|number} [EaseOptions.options.repeat] true: repeat animation forever n: repeat animation n times + * @param {boolean|number} [EaseOptions.options.reverse] true: reverse animation (if combined with repeat, then pulse) n: reverse animation n times + * @param {Function} [EaseOptions.options.load] loads an animation using an .save() object note the * parameters below cannot be loaded and must be re-set + * @param {string|Function} [EaseOptions.options.ease] name or function from easing.js (see http://easings.net for examples) */ - /** - * ease parameters of object - * @param {PIXI.DisplayObject} object to animate - * @param {object} goto - parameters to animate, e.g.: {alpha: 5, scale: {3, 5}, scale: 5, rotation: Math.PI} - * @param {number} duration - time to run - * @fires done - * @fires wait - * @fires first - * @fires each - * @fires loop - * @fires reverse + /** + * ease parameters of object + * @param {PIXI.DisplayObject} object to animate + * @param {object} goto - parameters to animate, e.g.: {alpha: 5, scale: {3, 5}, scale: 5, rotation: Math.PI} + * @param {number} duration - time to run + * @fires done + * @fires wait + * @fires first + * @fires each + * @fires loop + * @fires reverse */ value: function to() { return this.add(new (Function.prototype.bind.apply(To, [null].concat(Array.prototype.slice.call(arguments))))()); } - /** - * animate object's {x, y} using an angle - * @param {object} object to animate - * @param {number} angle in radians - * @param {number} speed in pixels/millisecond - * @param {number} [duration=0] in milliseconds; if 0, then continues forever - * @param {object} [options] @see {@link Wait} + /** + * animate object's {x, y} using an angle + * @param {object} object to animate + * @param {number} angle in radians + * @param {number} speed in pixels/millisecond + * @param {number} [duration=0] in milliseconds; if 0, then continues forever + * @param {object} [options] @see {@link Wait} */ }, { @@ -76190,9 +76294,9 @@ var Ease = function (_Events) { return this.list.length; } - /** - * number of active animations - * @type {number} + /** + * number of active animations + * @type {number} */ }, { @@ -76784,24 +76888,24 @@ var wait = require('./wait'); var to = function (_wait) { _inherits(to, _wait); - /** - * @private - * @param {object} object to animate - * @param {object} goto - parameters to animate, e.g.: {alpha: 5, scale: {3, 5}, scale: 5, rotation: Math.PI} - * @param {number} duration - time to run - * @param {object} [options] - * @param {number} [options.wait=0] n milliseconds before starting animation (can also be used to pause animation for a length of time) - * @param {boolean} [options.pause] start the animation paused - * @param {boolean|number} [options.repeat] true: repeat animation forever n: repeat animation n times - * @param {boolean|number} [options.reverse] true: reverse animation (if combined with repeat, then pulse) n: reverse animation n times - * @param {Function} [options.load] loads an animation using an .save() object note the * parameters below cannot be loaded and must be re-set - * @param {string|Function} [options.ease] name or function from easing.js (see http://easings.net for examples) - * @emits to:done animation expires - * @emits to:wait each update during a wait - * @emits to:first first update when animation starts - * @emits to:each each update while animation is running - * @emits to:loop when animation is repeated - * @emits to:reverse when animation is reversed + /** + * @private + * @param {object} object to animate + * @param {object} goto - parameters to animate, e.g.: {alpha: 5, scale: {3, 5}, scale: 5, rotation: Math.PI} + * @param {number} duration - time to run + * @param {object} [options] + * @param {number} [options.wait=0] n milliseconds before starting animation (can also be used to pause animation for a length of time) + * @param {boolean} [options.pause] start the animation paused + * @param {boolean|number} [options.repeat] true: repeat animation forever n: repeat animation n times + * @param {boolean|number} [options.reverse] true: reverse animation (if combined with repeat, then pulse) n: reverse animation n times + * @param {Function} [options.load] loads an animation using an .save() object note the * parameters below cannot be loaded and must be re-set + * @param {string|Function} [options.ease] name or function from easing.js (see http://easings.net for examples) + * @emits to:done animation expires + * @emits to:wait each update during a wait + * @emits to:first first update when animation starts + * @emits to:each each update while animation is running + * @emits to:loop when animation is repeated + * @emits to:reverse when animation is reversed */ function to(object, goto, duration, options) { _classCallCheck(this, to); @@ -76826,9 +76930,9 @@ var to = function (_wait) { return _this; } - /** - * converts scale from { scale: n } to { scale: { x: n, y: n }} - * @private + /** + * converts scale from { scale: n } to { scale: { x: n, y: n }} + * @private */ @@ -76980,24 +77084,24 @@ var EventEmitter = require('eventemitter3'); var wait = function (_EventEmitter) { _inherits(wait, _EventEmitter); - /** - * @param {object|object[]} object or list of objects to animate - * @param {object} [options] - * @param {number} [options.wait=0] n milliseconds before starting animation (can also be used to pause animation for a length of time) - * @param {boolean} [options.pause] start the animation paused - * @param {(boolean|number)} [options.repeat] true: repeat animation forever n: repeat animation n times - * @param {(boolean|number)} [options.reverse] true: reverse animation (if combined with repeat, then pulse) n: reverse animation n times - * - * @param {number} [options.id] user-generated id (e.g., I use it to properly load animations when an object has multiple animations running) - * @param {Function} [options.load] loads an animation using an .save() object note the * parameters below cannot be loaded and must be re-set - * @param {Function|string} [options.ease] function (or penner function name) from easing.js (see http://easings.net for examples)* - * - * @emits {done} animation expires - * @emits {wait} each update during a wait - * @emits {first} first update when animation starts - * @emits {each} each update while animation is running - * @emits {loop} when animation is repeated - * @emits {reverse} when animation is reversed + /** + * @param {object|object[]} object or list of objects to animate + * @param {object} [options] + * @param {number} [options.wait=0] n milliseconds before starting animation (can also be used to pause animation for a length of time) + * @param {boolean} [options.pause] start the animation paused + * @param {(boolean|number)} [options.repeat] true: repeat animation forever n: repeat animation n times + * @param {(boolean|number)} [options.reverse] true: reverse animation (if combined with repeat, then pulse) n: reverse animation n times + * + * @param {number} [options.id] user-generated id (e.g., I use it to properly load animations when an object has multiple animations running) + * @param {Function} [options.load] loads an animation using an .save() object note the * parameters below cannot be loaded and must be re-set + * @param {Function|string} [options.ease] function (or penner function name) from easing.js (see http://easings.net for examples)* + * + * @emits {done} animation expires + * @emits {wait} each update during a wait + * @emits {first} first update when animation starts + * @emits {each} each update while animation is running + * @emits {loop} when animation is repeated + * @emits {reverse} when animation is reversed */ function wait(object, options) { _classCallCheck(this, wait); @@ -77064,9 +77168,9 @@ var wait = function (_EventEmitter) { this.duration = _load.duration; } - /** - * pause this entry - * @type {boolean} + /** + * pause this entry + * @type {boolean} */ }, { @@ -79798,19 +79902,19 @@ var Plugin = require('./plugin'); module.exports = function (_Plugin) { _inherits(Bounce, _Plugin); - /** - * @private - * @param {Viewport} parent - * @param {object} [options] - * @param {string} [options.sides=all] all, horizontal, vertical, or combination of top, bottom, right, left (e.g., 'top-bottom-right') - * @param {number} [options.friction=0.5] friction to apply to decelerate if active - * @param {number} [options.time=150] time in ms to finish bounce - * @param {string|function} [ease=easeInOutSine] ease function or name (see http://easings.net/ for supported names) - * @param {string} [options.underflow=center] (top/bottom/center and left/right/center, or center) where to place world if too small for screen - * @fires bounce-start-x - * @fires bounce.end-x - * @fires bounce-start-y - * @fires bounce-end-y + /** + * @private + * @param {Viewport} parent + * @param {object} [options] + * @param {string} [options.sides=all] all, horizontal, vertical, or combination of top, bottom, right, left (e.g., 'top-bottom-right') + * @param {number} [options.friction=0.5] friction to apply to decelerate if active + * @param {number} [options.time=150] time in ms to finish bounce + * @param {string|function} [ease=easeInOutSine] ease function or name (see http://easings.net/ for supported names) + * @param {string} [options.underflow=center] (top/bottom/center and left/right/center, or center) where to place world if too small for screen + * @fires bounce-start-x + * @fires bounce.end-x + * @fires bounce-start-y + * @fires bounce-end-y */ function Bounce(parent, options) { _classCallCheck(this, Bounce); @@ -80008,13 +80112,13 @@ var Plugin = require('./plugin'); module.exports = function (_Plugin) { _inherits(ClampZoom, _Plugin); - /** - * @private - * @param {object} [options] - * @param {number} [options.minWidth] minimum width - * @param {number} [options.minHeight] minimum height - * @param {number} [options.maxWidth] maximum width - * @param {number} [options.maxHeight] maximum height + /** + * @private + * @param {object} [options] + * @param {number} [options.minWidth] minimum width + * @param {number} [options.minHeight] minimum height + * @param {number} [options.maxWidth] maximum width + * @param {number} [options.maxHeight] maximum height */ function ClampZoom(parent, options) { _classCallCheck(this, ClampZoom); @@ -80087,15 +80191,15 @@ var utils = require('./utils'); module.exports = function (_Plugin) { _inherits(clamp, _Plugin); - /** - * @private - * @param {object} options - * @param {(number|boolean)} [options.left] clamp left; true=0 - * @param {(number|boolean)} [options.right] clamp right; true=viewport.worldWidth - * @param {(number|boolean)} [options.top] clamp top; true=0 - * @param {(number|boolean)} [options.bottom] clamp bottom; true=viewport.worldHeight - * @param {string} [options.direction] (all, x, or y) using clamps of [0, viewport.worldWidth/viewport.worldHeight]; replaces left/right/top/bottom if set - * @param {string} [options.underflow=center] (top/bottom/center and left/right/center, or center) where to place world if too small for screen + /** + * @private + * @param {object} options + * @param {(number|boolean)} [options.left] clamp left; true=0 + * @param {(number|boolean)} [options.right] clamp right; true=viewport.worldWidth + * @param {(number|boolean)} [options.top] clamp top; true=0 + * @param {(number|boolean)} [options.bottom] clamp bottom; true=viewport.worldHeight + * @param {string} [options.direction] (all, x, or y) using clamps of [0, viewport.worldWidth/viewport.worldHeight]; replaces left/right/top/bottom if set + * @param {string} [options.underflow=center] (top/bottom/center and left/right/center, or center) where to place world if too small for screen */ function clamp(parent, options) { _classCallCheck(this, clamp); @@ -80252,13 +80356,13 @@ var Plugin = require('./plugin'); module.exports = function (_Plugin) { _inherits(Decelerate, _Plugin); - /** - * @private - * @param {Viewport} parent - * @param {object} [options] - * @param {number} [options.friction=0.95] percent to decelerate after movement - * @param {number} [options.bounce=0.8] percent to decelerate when past boundaries (only applicable when viewport.bounce() is active) - * @param {number} [options.minSpeed=0.01] minimum velocity before stopping/reversing acceleration + /** + * @private + * @param {Viewport} parent + * @param {object} [options] + * @param {number} [options.friction=0.95] percent to decelerate after movement + * @param {number} [options.bounce=0.8] percent to decelerate when past boundaries (only applicable when viewport.bounce() is active) + * @param {number} [options.minSpeed=0.01] minimum velocity before stopping/reversing acceleration */ function Decelerate(parent, options) { _classCallCheck(this, Decelerate); @@ -80332,11 +80436,11 @@ module.exports = function (_Plugin) { } } - /** - * manually activate plugin - * @param {object} options - * @param {number} [options.x] - * @param {number} [options.y] + /** + * manually activate plugin + * @param {object} options + * @param {number} [options.x] + * @param {number} [options.y] */ }, { @@ -80408,17 +80512,17 @@ var Plugin = require('./plugin'); module.exports = function (_Plugin) { _inherits(Drag, _Plugin); - /** - * enable one-finger touch to drag - * @private - * @param {Viewport} parent - * @param {object} [options] - * @param {string} [options.direction=all] direction to drag (all, x, or y) - * @param {boolean} [options.wheel=true] use wheel to scroll in y direction (unless wheel plugin is active) - * @param {number} [options.wheelScroll=1] number of pixels to scroll with each wheel spin - * @param {boolean} [options.reverse] reverse the direction of the wheel scroll - * @param {boolean|string} [options.clampWheel] (true, x, or y) clamp wheel (to avoid weird bounce with mouse wheel) - * @param {string} [options.underflow=center] (top/bottom/center and left/right/center, or center) where to place world if too small for screen + /** + * enable one-finger touch to drag + * @private + * @param {Viewport} parent + * @param {object} [options] + * @param {string} [options.direction=all] direction to drag (all, x, or y) + * @param {boolean} [options.wheel=true] use wheel to scroll in y direction (unless wheel plugin is active) + * @param {number} [options.wheelScroll=1] number of pixels to scroll with each wheel spin + * @param {boolean} [options.reverse] reverse the direction of the wheel scroll + * @param {boolean|string} [options.clampWheel] (true, x, or y) clamp wheel (to avoid weird bounce with mouse wheel) + * @param {string} [options.underflow=center] (top/bottom/center and left/right/center, or center) where to place world if too small for screen */ function Drag(parent, options) { _classCallCheck(this, Drag); @@ -80623,13 +80727,13 @@ var Plugin = require('./plugin'); module.exports = function (_Plugin) { _inherits(Follow, _Plugin); - /** - * @private - * @param {Viewport} parent - * @param {PIXI.DisplayObject} target to follow (object must include {x: x-coordinate, y: y-coordinate}) - * @param {object} [options] - * @param {number} [options.speed=0] to follow in pixels/frame (0=teleport to location) - * @param {number} [options.radius] radius (in world coordinates) of center circle where movement is allowed without moving the viewport + /** + * @private + * @param {Viewport} parent + * @param {PIXI.DisplayObject} target to follow (object must include {x: x-coordinate, y: y-coordinate}) + * @param {object} [options] + * @param {number} [options.speed=0] to follow in pixels/frame (0=teleport to location) + * @param {number} [options.radius] radius (in world coordinates) of center circle where movement is allowed without moving the viewport */ function Follow(parent, target, options) { _classCallCheck(this, Follow); @@ -80702,24 +80806,24 @@ var Plugin = require('./plugin'); module.exports = function (_Plugin) { _inherits(MouseEdges, _Plugin); - /** - * Scroll viewport when mouse hovers near one of the edges. - * @private - * @param {Viewport} parent - * @param {object} [options] - * @param {number} [options.radius] distance from center of screen in screen pixels - * @param {number} [options.distance] distance from all sides in screen pixels - * @param {number} [options.top] alternatively, set top distance (leave unset for no top scroll) - * @param {number} [options.bottom] alternatively, set bottom distance (leave unset for no top scroll) - * @param {number} [options.left] alternatively, set left distance (leave unset for no top scroll) - * @param {number} [options.right] alternatively, set right distance (leave unset for no top scroll) - * @param {number} [options.speed=8] speed in pixels/frame to scroll viewport - * @param {boolean} [options.reverse] reverse direction of scroll - * @param {boolean} [options.noDecelerate] don't use decelerate plugin even if it's installed - * @param {boolean} [options.linear] if using radius, use linear movement (+/- 1, +/- 1) instead of angled movement (Math.cos(angle from center), Math.sin(angle from center)) - * - * @event mouse-edge-start(Viewport) emitted when mouse-edge starts - * @event mouse-edge-end(Viewport) emitted when mouse-edge ends + /** + * Scroll viewport when mouse hovers near one of the edges. + * @private + * @param {Viewport} parent + * @param {object} [options] + * @param {number} [options.radius] distance from center of screen in screen pixels + * @param {number} [options.distance] distance from all sides in screen pixels + * @param {number} [options.top] alternatively, set top distance (leave unset for no top scroll) + * @param {number} [options.bottom] alternatively, set bottom distance (leave unset for no top scroll) + * @param {number} [options.left] alternatively, set left distance (leave unset for no top scroll) + * @param {number} [options.right] alternatively, set right distance (leave unset for no top scroll) + * @param {number} [options.speed=8] speed in pixels/frame to scroll viewport + * @param {boolean} [options.reverse] reverse direction of scroll + * @param {boolean} [options.noDecelerate] don't use decelerate plugin even if it's installed + * @param {boolean} [options.linear] if using radius, use linear movement (+/- 1, +/- 1) instead of angled movement (Math.cos(angle from center), Math.sin(angle from center)) + * + * @event mouse-edge-start(Viewport) emitted when mouse-edge starts + * @event mouse-edge-end(Viewport) emitted when mouse-edge ends */ function MouseEdges(parent, options) { _classCallCheck(this, MouseEdges); @@ -80875,13 +80979,13 @@ var Plugin = require('./plugin'); module.exports = function (_Plugin) { _inherits(Pinch, _Plugin); - /** - * @private - * @param {Viewport} parent - * @param {object} [options] - * @param {boolean} [options.noDrag] disable two-finger dragging - * @param {number} [options.percent=1.0] percent to modify pinch speed - * @param {PIXI.Point} [options.center] place this point at center during zoom instead of center of two fingers + /** + * @private + * @param {Viewport} parent + * @param {object} [options] + * @param {boolean} [options.noDrag] disable two-finger dragging + * @param {number} [options.percent=1.0] percent to modify pinch speed + * @param {PIXI.Point} [options.center] place this point at center during zoom instead of center of two fingers */ function Pinch(parent, options) { _classCallCheck(this, Pinch); @@ -81049,24 +81153,24 @@ var utils = require('./utils'); module.exports = function (_Plugin) { _inherits(SnapZoom, _Plugin); - /** - * @private - * @param {Viewport} parent - * @param {object} [options] - * @param {number} [options.width] the desired width to snap (to maintain aspect ratio, choose only width or height) - * @param {number} [options.height] the desired height to snap (to maintain aspect ratio, choose only width or height) - * @param {number} [options.time=1000] - * @param {string|function} [options.ease=easeInOutSine] ease function or name (see http://easings.net/ for supported names) - * @param {PIXI.Point} [options.center] place this point at center during zoom instead of center of the viewport - * @param {boolean} [options.interrupt=true] pause snapping with any user input on the viewport - * @param {boolean} [options.removeOnComplete] removes this plugin after snapping is complete - * @param {boolean} [options.removeOnInterrupt] removes this plugin if interrupted by any user input - * @param {boolean} [options.forceStart] starts the snap immediately regardless of whether the viewport is at the desired zoom - * @param {boolean} [options.noMove] zoom but do not move - * - * @event snap-zoom-start(Viewport) emitted each time a fit animation starts - * @event snap-zoom-end(Viewport) emitted each time fit reaches its target - * @event snap-zoom-end(Viewport) emitted each time fit reaches its target + /** + * @private + * @param {Viewport} parent + * @param {object} [options] + * @param {number} [options.width] the desired width to snap (to maintain aspect ratio, choose only width or height) + * @param {number} [options.height] the desired height to snap (to maintain aspect ratio, choose only width or height) + * @param {number} [options.time=1000] + * @param {string|function} [options.ease=easeInOutSine] ease function or name (see http://easings.net/ for supported names) + * @param {PIXI.Point} [options.center] place this point at center during zoom instead of center of the viewport + * @param {boolean} [options.interrupt=true] pause snapping with any user input on the viewport + * @param {boolean} [options.removeOnComplete] removes this plugin after snapping is complete + * @param {boolean} [options.removeOnInterrupt] removes this plugin if interrupted by any user input + * @param {boolean} [options.forceStart] starts the snap immediately regardless of whether the viewport is at the desired zoom + * @param {boolean} [options.noMove] zoom but do not move + * + * @event snap-zoom-start(Viewport) emitted each time a fit animation starts + * @event snap-zoom-end(Viewport) emitted each time fit reaches its target + * @event snap-zoom-end(Viewport) emitted each time fit reaches its target */ function SnapZoom(parent, options) { _classCallCheck(this, SnapZoom); @@ -81223,25 +81327,25 @@ var utils = require('./utils'); module.exports = function (_Plugin) { _inherits(Snap, _Plugin); - /** - * @private - * @param {Viewport} parent - * @param {number} x - * @param {number} y - * @param {object} [options] - * @param {boolean} [options.topLeft] snap to the top-left of viewport instead of center - * @param {number} [options.friction=0.8] friction/frame to apply if decelerate is active - * @param {number} [options.time=1000] - * @param {string|function} [options.ease=easeInOutSine] ease function or name (see http://easings.net/ for supported names) - * @param {boolean} [options.interrupt=true] pause snapping with any user input on the viewport - * @param {boolean} [options.removeOnComplete] removes this plugin after snapping is complete - * @param {boolean} [options.removeOnInterrupt] removes this plugin if interrupted by any user input - * @param {boolean} [options.forceStart] starts the snap immediately regardless of whether the viewport is at the desired location - * - * @event snap-start(Viewport) emitted each time a snap animation starts - * @event snap-restart(Viewport) emitted each time a snap resets because of a change in viewport size - * @event snap-end(Viewport) emitted each time snap reaches its target - * @event snap-remove(Viewport) emitted if snap plugin is removed + /** + * @private + * @param {Viewport} parent + * @param {number} x + * @param {number} y + * @param {object} [options] + * @param {boolean} [options.topLeft] snap to the top-left of viewport instead of center + * @param {number} [options.friction=0.8] friction/frame to apply if decelerate is active + * @param {number} [options.time=1000] + * @param {string|function} [options.ease=easeInOutSine] ease function or name (see http://easings.net/ for supported names) + * @param {boolean} [options.interrupt=true] pause snapping with any user input on the viewport + * @param {boolean} [options.removeOnComplete] removes this plugin after snapping is complete + * @param {boolean} [options.removeOnInterrupt] removes this plugin if interrupted by any user input + * @param {boolean} [options.forceStart] starts the snap immediately regardless of whether the viewport is at the desired location + * + * @event snap-start(Viewport) emitted each time a snap animation starts + * @event snap-restart(Viewport) emitted each time a snap resets because of a change in viewport size + * @event snap-end(Viewport) emitted each time snap reaches its target + * @event snap-remove(Viewport) emitted if snap plugin is removed */ function Snap(parent, x, y, options) { _classCallCheck(this, Snap); @@ -81417,45 +81521,45 @@ var PLUGIN_ORDER = ['drag', 'pinch', 'wheel', 'follow', 'mouse-edges', 'decelera var Viewport = function (_PIXI$Container) { _inherits(Viewport, _PIXI$Container); - /** - * @extends PIXI.Container - * @extends EventEmitter - * @param {object} [options] - * @param {number} [options.screenWidth=window.innerWidth] - * @param {number} [options.screenHeight=window.innerHeight] - * @param {number} [options.worldWidth=this.width] - * @param {number} [options.worldHeight=this.height] - * @param {number} [options.threshold = 5] number of pixels to move to trigger an input event (e.g., drag, pinch) - * @param {(PIXI.Rectangle|PIXI.Circle|PIXI.Ellipse|PIXI.Polygon|PIXI.RoundedRectangle)} [options.forceHitArea] change the default hitArea from world size to a new value - * @param {PIXI.ticker.Ticker} [options.ticker=PIXI.ticker.shared] use this PIXI.ticker for updates - * @param {PIXI.InteractionManager} [options.interaction=null] InteractionManager, available from instantiated WebGLRenderer/CanvasRenderer.plugins.interaction - used to calculate pointer postion relative to canvas location on screen - * @param {HTMLElement} [options.divWheel=document.body] div to attach the wheel event - * @fires clicked - * @fires drag-start - * @fires drag-end - * @fires drag-remove - * @fires pinch-start - * @fires pinch-end - * @fires pinch-remove - * @fires snap-start - * @fires snap-end - * @fires snap-remove - * @fires snap-zoom-start - * @fires snap-zoom-end - * @fires snap-zoom-remove - * @fires bounce-x-start - * @fires bounce-x-end - * @fires bounce-y-start - * @fires bounce-y-end - * @fires bounce-remove - * @fires wheel - * @fires wheel-remove - * @fires wheel-scroll - * @fires wheel-scroll-remove - * @fires mouse-edge-start - * @fires mouse-edge-end - * @fires mouse-edge-remove - * @fires moved + /** + * @extends PIXI.Container + * @extends EventEmitter + * @param {object} [options] + * @param {number} [options.screenWidth=window.innerWidth] + * @param {number} [options.screenHeight=window.innerHeight] + * @param {number} [options.worldWidth=this.width] + * @param {number} [options.worldHeight=this.height] + * @param {number} [options.threshold = 5] number of pixels to move to trigger an input event (e.g., drag, pinch) + * @param {(PIXI.Rectangle|PIXI.Circle|PIXI.Ellipse|PIXI.Polygon|PIXI.RoundedRectangle)} [options.forceHitArea] change the default hitArea from world size to a new value + * @param {PIXI.ticker.Ticker} [options.ticker=PIXI.ticker.shared] use this PIXI.ticker for updates + * @param {PIXI.InteractionManager} [options.interaction=null] InteractionManager, available from instantiated WebGLRenderer/CanvasRenderer.plugins.interaction - used to calculate pointer postion relative to canvas location on screen + * @param {HTMLElement} [options.divWheel=document.body] div to attach the wheel event + * @fires clicked + * @fires drag-start + * @fires drag-end + * @fires drag-remove + * @fires pinch-start + * @fires pinch-end + * @fires pinch-remove + * @fires snap-start + * @fires snap-end + * @fires snap-remove + * @fires snap-zoom-start + * @fires snap-zoom-end + * @fires snap-zoom-remove + * @fires bounce-x-start + * @fires bounce-x-end + * @fires bounce-y-start + * @fires bounce-y-end + * @fires bounce-remove + * @fires wheel + * @fires wheel-remove + * @fires wheel-scroll + * @fires wheel-scroll-remove + * @fires mouse-edge-start + * @fires mouse-edge-end + * @fires mouse-edge-remove + * @fires moved */ function Viewport(options) { _classCallCheck(this, Viewport); @@ -81477,10 +81581,10 @@ var Viewport = function (_PIXI$Container) { _this.div = options.divWheel || document.body; _this.listeners(_this.div); - /** - * active touch point ids on the viewport - * @type {number[]} - * @readonly + /** + * active touch point ids on the viewport + * @type {number[]} + * @readonly */ _this.touches = []; @@ -81492,9 +81596,9 @@ var Viewport = function (_PIXI$Container) { return _this; } - /** - * removes all event listeners from viewport - * (useful for cleanup of wheel and ticker events when removing viewport) + /** + * removes all event listeners from viewport + * (useful for cleanup of wheel and ticker events when removing viewport) */ @@ -81505,8 +81609,8 @@ var Viewport = function (_PIXI$Container) { this.div.removeEventListener('wheel', this.wheelFunction); } - /** - * overrides PIXI.Container's destroy to also remove the 'wheel' and PIXI.Ticker listeners + /** + * overrides PIXI.Container's destroy to also remove the 'wheel' and PIXI.Ticker listeners */ }, { @@ -81516,9 +81620,9 @@ var Viewport = function (_PIXI$Container) { this.removeListeners(); } - /** - * update animations - * @private + /** + * update animations + * @private */ }, { @@ -81558,12 +81662,12 @@ var Viewport = function (_PIXI$Container) { } } - /** - * use this to set screen and world sizes--needed for pinch/wheel/clamp/bounce - * @param {number} screenWidth - * @param {number} screenHeight - * @param {number} [worldWidth] - * @param {number} [worldHeight] + /** + * use this to set screen and world sizes--needed for pinch/wheel/clamp/bounce + * @param {number} screenWidth + * @param {number} screenHeight + * @param {number} [worldWidth] + * @param {number} [worldHeight] */ }, { @@ -81576,9 +81680,9 @@ var Viewport = function (_PIXI$Container) { this.resizePlugins(); } - /** - * called after a worldWidth/Height change - * @private + /** + * called after a worldWidth/Height change + * @private */ }, { @@ -81610,18 +81714,18 @@ var Viewport = function (_PIXI$Container) { } } - /** - * screen width in screen pixels - * @type {number} + /** + * screen width in screen pixels + * @type {number} */ }, { key: 'listeners', - /** - * add input listeners - * @private + /** + * add input listeners + * @private */ value: function listeners(div) { var _this2 = this; @@ -81643,9 +81747,9 @@ var Viewport = function (_PIXI$Container) { this.leftDown = false; } - /** - * handle down events - * @private + /** + * handle down events + * @private */ }, { @@ -81701,10 +81805,10 @@ var Viewport = function (_PIXI$Container) { } } - /** - * whether change exceeds threshold - * @private - * @param {number} change + /** + * whether change exceeds threshold + * @private + * @param {number} change */ }, { @@ -81716,9 +81820,9 @@ var Viewport = function (_PIXI$Container) { return false; } - /** - * handle move events - * @private + /** + * handle move events + * @private */ }, { @@ -81762,9 +81866,9 @@ var Viewport = function (_PIXI$Container) { } } - /** - * handle up events - * @private + /** + * handle up events + * @private */ }, { @@ -81818,10 +81922,10 @@ var Viewport = function (_PIXI$Container) { } } - /** - * gets pointer position if this.interaction is set - * @param {UIEvent} evt - * @private + /** + * gets pointer position if this.interaction is set + * @param {UIEvent} evt + * @private */ }, { @@ -81837,9 +81941,9 @@ var Viewport = function (_PIXI$Container) { return point; } - /** - * handle wheel events - * @private + /** + * handle wheel events + * @private */ }, { @@ -81884,11 +81988,11 @@ var Viewport = function (_PIXI$Container) { } } - /** - * change coordinates from screen to world - * @param {number|PIXI.Point} x - * @param {number} [y] - * @returns {PIXI.Point} + /** + * change coordinates from screen to world + * @param {number|PIXI.Point} x + * @param {number} [y] + * @returns {PIXI.Point} */ }, { @@ -81903,11 +82007,11 @@ var Viewport = function (_PIXI$Container) { } } - /** - * change coordinates from world to screen - * @param {number|PIXI.Point} x - * @param {number} [y] - * @returns {PIXI.Point} + /** + * change coordinates from world to screen + * @param {number|PIXI.Point} x + * @param {number} [y] + * @returns {PIXI.Point} */ }, { @@ -81923,21 +82027,21 @@ var Viewport = function (_PIXI$Container) { } } - /** - * screen width in world coordinates - * @type {number} - * @readonly + /** + * screen width in world coordinates + * @type {number} + * @readonly */ }, { key: 'moveCenter', - /** - * move center of viewport to point - * @param {(number|PIXI.PointLike)} x or point - * @param {number} [y] - * @return {Viewport} this + /** + * move center of viewport to point + * @param {(number|PIXI.PointLike)} x or point + * @param {number} [y] + * @return {Viewport} this */ value: function moveCenter() /*x, y | PIXI.Point*/{ var x = void 0, @@ -81954,20 +82058,20 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * top-left corner - * @type {PIXI.PointLike} + /** + * top-left corner + * @type {PIXI.PointLike} */ }, { key: 'moveCorner', - /** - * move viewport's top-left corner; also clamps and resets decelerate and bounce (as needed) - * @param {number|PIXI.Point} x|point - * @param {number} y - * @return {Viewport} this + /** + * move viewport's top-left corner; also clamps and resets decelerate and bounce (as needed) + * @param {number|PIXI.Point} x|point + * @param {number} y + * @return {Viewport} this */ value: function moveCorner() /*x, y | point*/{ if (arguments.length === 1) { @@ -81979,11 +82083,11 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * change zoom so the width fits in the viewport - * @param {number} [width=this._worldWidth] in world coordinates - * @param {boolean} [center] maintain the same center - * @return {Viewport} this + /** + * change zoom so the width fits in the viewport + * @param {number} [width=this._worldWidth] in world coordinates + * @param {boolean} [center] maintain the same center + * @return {Viewport} this */ }, { @@ -82002,11 +82106,11 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * change zoom so the height fits in the viewport - * @param {number} [height=this._worldHeight] in world coordinates - * @param {boolean} [center] maintain the same center of the screen after zoom - * @return {Viewport} this + /** + * change zoom so the height fits in the viewport + * @param {number} [height=this._worldHeight] in world coordinates + * @param {boolean} [center] maintain the same center of the screen after zoom + * @return {Viewport} this */ }, { @@ -82025,10 +82129,10 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * change zoom so it fits the entire world in the viewport - * @param {boolean} [center] maintain the same center of the screen after zoom - * @return {Viewport} this + /** + * change zoom so it fits the entire world in the viewport + * @param {boolean} [center] maintain the same center of the screen after zoom + * @return {Viewport} this */ }, { @@ -82051,12 +82155,12 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * change zoom so it fits the size or the entire world in the viewport - * @param {boolean} [center] maintain the same center of the screen after zoom - * @param {number} [width] desired width - * @param {number} [height] desired height - * @return {Viewport} this + /** + * change zoom so it fits the size or the entire world in the viewport + * @param {boolean} [center] maintain the same center of the screen after zoom + * @param {number} [width] desired width + * @param {number} [height] desired height + * @return {Viewport} this */ }, { @@ -82081,11 +82185,11 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * zoom viewport by a certain percent (in both x and y direction) - * @param {number} percent change (e.g., 0.25 would increase a starting scale of 1.0 to 1.25) - * @param {boolean} [center] maintain the same center of the screen after zoom - * @return {Viewport} the viewport + /** + * zoom viewport by a certain percent (in both x and y direction) + * @param {number} percent change (e.g., 0.25 would increase a starting scale of 1.0 to 1.25) + * @param {boolean} [center] maintain the same center of the screen after zoom + * @return {Viewport} the viewport */ }, { @@ -82103,11 +82207,11 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * zoom viewport by increasing/decreasing width by a certain number of pixels - * @param {number} change in pixels - * @param {boolean} [center] maintain the same center of the screen after zoom - * @return {Viewport} the viewport + /** + * zoom viewport by increasing/decreasing width by a certain number of pixels + * @param {number} change in pixels + * @param {boolean} [center] maintain the same center of the screen after zoom + * @return {Viewport} the viewport */ }, { @@ -82117,17 +82221,17 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * @param {object} [options] - * @param {number} [options.width] the desired width to snap (to maintain aspect ratio, choose only width or height) - * @param {number} [options.height] the desired height to snap (to maintain aspect ratio, choose only width or height) - * @param {number} [options.time=1000] - * @param {string|function} [options.ease=easeInOutSine] ease function or name (see http://easings.net/ for supported names) - * @param {PIXI.Point} [options.center] place this point at center during zoom instead of center of the viewport - * @param {boolean} [options.interrupt=true] pause snapping with any user input on the viewport - * @param {boolean} [options.removeOnComplete] removes this plugin after snapping is complete - * @param {boolean} [options.removeOnInterrupt] removes this plugin if interrupted by any user input - * @param {boolean} [options.forceStart] starts the snap immediately regardless of whether the viewport is at the desired zoom + /** + * @param {object} [options] + * @param {number} [options.width] the desired width to snap (to maintain aspect ratio, choose only width or height) + * @param {number} [options.height] the desired height to snap (to maintain aspect ratio, choose only width or height) + * @param {number} [options.time=1000] + * @param {string|function} [options.ease=easeInOutSine] ease function or name (see http://easings.net/ for supported names) + * @param {PIXI.Point} [options.center] place this point at center during zoom instead of center of the viewport + * @param {boolean} [options.interrupt=true] pause snapping with any user input on the viewport + * @param {boolean} [options.removeOnComplete] removes this plugin after snapping is complete + * @param {boolean} [options.removeOnInterrupt] removes this plugin if interrupted by any user input + * @param {boolean} [options.forceStart] starts the snap immediately regardless of whether the viewport is at the desired zoom */ }, { @@ -82138,20 +82242,20 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * @private - * @typedef OutOfBounds - * @type {object} - * @property {boolean} left - * @property {boolean} right - * @property {boolean} top - * @property {boolean} bottom + /** + * @private + * @typedef OutOfBounds + * @type {object} + * @property {boolean} left + * @property {boolean} right + * @property {boolean} top + * @property {boolean} bottom */ - /** - * is container out of world bounds - * @return {OutOfBounds} - * @private + /** + * is container out of world bounds + * @return {OutOfBounds} + * @private */ }, { @@ -82169,28 +82273,28 @@ var Viewport = function (_PIXI$Container) { return result; } - /** - * world coordinates of the right edge of the screen - * @type {number} + /** + * world coordinates of the right edge of the screen + * @type {number} */ }, { key: 'countDownPointers', - /** - * count of mouse/touch pointers that are down on the viewport - * @private - * @return {number} + /** + * count of mouse/touch pointers that are down on the viewport + * @private + * @return {number} */ value: function countDownPointers() { return (this.leftDown ? 1 : 0) + this.touches.length; } - /** - * array of touch pointers that are down on the viewport - * @private - * @return {PIXI.InteractionTrackingData[]} + /** + * array of touch pointers that are down on the viewport + * @private + * @return {PIXI.InteractionTrackingData[]} */ }, { @@ -82207,10 +82311,10 @@ var Viewport = function (_PIXI$Container) { return results; } - /** - * array of pointers that are down on the viewport - * @private - * @return {PIXI.InteractionTrackingData[]} + /** + * array of pointers that are down on the viewport + * @private + * @return {PIXI.InteractionTrackingData[]} */ }, { @@ -82224,9 +82328,9 @@ var Viewport = function (_PIXI$Container) { return results; } - /** - * clamps and resets bounce and decelerate (as needed) after manually moving viewport - * @private + /** + * clamps and resets bounce and decelerate (as needed) after manually moving viewport + * @private */ }, { @@ -82253,9 +82357,9 @@ var Viewport = function (_PIXI$Container) { // PLUGINS - /** - * removes installed plugin - * @param {string} type of plugin (e.g., 'drag', 'pinch') + /** + * removes installed plugin + * @param {string} type of plugin (e.g., 'drag', 'pinch') */ }, { @@ -82268,9 +82372,9 @@ var Viewport = function (_PIXI$Container) { } } - /** - * pause plugin - * @param {string} type of plugin (e.g., 'drag', 'pinch') + /** + * pause plugin + * @param {string} type of plugin (e.g., 'drag', 'pinch') */ }, { @@ -82281,9 +82385,9 @@ var Viewport = function (_PIXI$Container) { } } - /** - * resume plugin - * @param {string} type of plugin (e.g., 'drag', 'pinch') + /** + * resume plugin + * @param {string} type of plugin (e.g., 'drag', 'pinch') */ }, { @@ -82294,9 +82398,9 @@ var Viewport = function (_PIXI$Container) { } } - /** - * sort plugins for updates - * @private + /** + * sort plugins for updates + * @private */ }, { @@ -82331,14 +82435,14 @@ var Viewport = function (_PIXI$Container) { } } - /** - * enable one-finger touch to drag - * @param {object} [options] - * @param {string} [options.direction=all] direction to drag (all, x, or y) - * @param {boolean} [options.wheel=true] use wheel to scroll in y direction (unless wheel plugin is active) - * @param {number} [options.wheelScroll=10] number of pixels to scroll with each wheel spin - * @param {boolean} [options.reverse] reverse the direction of the wheel scroll - * @param {string} [options.underflow=center] (top/bottom/center and left/right/center, or center) where to place world if too small for screen + /** + * enable one-finger touch to drag + * @param {object} [options] + * @param {string} [options.direction=all] direction to drag (all, x, or y) + * @param {boolean} [options.wheel=true] use wheel to scroll in y direction (unless wheel plugin is active) + * @param {number} [options.wheelScroll=10] number of pixels to scroll with each wheel spin + * @param {boolean} [options.reverse] reverse the direction of the wheel scroll + * @param {string} [options.underflow=center] (top/bottom/center and left/right/center, or center) where to place world if too small for screen */ }, { @@ -82349,19 +82453,19 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * clamp to world boundaries or other provided boundaries - * NOTES: - * clamp is disabled if called with no options; use { direction: 'all' } for all edge clamping - * screenWidth, screenHeight, worldWidth, and worldHeight needs to be set for this to work properly - * @param {object} [options] - * @param {(number|boolean)} [options.left] clamp left; true=0 - * @param {(number|boolean)} [options.right] clamp right; true=viewport.worldWidth - * @param {(number|boolean)} [options.top] clamp top; true=0 - * @param {(number|boolean)} [options.bottom] clamp bottom; true=viewport.worldHeight - * @param {string} [options.direction] (all, x, or y) using clamps of [0, viewport.worldWidth/viewport.worldHeight]; replaces left/right/top/bottom if set - * @param {string} [options.underflow=center] (top/bottom/center and left/right/center, or center) where to place world if too small for screen - * @return {Viewport} this + /** + * clamp to world boundaries or other provided boundaries + * NOTES: + * clamp is disabled if called with no options; use { direction: 'all' } for all edge clamping + * screenWidth, screenHeight, worldWidth, and worldHeight needs to be set for this to work properly + * @param {object} [options] + * @param {(number|boolean)} [options.left] clamp left; true=0 + * @param {(number|boolean)} [options.right] clamp right; true=viewport.worldWidth + * @param {(number|boolean)} [options.top] clamp top; true=0 + * @param {(number|boolean)} [options.bottom] clamp bottom; true=viewport.worldHeight + * @param {string} [options.direction] (all, x, or y) using clamps of [0, viewport.worldWidth/viewport.worldHeight]; replaces left/right/top/bottom if set + * @param {string} [options.underflow=center] (top/bottom/center and left/right/center, or center) where to place world if too small for screen + * @return {Viewport} this */ }, { @@ -82372,13 +82476,13 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * decelerate after a move - * @param {object} [options] - * @param {number} [options.friction=0.95] percent to decelerate after movement - * @param {number} [options.bounce=0.8] percent to decelerate when past boundaries (only applicable when viewport.bounce() is active) - * @param {number} [options.minSpeed=0.01] minimum velocity before stopping/reversing acceleration - * @return {Viewport} this + /** + * decelerate after a move + * @param {object} [options] + * @param {number} [options.friction=0.95] percent to decelerate after movement + * @param {number} [options.bounce=0.8] percent to decelerate when past boundaries (only applicable when viewport.bounce() is active) + * @param {number} [options.minSpeed=0.01] minimum velocity before stopping/reversing acceleration + * @return {Viewport} this */ }, { @@ -82389,16 +82493,16 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * bounce on borders - * NOTE: screenWidth, screenHeight, worldWidth, and worldHeight needs to be set for this to work properly - * @param {object} [options] - * @param {string} [options.sides=all] all, horizontal, vertical, or combination of top, bottom, right, left (e.g., 'top-bottom-right') - * @param {number} [options.friction=0.5] friction to apply to decelerate if active - * @param {number} [options.time=150] time in ms to finish bounce - * @param {string|function} [options.ease=easeInOutSine] ease function or name (see http://easings.net/ for supported names) - * @param {string} [options.underflow=center] (top/bottom/center and left/right/center, or center) where to place world if too small for screen - * @return {Viewport} this + /** + * bounce on borders + * NOTE: screenWidth, screenHeight, worldWidth, and worldHeight needs to be set for this to work properly + * @param {object} [options] + * @param {string} [options.sides=all] all, horizontal, vertical, or combination of top, bottom, right, left (e.g., 'top-bottom-right') + * @param {number} [options.friction=0.5] friction to apply to decelerate if active + * @param {number} [options.time=150] time in ms to finish bounce + * @param {string|function} [options.ease=easeInOutSine] ease function or name (see http://easings.net/ for supported names) + * @param {string} [options.underflow=center] (top/bottom/center and left/right/center, or center) where to place world if too small for screen + * @return {Viewport} this */ }, { @@ -82409,13 +82513,13 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * enable pinch to zoom and two-finger touch to drag - * NOTE: screenWidth, screenHeight, worldWidth, and worldHeight needs to be set for this to work properly - * @param {number} [options.percent=1.0] percent to modify pinch speed - * @param {boolean} [options.noDrag] disable two-finger dragging - * @param {PIXI.Point} [options.center] place this point at center during zoom instead of center of two fingers - * @return {Viewport} this + /** + * enable pinch to zoom and two-finger touch to drag + * NOTE: screenWidth, screenHeight, worldWidth, and worldHeight needs to be set for this to work properly + * @param {number} [options.percent=1.0] percent to modify pinch speed + * @param {boolean} [options.noDrag] disable two-finger dragging + * @param {PIXI.Point} [options.center] place this point at center during zoom instead of center of two fingers + * @return {Viewport} this */ }, { @@ -82426,20 +82530,20 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * snap to a point - * @param {number} x - * @param {number} y - * @param {object} [options] - * @param {boolean} [options.topLeft] snap to the top-left of viewport instead of center - * @param {number} [options.friction=0.8] friction/frame to apply if decelerate is active - * @param {number} [options.time=1000] - * @param {string|function} [options.ease=easeInOutSine] ease function or name (see http://easings.net/ for supported names) - * @param {boolean} [options.interrupt=true] pause snapping with any user input on the viewport - * @param {boolean} [options.removeOnComplete] removes this plugin after snapping is complete - * @param {boolean} [options.removeOnInterrupt] removes this plugin if interrupted by any user input - * @param {boolean} [options.forceStart] starts the snap immediately regardless of whether the viewport is at the desired location - * @return {Viewport} this + /** + * snap to a point + * @param {number} x + * @param {number} y + * @param {object} [options] + * @param {boolean} [options.topLeft] snap to the top-left of viewport instead of center + * @param {number} [options.friction=0.8] friction/frame to apply if decelerate is active + * @param {number} [options.time=1000] + * @param {string|function} [options.ease=easeInOutSine] ease function or name (see http://easings.net/ for supported names) + * @param {boolean} [options.interrupt=true] pause snapping with any user input on the viewport + * @param {boolean} [options.removeOnComplete] removes this plugin after snapping is complete + * @param {boolean} [options.removeOnInterrupt] removes this plugin if interrupted by any user input + * @param {boolean} [options.forceStart] starts the snap immediately regardless of whether the viewport is at the desired location + * @return {Viewport} this */ }, { @@ -82450,13 +82554,13 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * follow a target - * @param {PIXI.DisplayObject} target to follow (object must include {x: x-coordinate, y: y-coordinate}) - * @param {object} [options] - * @param {number} [options.speed=0] to follow in pixels/frame (0=teleport to location) - * @param {number} [options.radius] radius (in world coordinates) of center circle where movement is allowed without moving the viewport - * @return {Viewport} this + /** + * follow a target + * @param {PIXI.DisplayObject} target to follow (object must include {x: x-coordinate, y: y-coordinate}) + * @param {object} [options] + * @param {number} [options.speed=0] to follow in pixels/frame (0=teleport to location) + * @param {number} [options.radius] radius (in world coordinates) of center circle where movement is allowed without moving the viewport + * @return {Viewport} this */ }, { @@ -82467,13 +82571,13 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * zoom using mouse wheel - * @param {object} [options] - * @param {number} [options.percent=0.1] percent to scroll with each spin - * @param {boolean} [options.reverse] reverse the direction of the scroll - * @param {PIXI.Point} [options.center] place this point at center during zoom instead of current mouse position - * @return {Viewport} this + /** + * zoom using mouse wheel + * @param {object} [options] + * @param {number} [options.percent=0.1] percent to scroll with each spin + * @param {boolean} [options.reverse] reverse the direction of the scroll + * @param {PIXI.Point} [options.center] place this point at center during zoom instead of current mouse position + * @return {Viewport} this */ }, { @@ -82484,15 +82588,15 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * enable clamping of zoom to constraints - * NOTE: screenWidth, screenHeight, worldWidth, and worldHeight needs to be set for this to work properly - * @param {object} [options] - * @param {number} [options.minWidth] minimum width - * @param {number} [options.minHeight] minimum height - * @param {number} [options.maxWidth] maximum width - * @param {number} [options.maxHeight] maximum height - * @return {Viewport} this + /** + * enable clamping of zoom to constraints + * NOTE: screenWidth, screenHeight, worldWidth, and worldHeight needs to be set for this to work properly + * @param {object} [options] + * @param {number} [options.minWidth] minimum width + * @param {number} [options.minHeight] minimum height + * @param {number} [options.maxWidth] maximum width + * @param {number} [options.maxHeight] maximum height + * @return {Viewport} this */ }, { @@ -82503,19 +82607,19 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * Scroll viewport when mouse hovers near one of the edges or radius-distance from center of screen. - * @param {object} [options] - * @param {number} [options.radius] distance from center of screen in screen pixels - * @param {number} [options.distance] distance from all sides in screen pixels - * @param {number} [options.top] alternatively, set top distance (leave unset for no top scroll) - * @param {number} [options.bottom] alternatively, set bottom distance (leave unset for no top scroll) - * @param {number} [options.left] alternatively, set left distance (leave unset for no top scroll) - * @param {number} [options.right] alternatively, set right distance (leave unset for no top scroll) - * @param {number} [options.speed=8] speed in pixels/frame to scroll viewport - * @param {boolean} [options.reverse] reverse direction of scroll - * @param {boolean} [options.noDecelerate] don't use decelerate plugin even if it's installed - * @param {boolean} [options.linear] if using radius, use linear movement (+/- 1, +/- 1) instead of angled movement (Math.cos(angle from center), Math.sin(angle from center)) + /** + * Scroll viewport when mouse hovers near one of the edges or radius-distance from center of screen. + * @param {object} [options] + * @param {number} [options.radius] distance from center of screen in screen pixels + * @param {number} [options.distance] distance from all sides in screen pixels + * @param {number} [options.top] alternatively, set top distance (leave unset for no top scroll) + * @param {number} [options.bottom] alternatively, set bottom distance (leave unset for no top scroll) + * @param {number} [options.left] alternatively, set left distance (leave unset for no top scroll) + * @param {number} [options.right] alternatively, set right distance (leave unset for no top scroll) + * @param {number} [options.speed=8] speed in pixels/frame to scroll viewport + * @param {boolean} [options.reverse] reverse direction of scroll + * @param {boolean} [options.noDecelerate] don't use decelerate plugin even if it's installed + * @param {boolean} [options.linear] if using radius, use linear movement (+/- 1, +/- 1) instead of angled movement (Math.cos(angle from center), Math.sin(angle from center)) */ }, { @@ -82526,10 +82630,10 @@ var Viewport = function (_PIXI$Container) { return this; } - /** - * pause viewport (including animation updates such as decelerate) - * NOTE: when setting pause=true, all touches and mouse actions are cleared (i.e., if mousedown was active, it becomes inactive for purposes of the viewport) - * @type {boolean} + /** + * pause viewport (including animation updates such as decelerate) + * NOTE: when setting pause=true, all touches and mouse actions are cleared (i.e., if mousedown was active, it becomes inactive for purposes of the viewport) + * @type {boolean} */ }, { @@ -82541,9 +82645,9 @@ var Viewport = function (_PIXI$Container) { this._screenWidth = value; } - /** - * screen height in screen pixels - * @type {number} + /** + * screen height in screen pixels + * @type {number} */ }, { @@ -82555,9 +82659,9 @@ var Viewport = function (_PIXI$Container) { this._screenHeight = value; } - /** - * world width in pixels - * @type {number} + /** + * world width in pixels + * @type {number} */ }, { @@ -82574,9 +82678,9 @@ var Viewport = function (_PIXI$Container) { this.resizePlugins(); } - /** - * world height in pixels - * @type {number} + /** + * world height in pixels + * @type {number} */ }, { @@ -82598,10 +82702,10 @@ var Viewport = function (_PIXI$Container) { return this._screenWidth / this.scale.x; } - /** - * screen height in world coordinates - * @type {number} - * @readonly + /** + * screen height in world coordinates + * @type {number} + * @readonly */ }, { @@ -82610,10 +82714,10 @@ var Viewport = function (_PIXI$Container) { return this._screenHeight / this.scale.y; } - /** - * world width in screen coordinates - * @type {number} - * @readonly + /** + * world width in screen coordinates + * @type {number} + * @readonly */ }, { @@ -82622,10 +82726,10 @@ var Viewport = function (_PIXI$Container) { return this._worldWidth * this.scale.x; } - /** - * world height in screen coordinates - * @type {number} - * @readonly + /** + * world height in screen coordinates + * @type {number} + * @readonly */ }, { @@ -82634,9 +82738,9 @@ var Viewport = function (_PIXI$Container) { return this._worldHeight * this.scale.y; } - /** - * get center of screen in world coordinates - * @type {PIXI.PointLike} + /** + * get center of screen in world coordinates + * @type {PIXI.PointLike} */ }, { @@ -82665,9 +82769,9 @@ var Viewport = function (_PIXI$Container) { this._reset(); } - /** - * world coordinates of the left edge of the screen - * @type {number} + /** + * world coordinates of the left edge of the screen + * @type {number} */ }, { @@ -82680,9 +82784,9 @@ var Viewport = function (_PIXI$Container) { this._reset(); } - /** - * world coordinates of the top edge of the screen - * @type {number} + /** + * world coordinates of the top edge of the screen + * @type {number} */ }, { @@ -82695,9 +82799,9 @@ var Viewport = function (_PIXI$Container) { this._reset(); } - /** - * world coordinates of the bottom edge of the screen - * @type {number} + /** + * world coordinates of the bottom edge of the screen + * @type {number} */ }, { @@ -82709,9 +82813,9 @@ var Viewport = function (_PIXI$Container) { this.y = -value * this.scale.y + this.screenHeight; this._reset(); } - /** - * determines whether the viewport is dirty (i.e., needs to be renderered to the screen because of a change) - * @type {boolean} + /** + * determines whether the viewport is dirty (i.e., needs to be renderered to the screen because of a change) + * @type {boolean} */ }, { @@ -82723,10 +82827,10 @@ var Viewport = function (_PIXI$Container) { this._dirty = value; } - /** - * permanently changes the Viewport's hitArea - *

NOTE: normally the hitArea = PIXI.Rectangle(Viewport.left, Viewport.top, Viewport.worldScreenWidth, Viewport.worldScreenHeight)

- * @type {(PIXI.Rectangle|PIXI.Circle|PIXI.Ellipse|PIXI.Polygon|PIXI.RoundedRectangle)} + /** + * permanently changes the Viewport's hitArea + *

NOTE: normally the hitArea = PIXI.Rectangle(Viewport.left, Viewport.top, Viewport.worldScreenWidth, Viewport.worldScreenHeight)

+ * @type {(PIXI.Rectangle|PIXI.Circle|PIXI.Ellipse|PIXI.Polygon|PIXI.RoundedRectangle)} */ }, { @@ -82760,136 +82864,136 @@ var Viewport = function (_PIXI$Container) { return Viewport; }(PIXI.Container); -/** - * fires after a mouse or touch click - * @event Viewport#clicked - * @type {object} - * @property {PIXI.PointLike} screen - * @property {PIXI.PointLike} world - * @property {Viewport} viewport +/** + * fires after a mouse or touch click + * @event Viewport#clicked + * @type {object} + * @property {PIXI.PointLike} screen + * @property {PIXI.PointLike} world + * @property {Viewport} viewport */ -/** - * fires when a drag starts - * @event Viewport#drag-start - * @type {object} - * @property {PIXI.PointLike} screen - * @property {PIXI.PointLike} world - * @property {Viewport} viewport +/** + * fires when a drag starts + * @event Viewport#drag-start + * @type {object} + * @property {PIXI.PointLike} screen + * @property {PIXI.PointLike} world + * @property {Viewport} viewport */ -/** - * fires when a drag ends - * @event Viewport#drag-end - * @type {object} - * @property {PIXI.PointLike} screen - * @property {PIXI.PointLike} world - * @property {Viewport} viewport +/** + * fires when a drag ends + * @event Viewport#drag-end + * @type {object} + * @property {PIXI.PointLike} screen + * @property {PIXI.PointLike} world + * @property {Viewport} viewport */ -/** - * fires when a pinch starts - * @event Viewport#pinch-start - * @type {Viewport} +/** + * fires when a pinch starts + * @event Viewport#pinch-start + * @type {Viewport} */ -/** - * fires when a pinch end - * @event Viewport#pinch-end - * @type {Viewport} +/** + * fires when a pinch end + * @event Viewport#pinch-end + * @type {Viewport} */ -/** - * fires when a snap starts - * @event Viewport#snap-start - * @type {Viewport} +/** + * fires when a snap starts + * @event Viewport#snap-start + * @type {Viewport} */ -/** - * fires when a snap ends - * @event Viewport#snap-end - * @type {Viewport} +/** + * fires when a snap ends + * @event Viewport#snap-end + * @type {Viewport} */ -/** - * fires when a snap-zoom starts - * @event Viewport#snap-zoom-start - * @type {Viewport} +/** + * fires when a snap-zoom starts + * @event Viewport#snap-zoom-start + * @type {Viewport} */ -/** - * fires when a snap-zoom ends - * @event Viewport#snap-zoom-end - * @type {Viewport} +/** + * fires when a snap-zoom ends + * @event Viewport#snap-zoom-end + * @type {Viewport} */ -/** - * fires when a bounce starts in the x direction - * @event Viewport#bounce-x-start - * @type {Viewport} +/** + * fires when a bounce starts in the x direction + * @event Viewport#bounce-x-start + * @type {Viewport} */ -/** - * fires when a bounce ends in the x direction - * @event Viewport#bounce-x-end - * @type {Viewport} +/** + * fires when a bounce ends in the x direction + * @event Viewport#bounce-x-end + * @type {Viewport} */ -/** - * fires when a bounce starts in the y direction - * @event Viewport#bounce-y-start - * @type {Viewport} +/** + * fires when a bounce starts in the y direction + * @event Viewport#bounce-y-start + * @type {Viewport} */ -/** - * fires when a bounce ends in the y direction - * @event Viewport#bounce-y-end - * @type {Viewport} +/** + * fires when a bounce ends in the y direction + * @event Viewport#bounce-y-end + * @type {Viewport} */ -/** - * fires when for a mouse wheel event - * @event Viewport#wheel - * @type {object} - * @property {object} wheel - * @property {number} wheel.dx - * @property {number} wheel.dy - * @property {number} wheel.dz - * @property {Viewport} viewport +/** + * fires when for a mouse wheel event + * @event Viewport#wheel + * @type {object} + * @property {object} wheel + * @property {number} wheel.dx + * @property {number} wheel.dy + * @property {number} wheel.dz + * @property {Viewport} viewport */ -/** - * fires when a wheel-scroll occurs - * @event Viewport#wheel-scroll - * @type {Viewport} +/** + * fires when a wheel-scroll occurs + * @event Viewport#wheel-scroll + * @type {Viewport} */ -/** - * fires when a mouse-edge starts to scroll - * @event Viewport#mouse-edge-start - * @type {Viewport} +/** + * fires when a mouse-edge starts to scroll + * @event Viewport#mouse-edge-start + * @type {Viewport} */ -/** - * fires when the mouse-edge scrolling ends - * @event Viewport#mouse-edge-end - * @type {Viewport} +/** + * fires when the mouse-edge scrolling ends + * @event Viewport#mouse-edge-end + * @type {Viewport} */ -/** - * fires when viewport moves through UI interaction, deceleration, or follow - * @event Viewport#moved - * @type {object} - * @property {Viewport} viewport - * @property {string} type (drag, snap, pinch, follow, bounce-x, bounce-y, clamp-x, clamp-y, decelerate, mouse-edges, wheel) +/** + * fires when viewport moves through UI interaction, deceleration, or follow + * @event Viewport#moved + * @type {object} + * @property {Viewport} viewport + * @property {string} type (drag, snap, pinch, follow, bounce-x, bounce-y, clamp-x, clamp-y, decelerate, mouse-edges, wheel) */ -/** - * fires when viewport moves through UI interaction, deceleration, or follow - * @event Viewport#zoomed - * @type {object} - * @property {Viewport} viewport - * @property {string} type (drag-zoom, pinch, wheel, clamp-zoom) +/** + * fires when viewport moves through UI interaction, deceleration, or follow + * @event Viewport#zoomed + * @type {object} + * @property {Viewport} viewport + * @property {string} type (drag-zoom, pinch, wheel, clamp-zoom) */ PIXI.extras.Viewport = Viewport; @@ -82912,15 +83016,15 @@ var Plugin = require('./plugin'); module.exports = function (_Plugin) { _inherits(Wheel, _Plugin); - /** - * @private - * @param {Viewport} parent - * @param {object} [options] - * @param {number} [options.percent=0.1] percent to scroll with each spin - * @param {boolean} [options.reverse] reverse the direction of the scroll - * @param {PIXI.Point} [options.center] place this point at center during zoom instead of current mouse position - * - * @event wheel({wheel: {dx, dy, dz}, event, viewport}) + /** + * @private + * @param {Viewport} parent + * @param {object} [options] + * @param {number} [options.percent=0.1] percent to scroll with each spin + * @param {boolean} [options.reverse] reverse the direction of the scroll + * @param {PIXI.Point} [options.center] place this point at center during zoom instead of current mouse position + * + * @event wheel({wheel: {dx, dy, dz}, event, viewport}) */ function Wheel(parent, options) { _classCallCheck(this, Wheel); diff --git a/dist/iwmlib.3rdparty.min.js b/dist/iwmlib.3rdparty.min.js index 8aba46c..b0a63c2 100644 --- a/dist/iwmlib.3rdparty.min.js +++ b/dist/iwmlib.3rdparty.min.js @@ -1 +1 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.OptimalSelect=e():t.OptimalSelect=e()}(this,function(){return function(r){var i={};function n(t){if(i[t])return i[t].exports;var e=i[t]={i:t,l:!1,exports:{}};return r[t].call(e.exports,e,e.exports,n),e.l=!0,e.exports}return n.m=r,n.c=i,n.i=function(t){return t},n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=6)}([function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.convertNodeList=function(t){for(var e=t.length,r=new Array(e),i=0;i@~]/g,"\\$&").replace(/\n/g,"A")}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getCommonAncestor=function(t){var e=(1 /g,">").split(/\s+(?=(?:(?:[^"]*"){2})*[^"]*$)/);if(i.length<2)return f("",t,"",e);var n=[i.pop()];for(;1/g,"> ").trim()};var i,n=r(3),h=(i=n)&&i.__esModule?i:{default:i},c=r(0);function f(r,i,n,o){if(r.length&&(r+=" "),n.length&&(n=" "+n),/\[*\]/.test(i)){var t=i.replace(/=.*$/,"]"),a=""+r+t+n;if(g(document.querySelectorAll(a),o))i=t;else for(var s=document.querySelectorAll(""+r+t),e=function(){var e=s[l];if(o.some(function(t){return e.contains(t)})){var t=e.tagName.toLowerCase();return a=""+r+t+n,g(document.querySelectorAll(a),o)&&(i=t),"break"}},l=0,u=s.length;l/.test(i)){var h=i.replace(/>/,"");a=""+r+h+n;g(document.querySelectorAll(a),o)&&(i=h)}if(/:nth-child/.test(i)){var c=i.replace(/nth-child/g,"nth-of-type");a=""+r+c+n;g(document.querySelectorAll(a),o)&&(i=c)}if(/\.\S+\.\S+/.test(i)){for(var f=i.trim().split(".").slice(1).map(function(t){return"."+t}).sort(function(t,e){return t.length-e.length});f.length;){var p=i.replace(f.shift(),"").trim();if(!(a=(""+r+p+n).trim()).length||">"===a.charAt(0)||">"===a.charAt(a.length-1))break;g(document.querySelectorAll(a),o)&&(i=p)}if((f=i&&i.match(/\./g))&&2/.test(s):u=function(e){return function(t){return t(e.parent)&&e.parent}};break;case/^\./.test(s):var r=s.substr(1).split(".");l=function(t){var e=t.attribs.class;return e&&r.every(function(t){return-1)(\S)/g,"$1 $2").trim()),e=i.shift(),n=i.length;return e(this).filter(function(t){for(var e=0;e\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",r=o.console&&(o.console.warn||o.console.log);return r&&r.call(o.console,n,e),i.apply(this,arguments)}}a="function"!=typeof Object.assign?function(t){if(t===c||null===t)throw new TypeError("Cannot convert undefined or null to object");for(var e=Object(t),r=1;re[r]}):i.sort()),i}function A(t,e){for(var r,i,n=e[0].toUpperCase()+e.slice(1),o=0;of(u.y)?u.x:u.y,e.scale=a?function(t,e){return it(e[0],e[1],J)/it(t[0],t[1],J)}(a.pointers,i):1,e.rotation=a?function(t,e){return nt(e[1],e[0],J)+nt(t[1],t[0],J)}(a.pointers,i):0,e.maxPointers=r.prevInput?e.pointers.length>r.prevInput.maxPointers?e.pointers.length:r.prevInput.maxPointers:e.pointers.length,function(t,e){var r,i,n,o,a=t.lastInterval||e,s=e.timeStamp-a.timeStamp;if(e.eventType!=B&&(Lf(h.y)?h.x:h.y,o=rt(l,u),t.lastInterval=e}else r=a.velocity,i=a.velocityX,n=a.velocityY,o=a.direction;e.velocity=r,e.velocityX=i,e.velocityY=n,e.direction=o}(r,e);var h=t.element;T(e.srcEvent.target,h)&&(h=e.srcEvent.target);e.target=h}(t,r),t.emit("hammer.input",r),t.recognize(r),t.session.prevInput=r}function $(t){for(var e=[],r=0;r=f(e)?t<0?X:H:e<0?W:q}function it(t,e,r){r||(r=Z);var i=e[r[0]]-t[r[0]],n=e[r[1]]-t[r[1]];return Math.sqrt(i*i+n*n)}function nt(t,e,r){r||(r=Z);var i=e[r[0]]-t[r[0]],n=e[r[1]]-t[r[1]];return 180*Math.atan2(n,i)/Math.PI}K.prototype={handler:function(){},init:function(){this.evEl&&x(this.element,this.evEl,this.domHandler),this.evTarget&&x(this.target,this.evTarget,this.domHandler),this.evWin&&x(O(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&w(this.element,this.evEl,this.domHandler),this.evTarget&&w(this.target,this.evTarget,this.domHandler),this.evWin&&w(O(this.element),this.evWin,this.domHandler)}};var ot={mousedown:j,mousemove:2,mouseup:N},at="mousedown",st="mousemove mouseup";function lt(){this.evEl=at,this.evWin=st,this.pressed=!1,K.apply(this,arguments)}v(lt,K,{handler:function(t){var e=ot[t.type];e&j&&0===t.button&&(this.pressed=!0),2&e&&1!==t.which&&(e=N),this.pressed&&(e&N&&(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:F,srcEvent:t}))}});var ut={pointerdown:j,pointermove:2,pointerup:N,pointercancel:B,pointerout:B},ht={2:z,3:"pen",4:F,5:"kinect"},ct="pointerdown",ft="pointermove pointerup pointercancel";function pt(){this.evEl=ct,this.evWin=ft,K.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}o.MSPointerEvent&&!o.PointerEvent&&(ct="MSPointerDown",ft="MSPointerMove MSPointerUp MSPointerCancel"),v(pt,K,{handler:function(t){var e=this.store,r=!1,i=t.type.toLowerCase().replace("ms",""),n=ut[i],o=ht[t.pointerType]||t.pointerType,a=o==z,s=P(e,t.pointerId,"pointerId");n&j&&(0===t.button||a)?s<0&&(e.push(t),s=e.length-1):n&(N|B)&&(r=!0),s<0||(e[s]=t,this.callback(this.manager,n,{pointers:e,changedPointers:[t],pointerType:o,srcEvent:t}),r&&e.splice(s,1))}});var dt={touchstart:j,touchmove:2,touchend:N,touchcancel:B};function mt(){this.evTarget="touchstart",this.evWin="touchstart touchmove touchend touchcancel",this.started=!1,K.apply(this,arguments)}v(mt,K,{handler:function(t){var e=dt[t.type];if(e===j&&(this.started=!0),this.started){var r=function(t,e){var r=E(t.touches),i=E(t.changedTouches);e&(N|B)&&(r=C(r.concat(i),"identifier",!0));return[r,i]}.call(this,t,e);e&(N|B)&&r[0].length-r[1].length==0&&(this.started=!1),this.callback(this.manager,e,{pointers:r[0],changedPointers:r[1],pointerType:z,srcEvent:t})}}});var gt={touchstart:j,touchmove:2,touchend:N,touchcancel:B},vt="touchstart touchmove touchend touchcancel";function _t(){this.evTarget=vt,this.targetIds={},K.apply(this,arguments)}v(_t,K,{handler:function(t){var e=gt[t.type],r=function(t,e){var r=E(t.touches),i=this.targetIds;if(e&(2|j)&&1===r.length)return i[r[0].identifier]=!0,[r,r];var n,o,a=E(t.changedTouches),s=[],l=this.target;if(o=r.filter(function(t){return T(t.target,l)}),e===j)for(n=0;ne.threshold&&n&e.direction},attrTest:function(t){return Ft.prototype.attrTest.call(this,t)&&(2&this.state||!(2&this.state)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=Rt(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),v(jt,Ft,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[Pt]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||2&this.state)},emit:function(t){if(1!==t.scale){var e=t.scale<1?"in":"out";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),v(Nt,Mt,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return["auto"]},process:function(t){var e=this.options,r=t.pointers.length===e.pointers,i=t.distancee.time;if(this._input=t,!i||!r||t.eventType&(N|B)&&!n)this.reset();else if(t.eventType&j)this.reset(),this._timer=u(function(){this.state=8,this.tryEmit()},e.time,this);else if(t.eventType&N)return 8;return 32},reset:function(){clearTimeout(this._timer)},emit:function(t){8===this.state&&(t&&t.eventType&N?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=p(),this.manager.emit(this.options.event,this._input)))}}),v(Bt,Ft,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[Pt]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||2&this.state)}}),v(Ut,Ft,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:G|V,pointers:1},getTouchAction:function(){return Lt.prototype.getTouchAction.call(this)},attrTest:function(t){var e,r=this.options.direction;return r&(G|V)?e=t.overallVelocity:r&G?e=t.overallVelocityX:r&V&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&r&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&f(e)>this.options.velocity&&t.eventType&N},emit:function(t){var e=Rt(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),v(Xt,Mt,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[St]},process:function(t){var e=this.options,r=t.pointers.length===e.pointers,i=t.distance80*r){i=o=t[0],n=a=t[1];for(var d=r;do.x?n.x>a.x?n.x:a.x:o.x>a.x?o.x:a.x,h=n.y>o.y?n.y>a.y?n.y:a.y:o.y>a.y?o.y:a.y,c=C(s,l,e,r,i),f=C(u,h,e,r,i),p=t.prevZ,d=t.nextZ;p&&p.z>=c&&d&&d.z<=f;){if(p!==t.prev&&p!==t.next&&I(n.x,n.y,o.x,o.y,a.x,a.y,p.x,p.y)&&0<=O(p.prev,p,p.next))return!1;if(p=p.prevZ,d!==t.prev&&d!==t.next&&I(n.x,n.y,o.x,o.y,a.x,a.y,d.x,d.y)&&0<=O(d.prev,d,d.next))return!1;d=d.nextZ}for(;p&&p.z>=c;){if(p!==t.prev&&p!==t.next&&I(n.x,n.y,o.x,o.y,a.x,a.y,p.x,p.y)&&0<=O(p.prev,p,p.next))return!1;p=p.prevZ}for(;d&&d.z<=f;){if(d!==t.prev&&d!==t.next&&I(n.x,n.y,o.x,o.y,a.x,a.y,d.x,d.y)&&0<=O(d.prev,d,d.next))return!1;d=d.nextZ}return!0}function k(t,e,r){var i=t;do{var n=i.prev,o=i.next.next;!M(n,o)&&R(n,i,i.next,o)&&L(n,o)&&L(o,n)&&(e.push(n.i/r),e.push(i.i/r),e.push(o.i/r),B(i),B(i.next),i=t=o),i=i.next}while(i!==t);return y(i)}function S(t,e,r,i,n,o){var a,s,l=t;do{for(var u=l.next.next;u!==l.prev;){if(l.i!==u.i&&(s=u,(a=l).next.i!==s.i&&a.prev.i!==s.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&R(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}(a,s)&&(L(a,s)&&L(s,a)&&function(t,e){var r=t,i=!1,n=(t.x+e.x)/2,o=(t.y+e.y)/2;for(;r.y>o!=r.next.y>o&&r.next.y!==r.y&&n<(r.next.x-r.x)*(o-r.y)/(r.next.y-r.y)+r.x&&(i=!i),r=r.next,r!==t;);return i}(a,s)&&(O(a.prev,a,s.prev)||O(a,s.prev,s))||M(a,s)&&0=i.next.y&&i.next.y!==i.y){var s=i.x+(o-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(s<=n&&a=i.x&&i.x>=h&&n!==i.x&&I(or.x||i.x===r.x&&(d=i,O((p=r).prev,p,d.prev)<0&&O(d.next,p,p.next)<0)))&&(r=i,f=l)),i=i.next,i!==u;);var p,d;return r}(t,e)){var r=j(e,t);y(r,r.next)}}function C(t,e,r,i,n){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*n)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-i)*n)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function A(t){for(var e=t,r=t;(e.x=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function F(t){return 0= 0x80 (not a basic code point)","invalid-input":"Invalid input"},f=_-y,k=Math.floor,S=String.fromCharCode;function P(t){throw RangeError(c[t])}function p(t,e){for(var r=t.length,i=[];r--;)i[r]=e(t[r]);return i}function d(t,e){var r=t.split("@"),i="";return 1>>10&1023|55296),t=56320|1023&t),e+=S(t)}).join("")}function A(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function I(t,e,r){var i=0;for(t=r?k(t/s):t>>1,t+=k(t/e);f*b>>1k((v-d)/a))&&P("overflow"),d+=l*a,!(l<(u=s<=g?y:g+b<=s?b:s-g));s+=_)a>k(v/(h=_-u))&&P("overflow"),a*=h;g=I(d-o,e=f.length+1,0==o),k(d/e)>v-m&&P("overflow"),m+=k(d/e),d%=e,f.splice(d++,0,m)}return C(f)}function g(t){var e,r,i,n,o,a,s,l,u,h,c,f,p,d,m,g=[];for(f=(t=E(t)).length,e=w,o=x,a=r=0;ak((v-r)/(p=i+1))&&P("overflow"),r+=(s-e)*p,e=s,a=0;av&&P("overflow"),c==e){for(l=r,u=_;!(l<(h=u<=o?y:o+b<=u?b:u-o));u+=_)m=l-h,d=_-h,g.push(S(A(h+m%d,0))),l=k(m/d);g.push(S(A(l,0))),o=I(r,p,i==n),r=0,++i}++r,++e}return g.join("")}if(n={version:"1.3.2",ucs2:{decode:E,encode:C},decode:m,encode:g,toASCII:function(t){return d(t,function(t){return u.test(t)?"xn--"+g(t):t})},toUnicode:function(t){return d(t,function(t){return l.test(t)?m(t.slice(4).toLowerCase()):t})}},e&&r)if(O.exports==e)r.exports=n;else for(o in n)n.hasOwnProperty(o)&&(e[o]=n[o]);else t.punycode=n}(D)}),W={isString:function(t){return"string"==typeof t},isObject:function(t){return"object"==typeof t&&null!==t},isNull:function(t){return null===t},isNullOrUndefined:function(t){return null==t}};W.isString,W.isObject,W.isNull,W.isNullOrUndefined;var q=function(t,e,r,i){e=e||"&",r=r||"=";var n={};if("string"!=typeof t||0===t.length)return n;var o=/\+/g;t=t.split(e);var a=1e3;i&&"number"==typeof i.maxKeys&&(a=i.maxKeys);var s,l,u=t.length;0",'"',"`"," ","\r","\n","\t"]),at=["'"].concat(ot),st=["%","/","?",";","#"].concat(at),lt=["/","?","#"],ut=/^[+a-z0-9A-Z_-]{0,63}$/,ht=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,ct={javascript:!0,"javascript:":!0},ft={javascript:!0,"javascript:":!0},pt={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function dt(t,e,r){if(t&&W.isObject(t)&&t instanceof et)return t;var i=new et;return i.parse(t,e,r),i}et.prototype.parse=function(t,e,r){if(!W.isString(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var i=t.indexOf("?"),n=-1!==i&&i>16&255)/255,e[1]=(t>>8&255)/255,e[2]=(255&t)/255,e}function Ft(t){return t=t.toString(16),"#"+(t="000000".substr(0,6-t.length)+t)}function Lt(t){return"string"==typeof t&&"#"===t[0]&&(t=t.substr(1)),parseInt(t,16)}var jt=function(){for(var t=[],e=[],r=0;r<32;r++)e[t[r]=r]=r;t[G.BLEND_MODES.NORMAL_NPM]=G.BLEND_MODES.NORMAL,t[G.BLEND_MODES.ADD_NPM]=G.BLEND_MODES.ADD,t[G.BLEND_MODES.SCREEN_NPM]=G.BLEND_MODES.SCREEN,e[G.BLEND_MODES.NORMAL]=G.BLEND_MODES.NORMAL_NPM,e[G.BLEND_MODES.ADD]=G.BLEND_MODES.ADD_NPM,e[G.BLEND_MODES.SCREEN]=G.BLEND_MODES.SCREEN_NPM;var i=[];return i.push(e),i.push(t),i}();function Nt(t,e){return jt[e?1:0][t]}function Bt(t,e,r,i){return r=r||new Float32Array(4),i||void 0===i?(r[0]=t[0]*e,r[1]=t[1]*e,r[2]=t[2]*e):(r[0]=t[0],r[1]=t[1],r[2]=t[2]),r[3]=e,r}function Ut(t,e){if(1===e)return(255*e<<24)+t;if(0===e)return 0;var r=t>>16&255,i=t>>8&255,n=255&t;return(255*e<<24)+((r=r*e+.5|0)<<16)+((i=i*e+.5|0)<<8)+(n=n*e+.5|0)}function Xt(t,e,r,i){return(r=r||new Float32Array(4))[0]=(t>>16&255)/255,r[1]=(t>>8&255)/255,r[2]=(255&t)/255,(i||void 0===i)&&(r[0]*=e,r[1]*=e,r[2]*=e),r[3]=e,r}function Ht(t,e){void 0===e&&(e=null);var r=6*t;if((e=e||new Uint16Array(r)).length!==r)throw new Error("Out buffer length is incorrect, got "+e.length+" and expected "+r);for(var i=0,n=0;i>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,(t|=t>>>16)+1}function Zt(t){return!(t&t-1||!t)}function Jt(t){var e=(65535>>=e))<<3;return e|=r,e|=r=(15<(t>>>=r))<<2,(e|=r=(3<(t>>>=r))<<1)|(t>>>=r)>>1}var Kt={},Qt=Object.create(null),$t=Object.create(null);function te(t){var e,r,i,n=t.width,o=t.height,a=t.getContext("2d"),s=a.getImageData(0,0,n,o).data,l=s.length,u={top:null,left:null,right:null,bottom:null},h=null;for(e=0;e=this.x&&t=this.y&&e=this.x&&t<=this.x+this.width&&e>=this.y&&e<=this.y+this.height){if(e>=this.y+this.radius&&e<=this.y+this.height-this.radius||t>=this.x+this.radius&&t<=this.x+this.width-this.radius)return!0;var r=t-(this.x+this.radius),i=e-(this.y+this.radius),n=this.radius*this.radius;if(r*r+i*i<=n)return!0;if((r=t-(this.x+this.width-this.radius))*r+i*i<=n)return!0;if(r*r+(i=e-(this.y+this.height-this.radius))*i<=n)return!0;if((r=t-(this.x+this.radius))*r+i*i<=n)return!0}return!1},t}();T.SORTABLE_CHILDREN=!1;var Oe=function(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.rect=null};Oe.prototype.isEmpty=function(){return this.minX>this.maxX||this.minY>this.maxY},Oe.prototype.clear=function(){this.updateID++,this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0},Oe.prototype.getRectangle=function(t){return this.minX>this.maxX||this.minY>this.maxY?Pe.EMPTY:((t=t||new Pe(0,0,1,1)).x=this.minX,t.y=this.minY,t.width=this.maxX-this.minX,t.height=this.maxY-this.minY,t)},Oe.prototype.addPoint=function(t){this.minX=Math.min(this.minX,t.x),this.maxX=Math.max(this.maxX,t.x),this.minY=Math.min(this.minY,t.y),this.maxY=Math.max(this.maxY,t.y)},Oe.prototype.addQuad=function(t){var e=this.minX,r=this.minY,i=this.maxX,n=this.maxY,o=t[0],a=t[1];e=oi?t.maxX:i,this.maxY=t.maxY>n?t.maxY:n},Oe.prototype.addBoundsMask=function(t,e){var r=t.minX>e.minX?t.minX:e.minX,i=t.minY>e.minY?t.minY:e.minY,n=t.maxXe.x?t.minX:e.x,i=t.minY>e.y?t.minY:e.y,n=t.maxXr?this.maxX:r,this.minY=this.minYi?this.maxY:i};var Me=function(t){function n(){t.call(this),this.tempDisplayObjectParent=null,this.transform=new Se,this.alpha=1,this.visible=!0,this.renderable=!0,this.parent=null,this.worldAlpha=1,this._lastSortedIndex=0,this._zIndex=0,this.filterArea=null,this.filters=null,this._enabledFilters=null,this._bounds=new Oe,this._boundsID=0,this._lastBoundsID=-1,this._boundsRect=null,this._localBoundsRect=null,this._mask=null,this._destroyed=!1,this.isSprite=!1,this.isMask=!1}t&&(n.__proto__=t);var e={_tempDisplayObjectParent:{configurable:!0},x:{configurable:!0},y:{configurable:!0},worldTransform:{configurable:!0},localTransform:{configurable:!0},position:{configurable:!0},scale:{configurable:!0},pivot:{configurable:!0},skew:{configurable:!0},rotation:{configurable:!0},angle:{configurable:!0},zIndex:{configurable:!0},worldVisible:{configurable:!0},mask:{configurable:!0}};return((n.prototype=Object.create(t&&t.prototype)).constructor=n).mixin=function(t){for(var e=Object.keys(t),r=0;rthis.children.length)throw new Error(t+"addChildAt: The index "+e+" supplied is out of bounds "+this.children.length);return t.parent&&t.parent.removeChild(t),(t.parent=this).sortDirty=!0,t.transform._parentID=-1,this.children.splice(e,0,t),this._boundsID++,this.onChildrenChange(e),t.emit("added",this),this.emit("childAdded",t,this,e),t},t.prototype.swapChildren=function(t,e){if(t!==e){var r=this.getChildIndex(t),i=this.getChildIndex(e);this.children[r]=e,this.children[i]=t,this.onChildrenChange(r=this.children.length)throw new Error("The index "+e+" supplied is out of bounds "+this.children.length);var r=this.getChildIndex(t);Wt(this.children,r,1),this.children.splice(e,0,t),this.onChildrenChange(e)},t.prototype.getChildAt=function(t){if(t<0||t>=this.children.length)throw new Error("getChildAt: Index ("+t+") does not exist.");return this.children[t]},t.prototype.removeChild=function(t){var e=arguments,r=arguments.length;if(1 title : "+t.title+"
tabIndex: "+t.tabIndex},Fe.prototype.capHitArea=function(t){t.x<0&&(t.width+=t.x,t.x=0),t.y<0&&(t.height+=t.y,t.y=0),t.x+t.width>this.renderer.width&&(t.width=this.renderer.width-t.x),t.y+t.height>this.renderer.height&&(t.height=this.renderer.height-t.y)},Fe.prototype.addChild=function(t){var e=this.pool.pop();e||((e=document.createElement("button")).style.width="100px",e.style.height="100px",e.style.backgroundColor=this.debug?"rgba(255,255,255,0.5)":"transparent",e.style.position="absolute",e.style.zIndex=2,e.style.borderStyle="none",-1e.priority){t.connect(r);break}e=(r=e).next}t.previous||t.connect(r)}else t.connect(r);return this._startIfPossible(),this},e.prototype.remove=function(t,e){for(var r=this._head.next;r;)r=r.match(t,e)?r.destroy():r.next;return this._head.next||this._cancelIfNeeded(),this},e.prototype.start=function(){this.started||(this.started=!0,this._requestIfNeeded())},e.prototype.stop=function(){this.started&&(this.started=!1,this._cancelIfNeeded())},e.prototype.destroy=function(){if(!this._protected){this.stop();for(var t=this._head.next;t;)t=t.destroy(!0);this._head.destroy(),this._head=null}},e.prototype.update=function(t){var e;if(void 0===t&&(t=performance.now()),t>this.lastTime){if((e=this.elapsedMS=t-this.lastTime)>this._maxElapsedMS&&(e=this._maxElapsedMS),e*=this.speed,this._minElapsedMS){var r=t-this._lastFrame|0;if(r]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*>/i;var rr=function(h){function r(t,e){if(e=e||{},!(t instanceof HTMLVideoElement)){var r=document.createElement("video");r.setAttribute("preload","auto"),r.setAttribute("webkit-playsinline",""),r.setAttribute("playsinline",""),"string"==typeof t&&(t=[t]),h.crossOrigin(r,t[0].src||t[0],e.crossorigin);for(var i=0;ithis.baseTexture.width,a=r+n>this.baseTexture.height;if(o||a){var s=o&&a?"and":"or",l="X: "+e+" + "+i+" = "+(e+i)+" > "+this.baseTexture.width,u="Y: "+r+" + "+n+" = "+(r+n)+" > "+this.baseTexture.height;throw new Error("Texture Error: frame does not fit inside the base Texture dimensions: "+l+" "+s+" "+u)}this.valid=i&&n&&this.baseTexture.valid,this.trim||this.rotate||(this.orig=t),this.valid&&this.updateUvs()},t.rotate.get=function(){return this._rotate},t.rotate.set=function(t){this._rotate=t,this.valid&&this.updateUvs()},t.width.get=function(){return this.orig.width},t.height.get=function(){return this.orig.height},Object.defineProperties(s.prototype,t),s}(d);function pr(t){t.destroy=function(){},t.on=function(){},t.once=function(){},t.emit=function(){}}fr.EMPTY=new fr(new Ke),pr(fr.EMPTY),pr(fr.EMPTY.baseTexture),fr.WHITE=function(){var t=document.createElement("canvas");t.width=16,t.height=16;var e=t.getContext("2d");return e.fillStyle="white",e.fillRect(0,0,16,16),new fr(new Ke(new $e(t)))}(),pr(fr.WHITE),pr(fr.WHITE.baseTexture);var dr=function(s){function e(t,e){var r=null;if(!(t instanceof ur)){var i=arguments[1],n=arguments[2],o=arguments[3],a=arguments[4];console.warn("Please use RenderTexture.create("+i+", "+n+") instead of the ctor directly."),r=arguments[0],e=null,t=new ur({width:i,height:n,scaleMode:o,resolution:a})}s.call(this,t,e),this.legacyRenderer=r,this.valid=!0,this.filterFrame=null,this.filterPoolKey=null,this.updateUvs()}return s&&(e.__proto__=s),((e.prototype=Object.create(s&&s.prototype)).constructor=e).prototype.resize=function(t,e,r){void 0===r&&(r=!0),t=Math.ceil(t),e=Math.ceil(e),this.valid=0=G.ENV.WEBGL2&&(r=t.getContext("webgl2",e)),r)this.webGLVersion=2;else if(this.webGLVersion=1,!(r=t.getContext("webgl",e)||t.getContext("experimental-webgl",e)))throw new Error("This browser does not support WebGL. Try using the canvas renderer");return this.gl=r,this.getExtensions(),r},t.prototype.getExtensions=function(){var t=this.gl;1===this.webGLVersion?Object.assign(this.extensions,{drawBuffers:t.getExtension("WEBGL_draw_buffers"),depthTexture:t.getExtension("WEBKIT_WEBGL_depth_texture"),loseContext:t.getExtension("WEBGL_lose_context"),vertexArrayObject:t.getExtension("OES_vertex_array_object")||t.getExtension("MOZ_OES_vertex_array_object")||t.getExtension("WEBKIT_OES_vertex_array_object"),anisotropicFiltering:t.getExtension("EXT_texture_filter_anisotropic"),uint32ElementIndex:t.getExtension("OES_element_index_uint"),floatTexture:t.getExtension("OES_texture_float"),floatTextureLinear:t.getExtension("OES_texture_float_linear"),textureHalfFloat:t.getExtension("OES_texture_half_float"),textureHalfFloatLinear:t.getExtension("OES_texture_half_float_linear")}):2===this.webGLVersion&&Object.assign(this.extensions,{anisotropicFiltering:t.getExtension("EXT_texture_filter_anisotropic"),colorBufferFloat:t.getExtension("EXT_color_buffer_float"),floatTextureLinear:t.getExtension("OES_texture_float_linear")})},t.prototype.handleContextLost=function(t){t.preventDefault()},t.prototype.handleContextRestored=function(){this.renderer.runners.contextChange.run(this.gl)},t.prototype.destroy=function(){var t=this.renderer.view;t.removeEventListener("webglcontextlost",this.handleContextLost),t.removeEventListener("webglcontextrestored",this.handleContextRestored),this.gl.useProgram(null),this.extensions.loseContext&&this.extensions.loseContext.loseContext()},t.prototype.postrender=function(){this.renderer.renderingToScreen&&this.gl.flush()},t.prototype.validateContext=function(t){t.getContextAttributes().stencil||console.warn("Provided WebGL context does not have a stencil buffer, masks may not render correctly")},Object.defineProperties(t.prototype,r),t}(or),zr=function(e){function t(t){e.call(this,t),this.managedFramebuffers=[],this.unknownFramebuffer=new sr(10,10)}e&&(t.__proto__=e);var r={size:{configurable:!0}};return((t.prototype=Object.create(e&&e.prototype)).constructor=t).prototype.contextChange=function(){var t=this.gl=this.renderer.gl;if(this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.current=this.unknownFramebuffer,this.viewport=new Pe,this.hasMRT=!0,this.writeDepthTexture=!0,this.disposeAll(!0),1===this.renderer.context.webGLVersion){var e=this.renderer.context.extensions.drawBuffers,r=this.renderer.context.extensions.depthTexture;T.PREFER_ENV===G.ENV.WEBGL_LEGACY&&(r=e=null),e?t.drawBuffers=function(t){return e.drawBuffersWEBGL(t)}:(this.hasMRT=!1,t.drawBuffers=function(){}),r||(this.writeDepthTexture=!1)}},t.prototype.bind=function(t,e){var r=this.gl;if(t){var i=t.glFramebuffers[this.CONTEXT_UID]||this.initFramebuffer(t);this.current!==t&&(this.current=t,r.bindFramebuffer(r.FRAMEBUFFER,i.framebuffer)),i.dirtyId!==t.dirtyId&&(i.dirtyId=t.dirtyId,i.dirtyFormat!==t.dirtyFormat?(i.dirtyFormat=t.dirtyFormat,this.updateFramebuffer(t)):i.dirtySize!==t.dirtySize&&(i.dirtySize=t.dirtySize,this.resizeFramebuffer(t)));for(var n=0;n=i.data.byteLength)e.bufferSubData(o,0,i.data);else{var a=i.static?e.STATIC_DRAW:e.DYNAMIC_DRAW;n.byteLength=i.data.byteLength,e.bufferData(o,i.data,a)}}}},t.prototype.checkCompatibility=function(t,e){var r=t.attributes,i=e.attributeData;for(var n in i)if(!r[n])throw new Error('shader and geometry incompatible, geometry missing the "'+n+'" attribute')},t.prototype.getSignature=function(t,e){var r=t.attributes,i=e.attributeData,n=["g",t.id];for(var o in r)i[o]&&n.push(o);return n.join("-")},t.prototype.initGeometryVao=function(t,e){this.checkCompatibility(t,e);var r=this.gl,i=this.CONTEXT_UID,n=this.getSignature(t,e),o=t.glVertexArrayObjects[this.CONTEXT_UID],a=o[n];if(a)return o[e.id]=a;var s=t.buffers,l=t.attributes,u={},h={};for(var c in s)u[c]=0,h[c]=0;for(var f in l)!l[f].size&&e.attributeData[f]?l[f].size=e.attributeData[f].size:l[f].size||console.warn("PIXI Geometry attribute '"+f+"' size cannot be determined (likely the bound shader does not have the attribute)"),u[l[f].buffer]+=l[f].size*Lr[l[f].type];for(var p in l){var d=l[p],m=d.size;void 0===d.stride&&(u[d.buffer]===m*Lr[d.type]?d.stride=0:d.stride=u[d.buffer]),void 0===d.start&&(d.start=h[d.buffer],h[d.buffer]+=m*Lr[d.type])}a=r.createVertexArray(),r.bindVertexArray(a);for(var g=0;g=G.ENV.WEBGL2&&(t=e.getContext("webgl2",{})),t||((t=e.getContext("webgl",{})||e.getContext("experimental-webgl",{}))?t.getExtension("WEBGL_draw_buffers"):t=null),Gr=t}return Gr}function Yr(t,e,r){if("precision"===t.substring(0,9))return r!==G.PRECISION.HIGH&&"precision highp"===t.substring(0,15)?t.replace("precision highp","precision mediump"):t;var i=e;return e===G.PRECISION.HIGH&&r!==G.PRECISION.HIGH&&(i=G.PRECISION.MEDIUM),"precision "+i+" float;\n"+t}var Zr={float:1,vec2:2,vec3:3,vec4:4,int:1,ivec2:2,ivec3:3,ivec4:4,bool:1,bvec2:2,bvec3:3,bvec4:4,mat2:4,mat3:9,mat4:16,sampler2D:1};var Jr=null,Kr={FLOAT:"float",FLOAT_VEC2:"vec2",FLOAT_VEC3:"vec3",FLOAT_VEC4:"vec4",INT:"int",INT_VEC2:"ivec2",INT_VEC3:"ivec3",INT_VEC4:"ivec4",BOOL:"bool",BOOL_VEC2:"bvec2",BOOL_VEC3:"bvec3",BOOL_VEC4:"bvec4",FLOAT_MAT2:"mat2",FLOAT_MAT3:"mat3",FLOAT_MAT4:"mat4",SAMPLER_2D:"sampler2D",SAMPLER_CUBE:"samplerCube",SAMPLER_2D_ARRAY:"sampler2DArray"};function Qr(t,e){if(!Jr){var r=Object.keys(Kr);Jr={};for(var i=0;ie.name?1:-1});for(var h=0;h>=1,r++;this.stateId=t.data}for(var i=0;ithis.checkCountMax&&(this.checkCount=0,this.run())))},t.prototype.run=function(){for(var t=this.renderer.texture,e=t.managedTextures,r=!1,i=0;ithis.maxIdle&&(t.destroyTexture(n,!0),r=!(e[i]=null))}if(r){for(var o=0,a=0;athis.size&&this.flush(),this._vertexCount+=t.vertexData.length/2,this._indexCount+=t.indices.length,this._bufferedTextures[this._bufferSize]=t._texture.baseTexture,this._bufferedElements[this._bufferSize++]=t)},g.prototype.buildTexturesAndDrawCalls=function(){var t=this._bufferedTextures,e=this.MAX_TEXTURES,r=g._textureArrayPool,i=this.renderer.batch,n=this._tempBoundTextures,o=this.renderer.textureGC.count,a=++Ke._globalBatch,s=0,l=r[0],u=0;i.copyBoundTextures(n,e);for(var h=0;h=e&&(i.boundArray(l,n,a,e),this.buildDrawCalls(l,u,h),u=h,l=r[++s],++a),c._batchEnabled=a,c.touched=o,l.elements[l.count++]=c)}0this.maxSegments&&(r=this.maxSegments),r}},pn=function(){this.reset()};pn.prototype.clone=function(){var t=new pn;return t.color=this.color,t.alpha=this.alpha,t.texture=this.texture,t.matrix=this.matrix,t.visible=this.visible,t},pn.prototype.reset=function(){this.color=16777215,this.alpha=1,this.texture=fr.WHITE,this.matrix=null,this.visible=!1},pn.prototype.destroy=function(){this.texture=null,this.matrix=null};var dn={build:function(t){t.points=t.shape.points.slice()},triangulate:function(t,e){var r=t.points,i=t.holes,n=e.points,o=e.indices;if(6<=r.length){for(var a=[],s=0;s>16)+(65280&e)+((255&e)<<16),r);0>16&255)/255*n,o.tint[1]=(i>>8&255)/255*n,o.tint[2]=(255&i)/255*n,o.tint[3]=n,t.shader.bind(e),t.geometry.bind(r,e),t.state.set(this.state);for(var s=0,l=a.length;s>16)+(65280&n)+((255&n)<<16)}}},r.prototype.calculateVertices=function(){if(this._transformID!==this.transform._worldID){this._transformID=this.transform._worldID;for(var t=this.transform.worldTransform,e=t.a,r=t.b,i=t.c,n=t.d,o=t.tx,a=t.ty,s=this.geometry.points,l=this.vertexData,u=0,h=0;h=i&&jn.x=n&&jn.y>16)+(65280&t)+((255&t)<<16)},t.texture.get=function(){return this._texture},t.texture.set=function(t){this._texture!==t&&(this._texture&&this._texture.off("update",this._onTextureUpdate,this),this._texture=t||fr.EMPTY,this._cachedTint=16777215,this._textureID=-1,this._textureTrimmedID=-1,t&&(t.baseTexture.valid?this._onTextureUpdate():t.once("update",this._onTextureUpdate,this)))},Object.defineProperties(i.prototype,t),i}(Re),Un={LINEAR_VERTICAL:0,LINEAR_HORIZONTAL:1},Xn={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fillGradientType:Un.LINEAR_VERTICAL,fillGradientStops:[],fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",letterSpacing:0,lineHeight:0,lineJoin:"miter",miterLimit:10,padding:0,stroke:"black",strokeThickness:0,textBaseline:"alphabetic",trim:!1,whiteSpace:"pre",wordWrap:!1,wordWrapWidth:100,leading:0},Hn=["serif","sans-serif","monospace","cursive","fantasy","system-ui"],Wn=function(t){this.styleID=0,this.reset(),Yn(this,t,t)},qn={align:{configurable:!0},breakWords:{configurable:!0},dropShadow:{configurable:!0},dropShadowAlpha:{configurable:!0},dropShadowAngle:{configurable:!0},dropShadowBlur:{configurable:!0},dropShadowColor:{configurable:!0},dropShadowDistance:{configurable:!0},fill:{configurable:!0},fillGradientType:{configurable:!0},fillGradientStops:{configurable:!0},fontFamily:{configurable:!0},fontSize:{configurable:!0},fontStyle:{configurable:!0},fontVariant:{configurable:!0},fontWeight:{configurable:!0},letterSpacing:{configurable:!0},lineHeight:{configurable:!0},leading:{configurable:!0},lineJoin:{configurable:!0},miterLimit:{configurable:!0},padding:{configurable:!0},stroke:{configurable:!0},strokeThickness:{configurable:!0},textBaseline:{configurable:!0},trim:{configurable:!0},whiteSpace:{configurable:!0},wordWrap:{configurable:!0},wordWrapWidth:{configurable:!0}};function Gn(t){return"number"==typeof t?Ft(t):("string"==typeof t&&0===t.indexOf("0x")&&(t=t.replace("0x","#")),t)}function Vn(t){if(Array.isArray(t)){for(var e=0;e>2,n[1]=(3&i[0])<<4|i[1]>>4,n[2]=(15&i[1])<<2|i[2]>>6,n[3]=63&i[2],r-(t.length-1)){case 2:n[3]=64,n[2]=64;break;case 1:n[3]=64}for(var a=0;a=a.length&&a.push(this._generateOneMoreBuffer(t));var d=a[f];d.uploadDynamic(e,c,p);var m=t._bufferUpdateIDs[f]||0;(h=h||d._updateID=i&&Jo.x=n&&Jo.ys&&(Wt(i,1+f-++d,1+g-f),g=f,f=-1,n.push(p),h=Math.max(h,p),c++,r.x=0,r.y+=t.lineHeight,l=null))}else n.push(u),h=Math.max(h,u),++c,++d,r.x=0,r.y+=t.lineHeight,l=null}var b=o.charAt(o.length-1);"\r"!==b&&"\n"!==b&&(/(?:\s)/.test(b)&&(u=p),n.push(u),h=Math.max(h,u));for(var x=[],w=0;w<=c;w++){var T=0;"right"===this._font.align?T=h-n[w]:"center"===this._font.align&&(T=(h-n[w])/2),x.push(T)}for(var k=i.length,S=this.tint,P=0;P 0.0) {\n c.rgb /= c.a;\n }\n\n vec4 result;\n\n result.r = (m[0] * c.r);\n result.r += (m[1] * c.g);\n result.r += (m[2] * c.b);\n result.r += (m[3] * c.a);\n result.r += m[4];\n\n result.g = (m[5] * c.r);\n result.g += (m[6] * c.g);\n result.g += (m[7] * c.b);\n result.g += (m[8] * c.a);\n result.g += m[9];\n\n result.b = (m[10] * c.r);\n result.b += (m[11] * c.g);\n result.b += (m[12] * c.b);\n result.b += (m[13] * c.a);\n result.b += m[14];\n\n result.a = (m[15] * c.r);\n result.a += (m[16] * c.g);\n result.a += (m[17] * c.b);\n result.a += (m[18] * c.a);\n result.a += m[19];\n\n vec3 rgb = mix(c.rgb, result.rgb, uAlpha);\n\n // Premultiply alpha again.\n rgb *= result.a;\n\n gl_FragColor = vec4(rgb, result.a);\n}\n",t),this.alpha=1}e&&(t.__proto__=e);var r={matrix:{configurable:!0},alpha:{configurable:!0}};return((t.prototype=Object.create(e&&e.prototype)).constructor=t).prototype._loadMatrix=function(t,e){void 0===e&&(e=!1);var r=t;e&&(this._multiply(r,this.uniforms.m,t),r=this._colorMatrix(r)),this.uniforms.m=r},t.prototype._multiply=function(t,e,r){return t[0]=e[0]*r[0]+e[1]*r[5]+e[2]*r[10]+e[3]*r[15],t[1]=e[0]*r[1]+e[1]*r[6]+e[2]*r[11]+e[3]*r[16],t[2]=e[0]*r[2]+e[1]*r[7]+e[2]*r[12]+e[3]*r[17],t[3]=e[0]*r[3]+e[1]*r[8]+e[2]*r[13]+e[3]*r[18],t[4]=e[0]*r[4]+e[1]*r[9]+e[2]*r[14]+e[3]*r[19]+e[4],t[5]=e[5]*r[0]+e[6]*r[5]+e[7]*r[10]+e[8]*r[15],t[6]=e[5]*r[1]+e[6]*r[6]+e[7]*r[11]+e[8]*r[16],t[7]=e[5]*r[2]+e[6]*r[7]+e[7]*r[12]+e[8]*r[17],t[8]=e[5]*r[3]+e[6]*r[8]+e[7]*r[13]+e[8]*r[18],t[9]=e[5]*r[4]+e[6]*r[9]+e[7]*r[14]+e[8]*r[19]+e[9],t[10]=e[10]*r[0]+e[11]*r[5]+e[12]*r[10]+e[13]*r[15],t[11]=e[10]*r[1]+e[11]*r[6]+e[12]*r[11]+e[13]*r[16],t[12]=e[10]*r[2]+e[11]*r[7]+e[12]*r[12]+e[13]*r[17],t[13]=e[10]*r[3]+e[11]*r[8]+e[12]*r[13]+e[13]*r[18],t[14]=e[10]*r[4]+e[11]*r[9]+e[12]*r[14]+e[13]*r[19]+e[14],t[15]=e[15]*r[0]+e[16]*r[5]+e[17]*r[10]+e[18]*r[15],t[16]=e[15]*r[1]+e[16]*r[6]+e[17]*r[11]+e[18]*r[16],t[17]=e[15]*r[2]+e[16]*r[7]+e[17]*r[12]+e[18]*r[17],t[18]=e[15]*r[3]+e[16]*r[8]+e[17]*r[13]+e[18]*r[18],t[19]=e[15]*r[4]+e[16]*r[9]+e[17]*r[14]+e[18]*r[19]+e[19],t},t.prototype._colorMatrix=function(t){var e=new Float32Array(t);return e[4]/=255,e[9]/=255,e[14]/=255,e[19]/=255,e},t.prototype.brightness=function(t,e){var r=[t,0,0,0,0,0,t,0,0,0,0,0,t,0,0,0,0,0,1,0];this._loadMatrix(r,e)},t.prototype.greyscale=function(t,e){var r=[t,t,t,0,0,t,t,t,0,0,t,t,t,0,0,0,0,0,1,0];this._loadMatrix(r,e)},t.prototype.blackAndWhite=function(t){this._loadMatrix([.3,.6,.1,0,0,.3,.6,.1,0,0,.3,.6,.1,0,0,0,0,0,1,0],t)},t.prototype.hue=function(t,e){t=(t||0)/180*Math.PI;var r=Math.cos(t),i=Math.sin(t),n=(0,Math.sqrt)(1/3),o=[r+1/3*(1-r),1/3*(1-r)-n*i,1/3*(1-r)+n*i,0,0,1/3*(1-r)+n*i,r+1/3*(1-r),1/3*(1-r)-n*i,0,0,1/3*(1-r)-n*i,1/3*(1-r)+n*i,r+1/3*(1-r),0,0,0,0,0,1,0];this._loadMatrix(o,e)},t.prototype.contrast=function(t,e){var r=(t||0)+1,i=-.5*(r-1),n=[r,0,0,0,i,0,r,0,0,i,0,0,r,0,i,0,0,0,1,0];this._loadMatrix(n,e)},t.prototype.saturate=function(t,e){void 0===t&&(t=0);var r=2*t/3+1,i=-.5*(r-1),n=[r,i,i,0,0,i,r,i,0,0,i,i,r,0,0,0,0,0,1,0];this._loadMatrix(n,e)},t.prototype.desaturate=function(){this.saturate(-1)},t.prototype.negative=function(t){this._loadMatrix([-1,0,0,1,0,0,-1,0,1,0,0,0,-1,1,0,0,0,0,1,0],t)},t.prototype.sepia=function(t){this._loadMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0],t)},t.prototype.technicolor=function(t){this._loadMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0],t)},t.prototype.polaroid=function(t){this._loadMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0],t)},t.prototype.toBGR=function(t){this._loadMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0],t)},t.prototype.kodachrome=function(t){this._loadMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0],t)},t.prototype.browni=function(t){this._loadMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0],t)},t.prototype.vintage=function(t){this._loadMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0],t)},t.prototype.colorTone=function(t,e,r,i,n){var o=((r=r||16770432)>>16&255)/255,a=(r>>8&255)/255,s=(255&r)/255,l=((i=i||3375104)>>16&255)/255,u=(i>>8&255)/255,h=(255&i)/255,c=[.3,.59,.11,0,0,o,a,s,t=t||.2,0,l,u,h,e=e||.15,0,o-l,a-u,s-h,0,0];this._loadMatrix(c,n)},t.prototype.night=function(t,e){var r=[-2*(t=t||.1),-t,0,0,0,-t,0,t,0,0,0,t,2*t,0,0,0,0,0,1,0];this._loadMatrix(r,e)},t.prototype.predator=function(t,e){var r=[11.224130630493164*t,-4.794486999511719*t,-2.8746118545532227*t,0*t,.40342438220977783*t,-3.6330697536468506*t,9.193157196044922*t,-2.951810836791992*t,0*t,-1.316135048866272*t,-3.2184197902679443*t,-4.2375030517578125*t,7.476448059082031*t,0*t,.8044459223747253*t,0,0,0,1,0];this._loadMatrix(r,e)},t.prototype.lsd=function(t){this._loadMatrix([2,-.4,.5,0,0,-.5,2,-.4,0,0,-.4,-.5,3,0,0,0,0,0,1,0],t)},t.prototype.reset=function(){this._loadMatrix([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],!1)},r.matrix.get=function(){return this.uniforms.m},r.matrix.set=function(t){this.uniforms.m=t},r.alpha.get=function(){return this.uniforms.uAlpha},r.alpha.set=function(t){this.uniforms.uAlpha=t},Object.defineProperties(t.prototype,r),t}(pi);ua.prototype.grayscale=ua.prototype.greyscale;var ha=function(i){function t(t,e){var r=new ge;t.renderable=!1,i.call(this,"attribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\nuniform mat3 filterMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec2 vFilterCoord;\n\nuniform vec4 inputSize;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\n}\n\nvoid main(void)\n{\n\tgl_Position = filterVertexPosition();\n\tvTextureCoord = filterTextureCoord();\n\tvFilterCoord = ( filterMatrix * vec3( vTextureCoord, 1.0) ).xy;\n}\n","varying vec2 vFilterCoord;\nvarying vec2 vTextureCoord;\n\nuniform vec2 scale;\nuniform mat2 rotation;\nuniform sampler2D uSampler;\nuniform sampler2D mapSampler;\n\nuniform highp vec4 inputSize;\nuniform vec4 inputClamp;\n\nvoid main(void)\n{\n vec4 map = texture2D(mapSampler, vFilterCoord);\n\n map -= 0.5;\n map.xy = scale * inputSize.zw * (rotation * map.xy);\n\n gl_FragColor = texture2D(uSampler, clamp(vec2(vTextureCoord.x + map.x, vTextureCoord.y + map.y), inputClamp.xy, inputClamp.zw));\n}\n",{mapSampler:t._texture,filterMatrix:r,scale:{x:1,y:1},rotation:new Float32Array([1,0,0,1])}),this.maskSprite=t,this.maskMatrix=r,null==e&&(e=20),this.scale=new ce(e,e)}i&&(t.__proto__=i);var e={map:{configurable:!0}};return((t.prototype=Object.create(i&&i.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.filterMatrix=t.calculateSpriteMatrix(this.maskMatrix,this.maskSprite),this.uniforms.scale.x=this.scale.x,this.uniforms.scale.y=this.scale.y;var n=this.maskSprite.transform.worldTransform,o=Math.sqrt(n.a*n.a+n.b*n.b),a=Math.sqrt(n.c*n.c+n.d*n.d);0!==o&&0!==a&&(this.uniforms.rotation[0]=n.a/o,this.uniforms.rotation[1]=n.b/o,this.uniforms.rotation[2]=n.c/a,this.uniforms.rotation[3]=n.d/a),t.applyFilter(this,e,r,i)},e.map.get=function(){return this.uniforms.mapSampler},e.map.set=function(t){this.uniforms.mapSampler=t},Object.defineProperties(t.prototype,e),t}(pi),ca=function(t){function e(){t.call(this,"\nattribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 v_rgbNW;\nvarying vec2 v_rgbNE;\nvarying vec2 v_rgbSW;\nvarying vec2 v_rgbSE;\nvarying vec2 v_rgbM;\n\nvarying vec2 vFragCoord;\n\nuniform vec4 inputPixel;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvoid texcoords(vec2 fragCoord, vec2 inverseVP,\n out vec2 v_rgbNW, out vec2 v_rgbNE,\n out vec2 v_rgbSW, out vec2 v_rgbSE,\n out vec2 v_rgbM) {\n v_rgbNW = (fragCoord + vec2(-1.0, -1.0)) * inverseVP;\n v_rgbNE = (fragCoord + vec2(1.0, -1.0)) * inverseVP;\n v_rgbSW = (fragCoord + vec2(-1.0, 1.0)) * inverseVP;\n v_rgbSE = (fragCoord + vec2(1.0, 1.0)) * inverseVP;\n v_rgbM = vec2(fragCoord * inverseVP);\n}\n\nvoid main(void) {\n\n gl_Position = filterVertexPosition();\n\n vFragCoord = aVertexPosition * outputFrame.zw;\n\n texcoords(vFragCoord, inputPixel.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\n}\n",'varying vec2 v_rgbNW;\nvarying vec2 v_rgbNE;\nvarying vec2 v_rgbSW;\nvarying vec2 v_rgbSE;\nvarying vec2 v_rgbM;\n\nvarying vec2 vFragCoord;\nuniform sampler2D uSampler;\nuniform highp vec4 inputPixel;\n\n\n/**\n Basic FXAA implementation based on the code on geeks3d.com with the\n modification that the texture2DLod stuff was removed since it\'s\n unsupported by WebGL.\n\n --\n\n From:\n https://github.com/mitsuhiko/webgl-meincraft\n\n Copyright (c) 2011 by Armin Ronacher.\n\n Some rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are\n met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials provided\n with the distribution.\n\n * The names of the contributors may not be used to endorse or\n promote products derived from this software without specific\n prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n#ifndef FXAA_REDUCE_MIN\n#define FXAA_REDUCE_MIN (1.0/ 128.0)\n#endif\n#ifndef FXAA_REDUCE_MUL\n#define FXAA_REDUCE_MUL (1.0 / 8.0)\n#endif\n#ifndef FXAA_SPAN_MAX\n#define FXAA_SPAN_MAX 8.0\n#endif\n\n//optimized version for mobile, where dependent\n//texture reads can be a bottleneck\nvec4 fxaa(sampler2D tex, vec2 fragCoord, vec2 inverseVP,\n vec2 v_rgbNW, vec2 v_rgbNE,\n vec2 v_rgbSW, vec2 v_rgbSE,\n vec2 v_rgbM) {\n vec4 color;\n vec3 rgbNW = texture2D(tex, v_rgbNW).xyz;\n vec3 rgbNE = texture2D(tex, v_rgbNE).xyz;\n vec3 rgbSW = texture2D(tex, v_rgbSW).xyz;\n vec3 rgbSE = texture2D(tex, v_rgbSE).xyz;\n vec4 texColor = texture2D(tex, v_rgbM);\n vec3 rgbM = texColor.xyz;\n vec3 luma = vec3(0.299, 0.587, 0.114);\n float lumaNW = dot(rgbNW, luma);\n float lumaNE = dot(rgbNE, luma);\n float lumaSW = dot(rgbSW, luma);\n float lumaSE = dot(rgbSE, luma);\n float lumaM = dot(rgbM, luma);\n float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));\n float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));\n\n mediump vec2 dir;\n dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\n dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));\n\n float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) *\n (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);\n\n float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);\n dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),\n max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),\n dir * rcpDirMin)) * inverseVP;\n\n vec3 rgbA = 0.5 * (\n texture2D(tex, fragCoord * inverseVP + dir * (1.0 / 3.0 - 0.5)).xyz +\n texture2D(tex, fragCoord * inverseVP + dir * (2.0 / 3.0 - 0.5)).xyz);\n vec3 rgbB = rgbA * 0.5 + 0.25 * (\n texture2D(tex, fragCoord * inverseVP + dir * -0.5).xyz +\n texture2D(tex, fragCoord * inverseVP + dir * 0.5).xyz);\n\n float lumaB = dot(rgbB, luma);\n if ((lumaB < lumaMin) || (lumaB > lumaMax))\n color = vec4(rgbA, texColor.a);\n else\n color = vec4(rgbB, texColor.a);\n return color;\n}\n\nvoid main() {\n\n vec4 color;\n\n color = fxaa(uSampler, vFragCoord, inputPixel.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\n\n gl_FragColor = color;\n}\n')}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e}(pi),fa=function(r){function t(t,e){void 0===t&&(t=.5),void 0===e&&(e=Math.random()),r.call(this,ji,"precision highp float;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform float uNoise;\nuniform float uSeed;\nuniform sampler2D uSampler;\n\nfloat rand(vec2 co)\n{\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvoid main()\n{\n vec4 color = texture2D(uSampler, vTextureCoord);\n float randomValue = rand(gl_FragCoord.xy * uSeed);\n float diff = (randomValue - 0.5) * uNoise;\n\n // Un-premultiply alpha before applying the color matrix. See issue #3539.\n if (color.a > 0.0) {\n color.rgb /= color.a;\n }\n\n color.r += diff;\n color.g += diff;\n color.b += diff;\n\n // Premultiply alpha again.\n color.rgb *= color.a;\n\n gl_FragColor = color;\n}\n",{uNoise:0,uSeed:0}),this.noise=t,this.seed=e}r&&(t.__proto__=r),(t.prototype=Object.create(r&&r.prototype)).constructor=t;var e={noise:{configurable:!0},seed:{configurable:!0}};return e.noise.get=function(){return this.uniforms.uNoise},e.noise.set=function(t){this.uniforms.uNoise=t},e.seed.get=function(){return this.uniforms.uSeed},e.seed.set=function(t){this.uniforms.uSeed=t},Object.defineProperties(t.prototype,e),t}(pi),pa=new ge;Me.prototype._cacheAsBitmap=!1,Me.prototype._cacheData=!1;var da=function(){this.textureCacheId=null,this.originalRender=null,this.originalRenderCanvas=null,this.originalCalculateBounds=null,this.originalGetLocalBounds=null,this.originalUpdateTransform=null,this.originalHitTest=null,this.originalDestroy=null,this.originalMask=null,this.originalFilterArea=null,this.sprite=null};Object.defineProperties(Me.prototype,{cacheAsBitmap:{get:function(){return this._cacheAsBitmap},set:function(t){var e;this._cacheAsBitmap!==t&&((this._cacheAsBitmap=t)?(this._cacheData||(this._cacheData=new da),(e=this._cacheData).originalRender=this.render,e.originalRenderCanvas=this.renderCanvas,e.originalUpdateTransform=this.updateTransform,e.originalCalculateBounds=this.calculateBounds,e.originalGetLocalBounds=this.getLocalBounds,e.originalDestroy=this.destroy,e.originalContainsPoint=this.containsPoint,e.originalMask=this._mask,e.originalFilterArea=this.filterArea,this.render=this._renderCached,this.renderCanvas=this._renderCachedCanvas,this.destroy=this._cacheAsBitmapDestroy):((e=this._cacheData).sprite&&this._destroyCachedDisplayObject(),this.render=e.originalRender,this.renderCanvas=e.originalRenderCanvas,this.calculateBounds=e.originalCalculateBounds,this.getLocalBounds=e.originalGetLocalBounds,this.destroy=e.originalDestroy,this.updateTransform=e.originalUpdateTransform,this.containsPoint=e.originalContainsPoint,this._mask=e.originalMask,this.filterArea=e.originalFilterArea))}}}),Me.prototype._renderCached=function(t){!this.visible||this.worldAlpha<=0||!this.renderable||(this._initCachedDisplayObject(t),this._cacheData.sprite.transform._worldID=this.transform._worldID,this._cacheData.sprite.worldAlpha=this.worldAlpha,this._cacheData.sprite._render(t))},Me.prototype._initCachedDisplayObject=function(t){if(!this._cacheData||!this._cacheData.sprite){var e=this.alpha;this.alpha=1,t.batch.flush();var r=this.getLocalBounds().clone();if(this.filters){var i=this.filters[0].padding;r.pad(i)}r.ceil(T.RESOLUTION);var n=t.renderTexture.current,o=t.renderTexture.sourceFrame,a=t.projection.transform,s=dr.create(r.width,r.height),l="cacheAsBitmap_"+Gt();this._cacheData.textureCacheId=l,Ke.addToCache(s.baseTexture,l),fr.addToCache(s,l);var u=pa;u.tx=-r.x,u.ty=-r.y,this.transform.worldTransform.identity(),this.render=this._cacheData.originalRender,t.render(this,s,!0,u,!0),t.projection.transform=a,t.renderTexture.bind(n,o),this.render=this._renderCached,this.updateTransform=this.displayObjectUpdateTransform,this.calculateBounds=this._calculateCachedBounds,this.getLocalBounds=this._getCachedLocalBounds,this._mask=null,this.filterArea=null;var h=new Bn(s);h.transform.worldTransform=this.transform.worldTransform,h.anchor.x=-r.x/r.width,h.anchor.y=-r.y/r.height,h.alpha=e,h._bounds=this._bounds,this._cacheData.sprite=h,this.transform._parentID=-1,this.parent?this.updateTransform():(this.parent=t._tempDisplayObjectParent,this.updateTransform(),this.parent=null),this.containsPoint=h.containsPoint.bind(h)}},Me.prototype._renderCachedCanvas=function(t){!this.visible||this.worldAlpha<=0||!this.renderable||(this._initCachedDisplayObjectCanvas(t),this._cacheData.sprite.worldAlpha=this.worldAlpha,this._cacheData.sprite._renderCanvas(t))},Me.prototype._initCachedDisplayObjectCanvas=function(t){if(!this._cacheData||!this._cacheData.sprite){var e=this.getLocalBounds(),r=this.alpha;this.alpha=1;var i=t.context;e.ceil(T.RESOLUTION);var n=dr.create(e.width,e.height),o="cacheAsBitmap_"+Gt();this._cacheData.textureCacheId=o,Ke.addToCache(n.baseTexture,o),fr.addToCache(n,o);var a=pa;this.transform.localTransform.copyTo(a),a.invert(),a.tx-=e.x,a.ty-=e.y,this.renderCanvas=this._cacheData.originalRenderCanvas,t.render(this,n,!0,a,!1),t.context=i,this.renderCanvas=this._renderCachedCanvas,this.updateTransform=this.displayObjectUpdateTransform,this.calculateBounds=this._calculateCachedBounds,this.getLocalBounds=this._getCachedLocalBounds,this._mask=null,this.filterArea=null;var s=new Bn(n);s.transform.worldTransform=this.transform.worldTransform,s.anchor.x=-e.x/e.width,s.anchor.y=-e.y/e.height,s.alpha=r,s._bounds=this._bounds,this._cacheData.sprite=s,this.transform._parentID=-1,this.parent?this.updateTransform():(this.parent=t._tempDisplayObjectParent,this.updateTransform(),this.parent=null),this.containsPoint=s.containsPoint.bind(s)}},Me.prototype._calculateCachedBounds=function(){this._bounds.clear(),this._cacheData.sprite.transform._worldID=this.transform._worldID,this._cacheData.sprite._calculateBounds(),this._lastBoundsID=this._boundsID},Me.prototype._getCachedLocalBounds=function(){return this._cacheData.sprite.getLocalBounds()},Me.prototype._destroyCachedDisplayObject=function(){this._cacheData.sprite._texture.destroy(!0),this._cacheData.sprite=null,Ke.removeFromCache(this._cacheData.textureCacheId),fr.removeFromCache(this._cacheData.textureCacheId),this._cacheData.textureCacheId=null},Me.prototype._cacheAsBitmapDestroy=function(t){this.cacheAsBitmap=!1,this.destroy(t)},Me.prototype.name=null,Re.prototype.getChildByName=function(t){for(var e=0;e>16)+(65280&t)+((255&t)<<16),this._colorDirty=!0)},e.tint.get=function(){return this._tint},t.prototype.update=function(){if(this._colorDirty){this._colorDirty=!1;var t=this.texture.baseTexture;Xt(this._tint,this._alpha,this.uniforms.uColor,t.alphaMode)}this.uvMatrix.update()&&(this.uniforms.uTextureMatrix=this.uvMatrix.mapCoord)},Object.defineProperties(t.prototype,e),t}(ui),xa=function(a){function t(t,e,r){a.call(this);var i=new _r(t),n=new _r(e,!0),o=new _r(r,!0,!0);this.addAttribute("aVertexPosition",i,2,!1,G.TYPES.FLOAT).addAttribute("aTextureCoord",n,2,!1,G.TYPES.FLOAT).addIndex(o),this._updateId=-1}a&&(t.__proto__=a),(t.prototype=Object.create(a&&a.prototype)).constructor=t;var e={vertexDirtyId:{configurable:!0}};return e.vertexDirtyId.get=function(){return this.buffers[0]._updateID},Object.defineProperties(t.prototype,e),t}(kr),wa=function(n){function t(t,e,r,i){void 0===t&&(t=100),void 0===e&&(e=100),void 0===r&&(r=10),void 0===i&&(i=10),n.call(this),this.segWidth=r,this.segHeight=i,this.width=t,this.height=e,this.build()}return n&&(t.__proto__=n),((t.prototype=Object.create(n&&n.prototype)).constructor=t).prototype.build=function(){for(var t=this.segWidth*this.segHeight,e=[],r=[],i=[],n=this.segWidth-1,o=this.segHeight-1,a=this.width/n,s=this.height/o,l=0;le?1:this._height/e;t[9]=t[11]=t[13]=t[15]=this._topHeight*r,t[17]=t[19]=t[21]=t[23]=this._height-this._bottomHeight*r,t[25]=t[27]=t[29]=t[31]=this._height},t.prototype.updateVerticalVertices=function(){var t=this.vertices,e=this._leftWidth+this._rightWidth,r=this._width>e?1:this._width/e;t[2]=t[10]=t[18]=t[26]=this._leftWidth*r,t[4]=t[12]=t[20]=t[28]=this._width-this._rightWidth*r,t[6]=t[14]=t[22]=t[30]=this._width},e.width.get=function(){return this._width},e.width.set=function(t){this._width=t,this._refresh()},e.height.get=function(){return this._height},e.height.set=function(t){this._height=t,this._refresh()},e.leftWidth.get=function(){return this._leftWidth},e.leftWidth.set=function(t){this._leftWidth=t,this._refresh()},e.rightWidth.get=function(){return this._rightWidth},e.rightWidth.set=function(t){this._rightWidth=t,this._refresh()},e.topHeight.get=function(){return this._topHeight},e.topHeight.set=function(t){this._topHeight=t,this._refresh()},e.bottomHeight.get=function(){return this._bottomHeight},e.bottomHeight.set=function(t){this._bottomHeight=t,this._refresh()},t.prototype._refresh=function(){var t=this.texture,e=this.geometry.buffers[1].data;this._origWidth=t.orig.width,this._origHeight=t.orig.height;var r=1/this._origWidth,i=1/this._origHeight;e[0]=e[8]=e[16]=e[24]=0,e[1]=e[3]=e[5]=e[7]=0,e[6]=e[14]=e[22]=e[30]=1,e[25]=e[27]=e[29]=e[31]=1,e[2]=e[10]=e[18]=e[26]=r*this._leftWidth,e[4]=e[12]=e[20]=e[28]=1-r*this._rightWidth,e[9]=e[11]=e[13]=e[15]=i*this._topHeight,e[17]=e[19]=e[21]=e[23]=1-i*this._bottomHeight,this.updateHorizontalVertices(),this.updateVerticalVertices(),this.geometry.buffers[0].update(),this.geometry.buffers[1].update()},Object.defineProperties(t.prototype,e),t}(Sa),Ca=function(r){function i(t,e){r.call(this,t[0]instanceof fr?t[0]:t[0].texture),this._textures=null,this._durations=null,this.textures=t,this._autoUpdate=!1!==e,this.animationSpeed=1,this.loop=!0,this.updateAnchor=!1,this.onComplete=null,this.onFrameChange=null,this.onLoop=null,this._currentTime=0,this.playing=!1}r&&(i.__proto__=r);var t={totalFrames:{configurable:!0},textures:{configurable:!0},currentFrame:{configurable:!0}};return((i.prototype=Object.create(r&&r.prototype)).constructor=i).prototype.stop=function(){this.playing&&(this.playing=!1,this._autoUpdate&&Ue.shared.remove(this.update,this))},i.prototype.play=function(){this.playing||(this.playing=!0,this._autoUpdate&&Ue.shared.add(this.update,this,G.UPDATE_PRIORITY.HIGH))},i.prototype.gotoAndStop=function(t){this.stop();var e=this.currentFrame;this._currentTime=t,e!==this.currentFrame&&this.updateTexture()},i.prototype.gotoAndPlay=function(t){var e=this.currentFrame;this._currentTime=t,e!==this.currentFrame&&this.updateTexture(),this.play()},i.prototype.update=function(t){var e=this.animationSpeed*t,r=this.currentFrame;if(null!==this._durations){var i=this._currentTime%1*this._durations[this.currentFrame];for(i+=e/60*1e3;i<0;)this._currentTime--,i+=this._durations[this.currentFrame];var n=Math.sign(this.animationSpeed*t);for(this._currentTime=Math.floor(this._currentTime);i>=this._durations[this.currentFrame];)i-=this._durations[this.currentFrame]*n,this._currentTime+=n;this._currentTime+=i/this._durations[this.currentFrame]}else this._currentTime+=e;this._currentTime<0&&!this.loop?(this.gotoAndStop(0),this.onComplete&&this.onComplete()):this._currentTime>=this._textures.length&&!this.loop?(this.gotoAndStop(this._textures.length-1),this.onComplete&&this.onComplete()):r!==this.currentFrame&&(this.loop&&this.onLoop&&(0r&&this.onLoop()),this.updateTexture())},i.prototype.updateTexture=function(){this._texture=this._textures[this.currentFrame],this._textureID=-1,this._textureTrimmedID=-1,this._cachedTint=16777215,this.uvs=this._texture._uvs.uvsFloat32,this.updateAnchor&&this._anchor.copyFrom(this._texture.defaultAnchor),this.onFrameChange&&this.onFrameChange(this.currentFrame)},i.prototype.destroy=function(t){this.stop(),r.prototype.destroy.call(this,t),this.onComplete=null,this.onFrameChange=null,this.onLoop=null},i.fromFrames=function(t){for(var e=[],r=0;r 0) var gc = undefined");else{if(!ba&&!ca)throw"Unknown runtime environment. Where are we?";e.read=function(t){var e=new XMLHttpRequest;return e.open("GET",t,!1),e.send(null),e.responseText},"undefined"!=typeof arguments&&(e.arguments=arguments),"undefined"!=typeof console?(e.print||(e.print=function(t){console.log(t)}),e.printErr||(e.printErr=function(t){console.log(t)})):e.print||(e.print=function(){}),ca&&(e.load=importScripts),void 0===e.setWindowTitle&&(e.setWindowTitle=function(t){document.title=t})}function ha(t){eval.call(null,t)}for(k in!e.load&&e.read&&(e.load=function(t){ha(e.read(t))}),e.print||(e.print=function(){}),e.printErr||(e.printErr=e.print),e.arguments||(e.arguments=[]),e.thisProgram||(e.thisProgram="./this.program"),e.print=e.print,e.W=e.printErr,e.preRun=[],e.postRun=[],aa)aa.hasOwnProperty(k)&&(e[k]=aa[k]);var n={rb:function(t){ka=t},fb:function(){return ka},ua:function(){return m},ba:function(t){m=t},Ka:function(t){switch(t){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:return"*"===t[t.length-1]?n.J:"i"===t[0]?(assert(0==(t=parseInt(t.substr(1)))%8),t/8):0}},eb:function(t){return Math.max(n.Ka(t),n.J)},ud:16,Qd:function(t,e){return"double"===e||"i64"===e?7&t&&(assert(4==(7&t)),t+=4):assert(0==(3&t)),t},Ed:function(t,e,r){return r||"i64"!=t&&"double"!=t?t?Math.min(e||(t?n.eb(t):0),n.J):Math.min(e,8):8},L:function(t,r,i){return i&&i.length?(i.splice||(i=Array.prototype.slice.call(i)),i.splice(0,0,r),e["dynCall_"+t].apply(null,i)):e["dynCall_"+t].call(null,r)},Z:[],Xa:function(t){for(var e=0;e>>0)+4294967296*+(e>>>0):+(t>>>0)+4294967296*+(0|e)},Ua:8,J:4,vd:0};e.Runtime=n,n.addFunction=n.Xa,n.removeFunction=n.nb;var na=!1,oa,pa,ka,ra,sa;function assert(t,e){t||x("Assertion failed: "+e)}function qa(a){var b=e["_"+a];if(!b)try{b=eval("_"+a)}catch(t){}return assert(b,"Cannot call unknown function "+a+" (perhaps LLVM optimizations or closure removed it?)"),b}function wa(t,e,r){switch("*"===(r=r||"i8").charAt(r.length-1)&&(r="i32"),r){case"i1":case"i8":y[t>>0]=e;break;case"i16":z[t>>1]=e;break;case"i32":C[t>>2]=e;break;case"i64":pa=[e>>>0,(oa=e,1<=+xa(oa)?0>>0:~~+Aa((oa-+(~~oa>>>0))/4294967296)>>>0:0)],C[t>>2]=pa[0],C[t+4>>2]=pa[1];break;case"float":Ba[t>>2]=e;break;case"double":Ca[t>>3]=e;break;default:x("invalid type for setValue: "+r)}}function Da(t,e){switch("*"===(e=e||"i8").charAt(e.length-1)&&(e="i32"),e){case"i1":case"i8":return y[t>>0];case"i16":return z[t>>1];case"i32":case"i64":return C[t>>2];case"float":return Ba[t>>2];case"double":return Ca[t>>3];default:x("invalid type for setValue: "+e)}return null}function D(t,e,r,i){var o,a;a="number"==typeof t?(o=!0,t):(o=!1,t.length);var s,l,u="string"==typeof e?e:null;if(r=4==r?i:[Ea,n.aa,n.Ra,n.R][void 0===r?2:r](Math.max(a,u?1:e.length)),o){for(assert(0==(3&(i=r))),t=r+(-4&a);i>2]=0;for(t=r+a;i>0]=0;return r}if("i8"===u)return t.subarray||t.slice?E.set(t,r):E.set(new Uint8Array(t),r),r;for(i=0;i>0],0!=i||r)&&(o++,!r||o!=r););if(r||(r=o),i="",n<128){for(;0>10,56320|1023&r)))):s+=String.fromCharCode(r)}}function Ka(t,e,r,i){if(!(0>6}else{if(a<=65535){if(i<=r+2)break;e[r++]=224|a>>12}else{if(a<=2097151){if(i<=r+3)break;e[r++]=240|a>>18}else{if(a<=67108863){if(i<=r+4)break;e[r++]=248|a>>24}else{if(i<=r+5)break;e[r++]=252|a>>30,e[r++]=128|a>>24&63}e[r++]=128|a>>18&63}e[r++]=128|a>>12&63}e[r++]=128|a>>6&63}e[r++]=128|63&a}}return e[r]=0,r-n}function La(t){for(var e=0,r=0;r"):o=n;t:for(;c>0];if(!r)return e;e+=String.fromCharCode(r)}},e.stringToAscii=function(t,e){return Ia(t,e,!1)},e.UTF8ArrayToString=Ja,e.UTF8ToString=function(t){return Ja(E,t)},e.stringToUTF8Array=Ka,e.stringToUTF8=function(t,e,r){return Ka(t,E,e,r)},e.lengthBytesUTF8=La,e.UTF16ToString=function(t){for(var e=0,r="";;){var i=z[t+2*e>>1];if(0==i)return r;++e,r+=String.fromCharCode(i)}},e.stringToUTF16=function(t,e,r){if(void 0===r&&(r=2147483647),r<2)return 0;var i=e;r=(r-=2)<2*t.length?r/2:t.length;for(var n=0;n>1]=t.charCodeAt(n),e+=2;return z[e>>1]=0,e-i},e.lengthBytesUTF16=function(t){return 2*t.length},e.UTF32ToString=function(t){for(var e=0,r="";;){var i=C[t+4*e>>2];if(0==i)return r;++e,65536<=i?(i-=65536,r+=String.fromCharCode(55296|i>>10,56320|1023&i)):r+=String.fromCharCode(i)}},e.stringToUTF32=function(t,e,r){if(void 0===r&&(r=2147483647),r<4)return 0;var i=e;r=i+r-4;for(var n=0;n>2]=o,r<(e+=4)+4)break}return C[e>>2]=0,e-i},e.lengthBytesUTF32=function(t){for(var e=0,r=0;r>0]=t[r],r+=1}function ta(t,e){for(var r=0;r>0]=t[r]}function Ia(t,e,r){for(var i=0;i>0]=t.charCodeAt(i);r||(y[e>>0]=0)}e.addOnPreRun=fb,e.addOnInit=function(t){cb.unshift(t)},e.addOnPreMain=function(t){db.unshift(t)},e.addOnExit=function(t){H.unshift(t)},e.addOnPostRun=gb,e.intArrayFromString=hb,e.intArrayToString=function(t){for(var e=[],r=0;r>>16)*i+r*(e>>>16)<<16)|0}),Math.Jd=Math.imul,Math.clz32||(Math.clz32=function(t){t>>>=0;for(var e=0;e<32;e++)if(t&1<<31-e)return e;return 32}),Math.Ad=Math.clz32;var xa=Math.abs,Aa=Math.ceil,za=Math.floor,ya=Math.min,I=0,ib=null,jb=null;function kb(){I++,e.monitorRunDependencies&&e.monitorRunDependencies(I)}function lb(){if(I--,e.monitorRunDependencies&&e.monitorRunDependencies(I),0==I&&(null!==ib&&(clearInterval(ib),ib=null),jb)){var t=jb;jb=null,t()}}e.addRunDependency=kb,e.removeRunDependency=lb,e.preloadedImages={},e.preloadedAudios={},Ta=8,la=Ta+5888,cb.push(),D([124,0,0,0,98,7,0,0,124,0,0,0,111,7,0,0,164,0,0,0,124,7,0,0,16,0,0,0,0,0,0,0,164,0,0,0,157,7,0,0,24,0,0,0,0,0,0,0,164,0,0,0,227,7,0,0,24,0,0,0,0,0,0,0,164,0,0,0,191,7,0,0,56,0,0,0,0,0,0,0,164,0,0,0,5,8,0,0,40,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,40,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,88,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,4,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,114,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,0,0,236,1,0,0,236,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,4,0,0,0,239,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,231,16,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,115,40,37,117,41,58,32,65,115,115,101,114,116,105,111,110,32,102,97,105,108,117,114,101,58,32,34,37,115,34,10,0,109,95,115,105,122,101,32,60,61,32,109,95,99,97,112,97,99,105,116,121,0,46,47,99,114,110,95,100,101,99,111,109,112,46,104,0,109,105,110,95,110,101,119,95,99,97,112,97,99,105,116,121,32,60,32,40,48,120,55,70,70,70,48,48,48,48,85,32,47,32,101,108,101,109,101,110,116,95,115,105,122,101,41,0,110,101,119,95,99,97,112,97,99,105,116,121,32,38,38,32,40,110,101,119,95,99,97,112,97,99,105,116,121,32,62,32,109,95,99,97,112,97,99,105,116,121,41,0,110,117,109,95,99,111,100,101,115,91,99,93,0,115,111,114,116,101,100,95,112,111,115,32,60,32,116,111,116,97,108,95,117,115,101,100,95,115,121,109,115,0,112,67,111,100,101,115,105,122,101,115,91,115,121,109,95,105,110,100,101,120,93,32,61,61,32,99,111,100,101,115,105,122,101,0,116,32,60,32,40,49,85,32,60,60,32,116,97,98,108,101,95,98,105,116,115,41,0,109,95,108,111,111,107,117,112,91,116,93,32,61,61,32,99,85,73,78,84,51,50,95,77,65,88,0,99,114,110,100,95,109,97,108,108,111,99,58,32,115,105,122,101,32,116,111,111,32,98,105,103,0,99,114,110,100,95,109,97,108,108,111,99,58,32,111,117,116,32,111,102,32,109,101,109,111,114,121,0,40,40,117,105,110,116,51,50,41,112,95,110,101,119,32,38,32,40,67,82,78,68,95,77,73,78,95,65,76,76,79,67,95,65,76,73,71,78,77,69,78,84,32,45,32,49,41,41,32,61,61,32,48,0,99,114,110,100,95,114,101,97,108,108,111,99,58,32,98,97,100,32,112,116,114,0,99,114,110,100,95,102,114,101,101,58,32,98,97,100,32,112,116,114,0,102,97,108,115,101,0,40,116,111,116,97,108,95,115,121,109,115,32,62,61,32,49,41,32,38,38,32,40,116,111,116,97,108,95,115,121,109,115,32,60,61,32,112,114,101,102,105,120,95,99,111,100,105,110,103,58,58,99,77,97,120,83,117,112,112,111,114,116,101,100,83,121,109,115,41,0,17,18,19,20,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15,16,48,0,110,117,109,95,98,105,116,115,32,60,61,32,51,50,85,0,109,95,98,105,116,95,99,111,117,110,116,32,60,61,32,99,66,105,116,66,117,102,83,105,122,101,0,116,32,33,61,32,99,85,73,78,84,51,50,95,77,65,88,0,109,111,100,101,108,46,109,95,99,111,100,101,95,115,105,122,101,115,91,115,121,109,93,32,61,61,32,108,101,110,0,0,2,3,1,0,2,3,4,5,6,7,1,40,108,101,110,32,62,61,32,49,41,32,38,38,32,40,108,101,110,32,60,61,32,99,77,97,120,69,120,112,101,99,116,101,100,67,111,100,101,83,105,122,101,41,0,105,32,60,32,109,95,115,105,122,101,0,110,101,120,116,95,108,101,118,101,108,95,111,102,115,32,62,32,99,117,114,95,108,101,118,101,108,95,111,102,115,0,1,2,2,3,3,3,3,4,0,0,0,0,0,0,1,1,0,1,0,1,0,0,1,2,1,2,0,0,0,1,0,2,1,0,2,0,0,1,2,3,110,117,109,32,38,38,32,40,110,117,109,32,61,61,32,126,110,117,109,95,99,104,101,99,107,41,0,83,116,57,101,120,99,101,112,116,105,111,110,0,83,116,57,116,121,112,101,95,105,110,102,111,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,57,95,95,112,111,105,110,116,101,114,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,112,98,97,115,101,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,112,116,104,114,101,97,100,95,111,110,99,101,32,102,97,105,108,117,114,101,32,105,110,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,95,102,97,115,116,40,41,0,116,101,114,109,105,110,97,116,101,95,104,97,110,100,108,101,114,32,117,110,101,120,112,101,99,116,101,100,108,121,32,114,101,116,117,114,110,101,100,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,112,116,104,114,101,97,100,32,107,101,121,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,99,97,110,110,111,116,32,122,101,114,111,32,111,117,116,32,116,104,114,101,97,100,32,118,97,108,117,101,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,58,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,102,111,114,101,105,103,110,32,101,120,99,101,112,116,105,111,110,0,116,101,114,109,105,110,97,116,105,110,103,0,117,110,99,97,117,103,104,116,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,46,0],"i8",4,n.Ua);var mb=n.ja(D(12,"i8",2),8);function ob(t){return e.___errno_location&&(C[e.___errno_location()>>2]=t),t}assert(0==mb%8),e._i64Subtract=nb;var J={I:1,F:2,ed:3,bc:4,H:5,Aa:6,vb:7,zc:8,ea:9,Jb:10,va:11,qd:11,Ta:12,da:13,Vb:14,Lc:15,fa:16,wa:17,rd:18,ha:19,ya:20,P:21,q:22,uc:23,Sa:24,Q:25,nd:26,Wb:27,Hc:28,ia:29,bd:30,nc:31,Vc:32,Sb:33,Zc:34,Dc:42,Zb:43,Kb:44,ec:45,fc:46,gc:47,mc:48,od:49,xc:50,dc:51,Pb:35,Ac:37,Bb:52,Eb:53,sd:54,vc:55,Fb:56,Gb:57,Qb:35,Hb:59,Jc:60,yc:61,kd:62,Ic:63,Ec:64,Fc:65,ad:66,Bc:67,yb:68,gd:69,Lb:70,Wc:71,pc:72,Tb:73,Db:74,Qc:76,Cb:77,$c:78,hc:79,ic:80,lc:81,kc:82,jc:83,Kc:38,za:39,qc:36,ga:40,Rc:95,Uc:96,Ob:104,wc:105,zb:97,Yc:91,Oc:88,Gc:92,cd:108,Nb:111,wb:98,Mb:103,tc:101,rc:100,ld:110,Xb:112,Yb:113,ac:115,Ab:114,Rb:89,oc:90,Xc:93,dd:94,xb:99,sc:102,cc:106,Mc:107,md:109,pd:87,Ub:122,hd:116,Pc:95,Cc:123,$b:84,Sc:75,Ib:125,Nc:131,Tc:130,jd:86};function pb(t,e){H.push(function(){n.L("vi",t,[e])}),pb.level=H.length}function tb(){return!!tb.p}e._memset=qb,e._bitshift64Lshr=rb,e._bitshift64Shl=sb;var ub=[],vb={};function wb(t,e){wb.p||(wb.p={}),t in wb.p||(n.L("v",e),wb.p[t]=1)}var xb={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};function yb(t,e){for(var r=0,i=t.length-1;0<=i;i--){var n=t[i];"."===n?t.splice(i,1):".."===n?(t.splice(i,1),r++):r&&(t.splice(i,1),r--)}if(e)for(;r--;r)t.unshift("..");return t}function zb(t){var e="/"===t.charAt(0),r="/"===t.substr(-1);return(t=yb(t.split("/").filter(function(t){return!!t}),!e).join("/"))||e||(t="."),t&&r&&(t+="/"),(e?"/":"")+t}function Ab(t){var e=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(t).slice(1);return t=e[0],e=e[1],t||e?(e&&(e=e.substr(0,e.length-1)),t+e):"."}function Bb(t){if("/"===t)return"/";var e=t.lastIndexOf("/");return-1===e?t:t.substr(e+1)}function Cb(){return zb(Array.prototype.slice.call(arguments,0).join("/"))}function K(t,e){return zb(t+"/"+e)}function Db(){for(var t="",e=!1,r=arguments.length-1;-1<=r&&!e;r--){if("string"!=typeof(e=0<=r?arguments[r]:"/"))throw new TypeError("Arguments to path.resolve must be strings");if(!e)return"";t=e+"/"+t,e="/"===e.charAt(0)}return(e?"/":"")+(t=yb(t.split("/").filter(function(t){return!!t}),!e).join("/"))||"."}var Eb=[];function Fb(t,e){Eb[t]={input:[],output:[],N:e},Gb(t,Hb)}var Hb={open:function(t){var e=Eb[t.g.rdev];if(!e)throw new L(J.ha);t.tty=e,t.seekable=!1},close:function(t){t.tty.N.flush(t.tty)},flush:function(t){t.tty.N.flush(t.tty)},read:function(t,e,r,i){if(!t.tty||!t.tty.N.La)throw new L(J.Aa);for(var n=0,o=0;ot.e.length&&(t.e=M.cb(t),t.o=t.e.length),!t.e||t.e.subarray){var r=t.e?t.e.buffer.byteLength:0;e<=r||(e=Math.max(e,r*(r<1048576?2:1.125)|0),0!=r&&(e=Math.max(e,256)),r=t.e,t.e=new Uint8Array(e),0e)t.e.length=e;else for(;t.e.length=t.g.o)return 0;if(assert(0<=(t=Math.min(t.g.o-n,i))),8>1)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}return e.mode},B:function(t){for(var e=[];t.parent!==t;)e.push(t.name),t=t.parent;return e.push(t.A.pa.root),e.reverse(),Cb.apply(null,e)},Ha:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},$a:function(t){if((t&=-32769)in P.Ha)return P.Ha[t];throw new L(J.q)},k:{D:function(t){var e;t=P.B(t);try{e=fs.lstatSync(t)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}return P.$&&!e.K&&(e.K=4096),P.$&&!e.blocks&&(e.blocks=(e.size+e.K-1)/e.K|0),{dev:e.dev,ino:e.ino,mode:e.mode,nlink:e.nlink,uid:e.uid,gid:e.gid,rdev:e.rdev,size:e.size,atime:e.atime,mtime:e.mtime,ctime:e.ctime,K:e.K,blocks:e.blocks}},u:function(t,e){var r=P.B(t);try{void 0!==e.mode&&(fs.chmodSync(r,e.mode),t.mode=e.mode),void 0!==e.size&&fs.truncateSync(r,e.size)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}},lookup:function(t,e){var r=K(P.B(t),e);r=P.Ja(r);return P.createNode(t,e,r)},T:function(t,e,r,i){t=P.createNode(t,e,r,i),e=P.B(t);try{N(t.mode)?fs.mkdirSync(e,t.mode):fs.writeFileSync(e,"",{mode:t.mode})}catch(t){if(!t.code)throw t;throw new L(J[t.code])}return t},rename:function(t,e,r){t=P.B(t),e=K(P.B(e),r);try{fs.renameSync(t,e)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}},unlink:function(t,e){var r=K(P.B(t),e);try{fs.unlinkSync(r)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}},rmdir:function(t,e){var r=K(P.B(t),e);try{fs.rmdirSync(r)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}},readdir:function(t){t=P.B(t);try{return fs.readdirSync(t)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}},symlink:function(t,e,r){t=K(P.B(t),e);try{fs.symlinkSync(r,t)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}},readlink:function(t){var e=P.B(t);try{return e=fs.readlinkSync(e),e=Ob.relative(Ob.resolve(t.A.pa.root),e)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}}},n:{open:function(t){var e=P.B(t.g);try{32768==(61440&t.g.mode)&&(t.V=fs.openSync(e,P.$a(t.flags)))}catch(t){if(!t.code)throw t;throw new L(J[t.code])}},close:function(t){try{32768==(61440&t.g.mode)&&t.V&&fs.closeSync(t.V)}catch(t){if(!t.code)throw t;throw new L(J[t.code])}},read:function(t,e,r,i,n){if(0===i)return 0;var o,a=new Buffer(i);try{o=fs.readSync(t.V,a,0,i,n)}catch(t){throw new L(J[t.code])}if(0>>0)%Q.length}function Xb(t){var e=Wb(t.parent.id,t.name);t.M=Q[e],Q[e]=t}function Nb(t,e){var r;if(r=(r=Yb(t,"x"))?r:t.k.lookup?0:J.da)throw new L(r,t);for(r=Q[Wb(t.id,e)];r;r=r.M){var i=r.name;if(r.parent.id===t.id&&i===e)return r}return t.k.lookup(t,e)}function Lb(t,e,r,i){return Zb||((Zb=function(t,e,r,i){t||(t=this),this.parent=t,this.A=t.A,this.U=null,this.id=Sb++,this.name=e,this.mode=r,this.k={},this.n={},this.rdev=i}).prototype={},Object.defineProperties(Zb.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(t){t?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(t){t?this.mode|=146:this.mode&=-147}},kb:{get:function(){return N(this.mode)}},jb:{get:function(){return 8192==(61440&this.mode)}}})),Xb(t=new Zb(t,e,r,i)),t}function N(t){return 16384==(61440&t)}var $b={r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218};function Yb(t,e){return Tb?0:(-1===e.indexOf("r")||292&t.mode)&&(-1===e.indexOf("w")||146&t.mode)&&(-1===e.indexOf("x")||73&t.mode)?0:J.da}function ac(t,e){try{return Nb(t,e),J.wa}catch(t){}return Yb(t,"wx")}function bc(){for(var t=0;t<=4096;t++)if(!Rb[t])return t;throw new L(J.Sa)}function cc(t){dc||((dc=function(){}).prototype={},Object.defineProperties(dc.prototype,{object:{get:function(){return this.g},set:function(t){this.g=t}},Ld:{get:function(){return 1!=(2097155&this.flags)}},Md:{get:function(){return 0!=(2097155&this.flags)}},Kd:{get:function(){return 1024&this.flags}}}));var e,r=new dc;for(e in t)r[e]=t[e];return t=r,r=bc(),t.fd=r,Rb[r]=t}var Kb={open:function(t){t.n=Qb[t.g.rdev].n,t.n.open&&t.n.open(t)},G:function(){throw new L(J.ia)}},qc;function Gb(t,e){Qb[t]={n:e}}function ec(t,e){var r,i="/"===e,n=!e;if(i&&Pb)throw new L(J.fa);if(!i&&!n){if(e=(r=S(e,{Ia:!1})).path,(r=r.g).U)throw new L(J.fa);if(!N(r.mode))throw new L(J.ya)}n={type:t,pa:{},Oa:e,lb:[]};var o=t.A(n);(o.A=n).root=o,i?Pb=o:r&&(r.U=n,r.A&&r.A.lb.push(n))}function fc(t,e,r){var i=S(t,{parent:!0}).g;if(!(t=Bb(t))||"."===t||".."===t)throw new L(J.q);var n=ac(i,t);if(n)throw new L(n);if(!i.k.T)throw new L(J.I);return i.k.T(i,t,e,r)}function gc(t,e){return e=4095&(void 0!==e?e:438),fc(t,e|=32768,0)}function V(t,e){return e=1023&(void 0!==e?e:511),fc(t,e|=16384,0)}function hc(t,e,r){return void 0===r&&(r=e,e=438),fc(t,8192|e,r)}function ic(t,e){if(!Db(t))throw new L(J.F);var r=S(e,{parent:!0}).g;if(!r)throw new L(J.F);var i=Bb(e),n=ac(r,i);if(n)throw new L(n);if(!r.k.symlink)throw new L(J.I);return r.k.symlink(r,i,t)}function Vb(t){if(!(t=S(t).g))throw new L(J.F);if(!t.k.readlink)throw new L(J.q);return Db(T(t.parent),t.k.readlink(t))}function jc(t,e){var r;if(!(r="string"==typeof t?S(t,{la:!0}).g:t).k.u)throw new L(J.I);r.k.u(r,{mode:4095&e|-4096&r.mode,timestamp:Date.now()})}function kc(r,t){var i,n,o;if(""===r)throw new L(J.F);if("string"==typeof t){if(void 0===(n=$b[t]))throw Error("Unknown file open mode: "+t)}else n=t;if(i=64&(t=n)?4095&(void 0===i?438:i)|32768:0,"object"==typeof r)o=r;else{r=zb(r);try{o=S(r,{la:!(131072&t)}).g}catch(t){}}if(n=!1,64&t)if(o){if(128&t)throw new L(J.wa)}else o=fc(r,i,0),n=!0;if(!o)throw new L(J.F);if(8192==(61440&o.mode)&&(t&=-513),65536&t&&!N(o.mode))throw new L(J.ya);if(!n&&(i=o?40960==(61440&o.mode)?J.ga:N(o.mode)&&(0!=(2097155&t)||512&t)?J.P:(i=["r","w","rw"][3&t],512&t&&(i+="w"),Yb(o,i)):J.F))throw new L(i);if(512&t){var a;if(!(a="string"==typeof(i=o)?S(i,{la:!0}).g:i).k.u)throw new L(J.I);if(N(a.mode))throw new L(J.P);if(32768!=(61440&a.mode))throw new L(J.q);if(i=Yb(a,"w"))throw new L(i);a.k.u(a,{size:0,timestamp:Date.now()})}t&=-641,(o=cc({g:o,path:T(o),flags:t,seekable:!0,position:0,n:o.n,tb:[],error:!1})).n.open&&o.n.open(o),!e.logReadFiles||1&t||(lc||(lc={}),r in lc||(lc[r]=1,e.printErr("read file: "+r)));try{R.onOpenFile&&(a=0,1!=(2097155&t)&&(a|=1),0!=(2097155&t)&&(a|=2),R.onOpenFile(r,a))}catch(t){console.log("FS.trackingDelegate['onOpenFile']('"+r+"', flags) threw an exception: "+t.message)}return o}function mc(t){t.na&&(t.na=null);try{t.n.close&&t.n.close(t)}catch(t){throw t}finally{Rb[t.fd]=null}}function nc(t,e,r){if(!t.seekable||!t.n.G)throw new L(J.ia);t.position=t.n.G(t,e,r),t.tb=[]}function oc(t,e,r,i,n,o){if(i<0||n<0)throw new L(J.q);if(0==(2097155&t.flags))throw new L(J.ea);if(N(t.g.mode))throw new L(J.P);if(!t.n.write)throw new L(J.q);1024&t.flags&&nc(t,0,2);var a=!0;if(void 0===n)n=t.position,a=!1;else if(!t.seekable)throw new L(J.ia);e=t.n.write(t,e,r,i,n,o),a||(t.position+=e);try{t.path&&R.onWriteToFile&&R.onWriteToFile(t.path)}catch(t){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+t.message)}return e}function pc(){L||((L=function(t,e){this.g=e,this.qb=function(t){for(var e in this.S=t,J)if(J[e]===t){this.code=e;break}},this.qb(t),this.message=xb[t]}).prototype=Error(),L.prototype.constructor=L,[J.F].forEach(function(t){Mb[t]=new L(t),Mb[t].stack=""}))}function rc(t,e){var r=0;return t&&(r|=365),e&&(r|=146),r}function sc(t,e,r,i){return gc(t=K("string"==typeof t?t:T(t),e),rc(r,i))}function tc(t,e,r,i,n,o){if(n=gc(t=e?K("string"==typeof t?t:T(t),e):t,i=rc(i,n)),r){if("string"==typeof r){t=Array(r.length),e=0;for(var a=r.length;e>2]}function xc(){var t;if(t=X(),!(t=Rb[t]))throw new L(J.ea);return t}var yc={};function Ga(t){Ga.p||(r=Qa(r),Ga.p=!0,assert(n.R),Ga.bb=n.R,n.R=function(){x("cannot dynamically allocate, sbrk now has control")});var e=r;return 0==t||Ga.bb(t)?e:4294967295}e._i64Add=zc;var Ac=1;function Cc(t,e){if(Dc=t,Ec=e,!Fc)return 1;if(0==t)Y=function(){setTimeout(Gc,e)},Hc="timeout";else if(1==t)Y=function(){Ic(Gc)},Hc="rAF";else if(2==t){if(!window.setImmediate){var r=[];window.addEventListener("message",function(t){t.source===window&&"__emcc"===t.data&&(t.stopPropagation(),r.shift()())},!0),window.setImmediate=function(t){r.push(t),window.postMessage("__emcc","*")}}Y=function(){window.setImmediate(Gc)},Hc="immediate"}return 0}function Jc(a,t,r,s,i){e.noExitRuntime=!0,assert(!Fc,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."),Fc=a,Kc=s;var l=Lc;if(Gc=function(){if(!na)if(0>r-6&63;r=r-6,t=t+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[n]}2==r?(t+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(3&e)<<4],t+="=="):4==r&&(t+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(15&e)<<2],t+="="),u.src="data:audio/x-"+a.substr(-3)+";base64,"+t,s(u)}},u.src=n,ad(function(){s(u)})}});var r=e.canvas;r&&(r.sa=r.requestPointerLock||r.mozRequestPointerLock||r.webkitRequestPointerLock||r.msRequestPointerLock||function(){},r.Fa=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},r.Fa=r.Fa.bind(document),document.addEventListener("pointerlockchange",t,!1),document.addEventListener("mozpointerlockchange",t,!1),document.addEventListener("webkitpointerlockchange",t,!1),document.addEventListener("mspointerlockchange",t,!1),e.elementPointerLock&&r.addEventListener("click",function(t){!Tc&&r.sa&&(r.sa(),t.preventDefault())},!1))}}function bd(t,r,i,n){if(r&&e.ka&&t==e.canvas)return e.ka;var o,a;if(r){if(a={antialias:!1,alpha:!1},n)for(var s in n)a[s]=n[s];(a=GL.createContext(t,a))&&(o=GL.getContext(a).td),t.style.backgroundColor="black"}else o=t.getContext("2d");return o?(i&&(r||assert("undefined"==typeof GLctx,"cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),e.ka=o,r&&GL.Od(a),e.Td=r,Uc.forEach(function(t){t()}),Vc()),o):null}var cd=!1,dd=void 0,ed=void 0;function fd(t,r,i){function n(){Sc=!1;var t=o.parentNode;(document.webkitFullScreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.mozFullscreenElement||document.fullScreenElement||document.fullscreenElement||document.msFullScreenElement||document.msFullscreenElement||document.webkitCurrentFullScreenElement)===t?(o.Da=document.cancelFullScreen||document.mozCancelFullScreen||document.webkitCancelFullScreen||document.msExitFullscreen||document.exitFullscreen||function(){},o.Da=o.Da.bind(document),dd&&o.sa(),Sc=!0,ed&&gd()):(t.parentNode.insertBefore(o,t),t.parentNode.removeChild(t),ed&&hd()),e.onFullScreen&&e.onFullScreen(Sc),id(o)}void 0===(dd=t)&&(dd=!0),void 0===(ed=r)&&(ed=!1),void 0===(jd=i)&&(jd=null);var o=e.canvas;cd||(cd=!0,document.addEventListener("fullscreenchange",n,!1),document.addEventListener("mozfullscreenchange",n,!1),document.addEventListener("webkitfullscreenchange",n,!1),document.addEventListener("MSFullscreenChange",n,!1));var a=document.createElement("div");o.parentNode.insertBefore(a,o),a.appendChild(o),a.p=a.requestFullScreen||a.mozRequestFullScreen||a.msRequestFullscreen||(a.webkitRequestFullScreen?function(){a.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),i?a.p({Ud:i}):a.p()}var kd=0;function ld(t){var e=Date.now();if(0===kd)kd=e+1e3/60;else for(;kd<=e+2;)kd+=1e3/60;e=Math.max(kd-e,0),setTimeout(t,e)}function Ic(t){"undefined"==typeof window?ld(t):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||ld),window.requestAnimationFrame(t))}function ad(t){e.noExitRuntime=!0,setTimeout(function(){na||t()},1e4)}function $c(t){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[t.substr(t.lastIndexOf(".")+1)]}function md(t,e,r){var i=new XMLHttpRequest;i.open("GET",t,!0),i.responseType="arraybuffer",i.onload=function(){200==i.status||0==i.status&&i.response?e(i.response):r()},i.onerror=r,i.send(null)}function nd(e,r,t){md(e,function(t){assert(t,'Loading data file "'+e+'" failed (no arrayBuffer).'),r(new Uint8Array(t)),lb()},function(){if(!t)throw'Loading data file "'+e+'" failed.';t()}),kb()}var od=[],Wc,Xc,Yc,Zc,jd;function pd(){var r=e.canvas;od.forEach(function(t){t(r.width,r.height)})}function gd(){if("undefined"!=typeof SDL){var t=Sa[SDL.screen+0*n.J>>2];C[SDL.screen+0*n.J>>2]=8388608|t}pd()}function hd(){if("undefined"!=typeof SDL){var t=Sa[SDL.screen+0*n.J>>2];C[SDL.screen+0*n.J>>2]=-8388609&t}pd()}function id(t,r,i){r&&i?(t.ub=r,t.hb=i):(r=t.ub,i=t.hb);var n=r,o=i;if(e.forcedAspectRatio&&0this.length-1||t<0)){var e=t%this.chunkSize;return this.gb(t/this.chunkSize|0)[e]}},a.prototype.pb=function(t){this.gb=t},a.prototype.Ca=function(){var t=new XMLHttpRequest;if(t.open("HEAD",l,!1),t.send(null),!(200<=t.status&&t.status<300||304===t.status))throw Error("Couldn't load "+l+". Status: "+t.status);var e,o=Number(t.getResponseHeader("Content-length")),a=1048576;(e=t.getResponseHeader("Accept-Ranges"))&&"bytes"===e||(a=o);var s=this;s.pb(function(t){var e=t*a,r=(t+1)*a-1;r=Math.min(r,o-1);if(void 0===s.Y[t]){var i=s.Y;if(r=(t=t.g.e).length)return 0;if(assert(0<=(i=Math.min(t.length-n,i))),t.slice)for(var o=0;o>2]=0;case 21520:return r.tty?-J.q:-J.Q;case 21531:if(n=X(),!r.n.ib)throw new L(J.Q);return r.n.ib(r,i,n);default:x("bad ioctl syscall "+i)}}catch(t){return void 0!==vc&&t instanceof L||x(t),-t.S}},___syscall6:function(t,e){wc=e;try{return mc(xc()),0}catch(t){return void 0!==vc&&t instanceof L||x(t),-t.S}},_emscripten_set_main_loop_timing:Cc,__ZSt18uncaught_exceptionv:tb,___setErrNo:ob,_sbrk:Ga,___cxa_begin_catch:function(t){var e;tb.p--,ub.push(t);t:{if(t&&!vb[t])for(e in vb)if(vb[e].wd===t)break t;e=t}return e&&vb[e].Sd++,t},_emscripten_memcpy_big:function(t,e,r){return E.set(E.subarray(e,e+r),t),t},_sysconf:function(t){switch(t){case 30:return 4096;case 85:return F/4096;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"==typeof navigator&&navigator.hardwareConcurrency||1}return ob(J.q),-1},_pthread_getspecific:function(t){return yc[t]||0},_pthread_self:function(){return 0},_pthread_once:wb,_pthread_key_create:function(t){return 0==t?J.q:(C[t>>2]=Ac,yc[Ac]=0,Ac++,0)},___unlock:function(){},_emscripten_set_main_loop:Jc,_pthread_setspecific:function(t,e){return t in yc?(yc[t]=e,0):J.q},___lock:function(){},_abort:function(){e.abort()},_pthread_cleanup_push:pb,_time:function(t){var e=Date.now()/1e3|0;return t&&(C[t>>2]=e),e},___syscall140:function(t,e){wc=e;try{var r=xc(),i=X(),n=X(),o=X(),a=X();return assert(0===i),nc(r,n,a),C[o>>2]=r.position,r.na&&0===n&&0===a&&(r.na=null),0}catch(t){return void 0!==vc&&t instanceof L||x(t),-t.S}},___syscall146:function(t,e){wc=e;try{var r,i=xc(),n=X();t:{for(var o=X(),a=0,s=0;s>2],C[n+(8*s+4)>>2],void 0);if(l<0){r=-1;break t}a+=l}r=a}return r}catch(t){return void 0!==vc&&t instanceof L||x(t),-t.S}},STACKTOP:m,STACK_MAX:Va,tempDoublePtr:mb,ABORT:na,cttz_i8:qd};var Z=function(t,e,r){"use asm";var i=t.Int8Array;var n=t.Int16Array;var o=t.Int32Array;var a=t.Uint8Array;var s=t.Uint16Array;var l=t.Uint32Array;var u=t.Float32Array;var h=t.Float64Array;var pt=new i(r);var $=new n(r);var dt=new o(r);var mt=new a(r);var gt=new s(r);var c=new l(r);var f=new u(r);var tt=new h(r);var p=t.byteLength;var vt=e.STACKTOP|0;var d=e.STACK_MAX|0;var et=e.tempDoublePtr|0;var m=e.ABORT|0;var g=e.cttz_i8|0;var v=0;var _=0;var y=0;var b=0;var x=t.NaN,w=t.Infinity;var T=0,k=0,S=0,P=0,E=0.0,C=0,A=0,I=0,O=0.0;var rt=0;var M=0;var D=0;var R=0;var z=0;var F=0;var L=0;var j=0;var N=0;var B=0;var U=t.Math.floor;var X=t.Math.abs;var H=t.Math.sqrt;var W=t.Math.pow;var q=t.Math.cos;var G=t.Math.sin;var V=t.Math.tan;var Y=t.Math.acos;var Z=t.Math.asin;var J=t.Math.atan;var K=t.Math.atan2;var Q=t.Math.exp;var it=t.Math.log;var nt=t.Math.ceil;var _t=t.Math.imul;var ot=t.Math.min;var at=t.Math.clz32;var st=e.abort;var lt=e.assert;var ut=e.invoke_iiii;var ht=e.invoke_viiiii;var ct=e.invoke_vi;var ft=e.invoke_ii;var yt=e.invoke_viii;var bt=e.invoke_v;var xt=e.invoke_viiiiii;var wt=e.invoke_iiiiii;var Tt=e.invoke_viiii;var kt=e._pthread_cleanup_pop;var St=e.___syscall54;var Pt=e.___syscall6;var Et=e._emscripten_set_main_loop_timing;var Ct=e.__ZSt18uncaught_exceptionv;var At=e.___setErrNo;var It=e._sbrk;var Ot=e.___cxa_begin_catch;var Mt=e._emscripten_memcpy_big;var Dt=e._sysconf;var Rt=e._pthread_getspecific;var zt=e._pthread_self;var Ft=e._pthread_once;var Lt=e._pthread_key_create;var jt=e.___unlock;var Nt=e._emscripten_set_main_loop;var Bt=e._pthread_setspecific;var Ut=e.___lock;var Xt=e._abort;var Ht=e._pthread_cleanup_push;var Wt=e._time;var qt=e.___syscall140;var Gt=e.___syscall146;var Vt=0.0;function Yt(t){if(p(t)&16777215||p(t)<=16777215||p(t)>2147483648)return false;pt=new i(t);$=new n(t);dt=new o(t);mt=new a(t);gt=new s(t);c=new l(t);f=new u(t);tt=new h(t);r=t;return true}function Zt(t){t=t|0;var e=0;e=vt;vt=vt+t|0;vt=vt+15&-16;return e|0}function Jt(){return vt|0}function Kt(t){t=t|0;vt=t}function Qt(t,e){t=t|0;e=e|0;vt=t;d=e}function $t(t,e){t=t|0;e=e|0;if(!v){v=t;_=e}}function te(t){t=t|0;pt[et>>0]=pt[t>>0];pt[et+1>>0]=pt[t+1>>0];pt[et+2>>0]=pt[t+2>>0];pt[et+3>>0]=pt[t+3>>0]}function ee(t){t=t|0;pt[et>>0]=pt[t>>0];pt[et+1>>0]=pt[t+1>>0];pt[et+2>>0]=pt[t+2>>0];pt[et+3>>0]=pt[t+3>>0];pt[et+4>>0]=pt[t+4>>0];pt[et+5>>0]=pt[t+5>>0];pt[et+6>>0]=pt[t+6>>0];pt[et+7>>0]=pt[t+7>>0]}function re(t){t=t|0;rt=t}function ie(){return rt|0}function ne(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0;m=vt;vt=vt+608|0;f=m+88|0;c=m+72|0;l=m+64|0;s=m+48|0;a=m+24|0;o=m;h=m+96|0;p=m+92|0;u=t+4|0;d=t+8|0;if((dt[u>>2]|0)>>>0>(dt[d>>2]|0)>>>0){dt[o>>2]=1154;dt[o+4>>2]=2120;dt[o+8>>2]=1133;br(h,1100,o)|0;yr(h,m+16|0)|0}if((2147418112/(i>>>0)|0)>>>0<=e>>>0){dt[a>>2]=1154;dt[a+4>>2]=2121;dt[a+8>>2]=1169;br(h,1100,a)|0;yr(h,m+40|0)|0}a=dt[d>>2]|0;if(a>>>0>=e>>>0){d=1;vt=m;return d|0}do{if(r){if(e){o=e+-1|0;if(!(o&e)){o=11;break}else e=o}else e=-1;e=e>>>16|e;e=e>>>8|e;e=e>>>4|e;e=e>>>2|e;e=(e>>>1|e)+1|0;o=10}else o=10}while(0);if((o|0)==10)if(!e){e=0;o=12}else o=11;if((o|0)==11)if(e>>>0<=a>>>0)o=12;if((o|0)==12){dt[s>>2]=1154;dt[s+4>>2]=2130;dt[s+8>>2]=1217;br(h,1100,s)|0;yr(h,l)|0}r=_t(e,i)|0;do{if(!n){o=oe(dt[t>>2]|0,r,p,1)|0;if(!o){d=0;vt=m;return d|0}else{dt[t>>2]=o;break}}else{a=ae(r,p)|0;if(!a){d=0;vt=m;return d|0}Ii[n&0](a,dt[t>>2]|0,dt[u>>2]|0);o=dt[t>>2]|0;do{if(o)if(!(o&7)){Di[dt[104>>2]&1](o,0,0,1,dt[27]|0)|0;break}else{dt[c>>2]=1154;dt[c+4>>2]=2499;dt[c+8>>2]=1516;br(h,1100,c)|0;yr(h,f)|0;break}}while(0);dt[t>>2]=a}}while(0);o=dt[p>>2]|0;if(o>>>0>r>>>0)e=(o>>>0)/(i>>>0)|0;dt[d>>2]=e;d=1;vt=m;return d|0}function oe(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0,o=0,a=0,s=0,l=0,u=0;u=vt;vt=vt+592|0;l=u+48|0;o=u+24|0;n=u;s=u+72|0;a=u+68|0;if(t&7){dt[n>>2]=1154;dt[n+4>>2]=2499;dt[n+8>>2]=1494;br(s,1100,n)|0;yr(s,u+16|0)|0;l=0;vt=u;return l|0}if(e>>>0>2147418112){dt[o>>2]=1154;dt[o+4>>2]=2499;dt[o+8>>2]=1387;br(s,1100,o)|0;yr(s,u+40|0)|0;l=0;vt=u;return l|0}dt[a>>2]=e;i=Di[dt[104>>2]&1](t,e,a,i,dt[27]|0)|0;if(r)dt[r>>2]=dt[a>>2];if(!(i&7)){l=i;vt=u;return l|0}dt[l>>2]=1154;dt[l+4>>2]=2551;dt[l+8>>2]=1440;br(s,1100,l)|0;yr(s,u+64|0)|0;l=i;vt=u;return l|0}function ae(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0;l=vt;vt=vt+592|0;a=l+48|0;s=l+24|0;r=l;o=l+72|0;n=l+68|0;i=t+3&-4;i=(i|0)!=0?i:4;if(i>>>0>2147418112){dt[r>>2]=1154;dt[r+4>>2]=2499;dt[r+8>>2]=1387;br(o,1100,r)|0;yr(o,l+16|0)|0;s=0;vt=l;return s|0}dt[n>>2]=i;r=Di[dt[104>>2]&1](0,i,n,1,dt[27]|0)|0;t=dt[n>>2]|0;if(e)dt[e>>2]=t;if((r|0)==0|t>>>0>>0){dt[s>>2]=1154;dt[s+4>>2]=2499;dt[s+8>>2]=1413;br(o,1100,s)|0;yr(o,l+40|0)|0;s=0;vt=l;return s|0}if(!(r&7)){s=r;vt=l;return s|0}dt[a>>2]=1154;dt[a+4>>2]=2526;dt[a+8>>2]=1440;br(o,1100,a)|0;yr(o,l+64|0)|0;s=r;vt=l;return s|0}function se(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,E=0,C=0,A=0,I=0,O=0,M=0,D=0,R=0,z=0,F=0,L=0,j=0;j=vt;vt=vt+960|0;z=j+232|0;R=j+216|0;D=j+208|0;M=j+192|0;O=j+184|0;I=j+168|0;A=j+160|0;C=j+144|0;S=j+136|0;k=j+120|0;T=j+112|0;w=j+96|0;y=j+88|0;_=j+72|0;v=j+64|0;g=j+48|0;c=j+40|0;p=j+24|0;f=j+16|0;h=j;E=j+440|0;F=j+376|0;L=j+304|0;m=j+236|0;if((e|0)==0|i>>>0>11){t=0;vt=j;return t|0}dt[t>>2]=e;n=L;o=n+68|0;do{dt[n>>2]=0;n=n+4|0}while((n|0)<(o|0));o=0;do{n=pt[r+o>>0]|0;if(n<<24>>24){P=L+((n&255)<<2)|0;dt[P>>2]=(dt[P>>2]|0)+1}o=o+1|0}while((o|0)!=(e|0));o=0;u=1;a=0;s=-1;l=0;while(1){n=dt[L+(u<<2)>>2]|0;if(!n)dt[t+28+(u+-1<<2)>>2]=0;else{P=u+-1|0;dt[F+(P<<2)>>2]=o;o=n+o|0;x=16-u|0;dt[t+28+(P<<2)>>2]=(o+-1<>2]=l;dt[m+(u<<2)>>2]=l;a=a>>>0>u>>>0?a:u;s=s>>>0>>0?s:u;l=n+l|0}u=u+1|0;if((u|0)==17){P=a;break}else o=o<<1}dt[t+4>>2]=l;o=t+172|0;do{if(l>>>0>(dt[o>>2]|0)>>>0){dt[o>>2]=l;if(l){n=l+-1|0;if(n&l)d=14}else{n=-1;d=14}if((d|0)==14){x=n>>>16|n;x=x>>>8|x;x=x>>>4|x;x=x>>>2|x;x=(x>>>1|x)+1|0;dt[o>>2]=x>>>0>e>>>0?e:x}a=t+176|0;n=dt[a>>2]|0;do{if(n){x=dt[n+-4>>2]|0;n=n+-8|0;if(!((x|0)!=0?(x|0)==(~dt[n>>2]|0):0)){dt[h>>2]=1154;dt[h+4>>2]=644;dt[h+8>>2]=1863;br(E,1100,h)|0;yr(E,f)|0}if(!(n&7)){Di[dt[104>>2]&1](n,0,0,1,dt[27]|0)|0;break}else{dt[p>>2]=1154;dt[p+4>>2]=2499;dt[p+8>>2]=1516;br(E,1100,p)|0;yr(E,c)|0;break}}}while(0);o=dt[o>>2]|0;o=(o|0)!=0?o:1;n=ae((o<<1)+8|0,0)|0;if(!n){dt[a>>2]=0;n=0;break}else{dt[n+4>>2]=o;dt[n>>2]=~o;dt[a>>2]=n+8;d=25;break}}else d=25}while(0);t:do{if((d|0)==25){x=t+24|0;pt[x>>0]=s;pt[t+25>>0]=P;o=t+176|0;a=0;do{b=pt[r+a>>0]|0;n=b&255;if(b<<24>>24){if(!(dt[L+(n<<2)>>2]|0)){dt[g>>2]=1154;dt[g+4>>2]=2273;dt[g+8>>2]=1261;br(E,1100,g)|0;yr(E,v)|0}b=m+(n<<2)|0;n=dt[b>>2]|0;dt[b>>2]=n+1;if(n>>>0>=l>>>0){dt[_>>2]=1154;dt[_+4>>2]=2277;dt[_+8>>2]=1274;br(E,1100,_)|0;yr(E,y)|0}$[(dt[o>>2]|0)+(n<<1)>>1]=a}a=a+1|0}while((a|0)!=(e|0));n=pt[x>>0]|0;y=(n&255)>>>0>>0?i:0;b=t+8|0;dt[b>>2]=y;_=(y|0)!=0;if(_){v=1<>>0>(dt[n>>2]|0)>>>0){dt[n>>2]=v;a=t+168|0;n=dt[a>>2]|0;do{if(n){g=dt[n+-4>>2]|0;n=n+-8|0;if(!((g|0)!=0?(g|0)==(~dt[n>>2]|0):0)){dt[w>>2]=1154;dt[w+4>>2]=644;dt[w+8>>2]=1863;br(E,1100,w)|0;yr(E,T)|0}if(!(n&7)){Di[dt[104>>2]&1](n,0,0,1,dt[27]|0)|0;break}else{dt[k>>2]=1154;dt[k+4>>2]=2499;dt[k+8>>2]=1516;br(E,1100,k)|0;yr(E,S)|0;break}}}while(0);n=v<<2;o=ae(n+8|0,0)|0;if(!o){dt[a>>2]=0;n=0;break t}else{S=o+8|0;dt[o+4>>2]=v;dt[o>>2]=~v;dt[a>>2]=S;o=S;break}}else{o=t+168|0;n=v<<2;a=o;o=dt[o>>2]|0}}while(0);Yr(o|0,-1,n|0)|0;d=t+176|0;g=1;do{if(dt[L+(g<<2)>>2]|0){e=y-g|0;m=1<>2]|0;if(o>>>0>=16){dt[C>>2]=1154;dt[C+4>>2]=1953;dt[C+8>>2]=1737;br(E,1100,C)|0;yr(E,A)|0}n=dt[t+28+(o<<2)>>2]|0;if(!n)p=-1;else p=(n+-1|0)>>>(16-g|0);if(s>>>0<=p>>>0){c=(dt[t+96+(o<<2)>>2]|0)-s|0;f=g<<16;do{n=gt[(dt[d>>2]|0)+(c+s<<1)>>1]|0;if((mt[r+n>>0]|0|0)!=(g|0)){dt[I>>2]=1154;dt[I+4>>2]=2319;dt[I+8>>2]=1303;br(E,1100,I)|0;yr(E,O)|0}h=s<>>0>=v>>>0){dt[M>>2]=1154;dt[M+4>>2]=2325;dt[M+8>>2]=1337;br(E,1100,M)|0;yr(E,D)|0}n=dt[a>>2]|0;if((dt[n+(l<<2)>>2]|0)!=-1){dt[R>>2]=1154;dt[R+4>>2]=2327;dt[R+8>>2]=1360;br(E,1100,R)|0;yr(E,z)|0;n=dt[a>>2]|0}dt[n+(l<<2)>>2]=o;u=u+1|0}while(u>>>0>>0);s=s+1|0}while(s>>>0<=p>>>0)}}g=g+1|0}while(y>>>0>=g>>>0);n=pt[x>>0]|0}o=t+96|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F>>2]|0);o=t+100|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+4>>2]|0);o=t+104|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+8>>2]|0);o=t+108|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+12>>2]|0);o=t+112|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+16>>2]|0);o=t+116|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+20>>2]|0);o=t+120|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+24>>2]|0);o=t+124|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+28>>2]|0);o=t+128|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+32>>2]|0);o=t+132|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+36>>2]|0);o=t+136|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+40>>2]|0);o=t+140|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+44>>2]|0);o=t+144|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+48>>2]|0);o=t+148|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+52>>2]|0);o=t+152|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+56>>2]|0);o=t+156|0;dt[o>>2]=(dt[o>>2]|0)-(dt[F+60>>2]|0);o=t+16|0;dt[o>>2]=0;a=t+20|0;dt[a>>2]=n&255;e:do{if(_){while(1){if(!i)break e;n=i+-1|0;if(!(dt[L+(i<<2)>>2]|0))i=n;else break}dt[o>>2]=dt[t+28+(n<<2)>>2];n=y+1|0;dt[a>>2]=n;if(n>>>0<=P>>>0){while(1){if(dt[L+(n<<2)>>2]|0)break;n=n+1|0;if(n>>>0>P>>>0)break e}dt[a>>2]=n}}}while(0);dt[t+92>>2]=-1;dt[t+160>>2]=1048575;dt[t+12>>2]=32-(dt[b>>2]|0);n=1}}while(0);t=n;vt=j;return t|0}function le(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0;if(!t){n=Br(e)|0;if(!r){r=n;return r|0}if(!n)o=0;else o=Hr(n)|0;dt[r>>2]=o;r=n;return r|0}if(!e){Ur(t);if(!r){r=0;return r|0}dt[r>>2]=0;r=0;return r|0}n=Xr(t,e)|0;o=(n|0)!=0;if(o|i^1)o=o?n:t;else{n=Xr(t,e)|0;o=(n|0)==0?t:n}if(!r){r=n;return r|0}e=Hr(o)|0;dt[r>>2]=e;r=n;return r|0}function ue(t,e,r){t=t|0;e=e|0;r=r|0;var i=0;if(!((t|0)!=0&e>>>0>73&(r|0)!=0)){r=0;return r|0}if((dt[r>>2]|0)!=40|e>>>0<74){r=0;return r|0}if(((mt[t>>0]|0)<<8|(mt[t+1>>0]|0)|0)!=18552){r=0;return r|0}if(((mt[t+2>>0]|0)<<8|(mt[t+3>>0]|0))>>>0<74){r=0;return r|0}if(((mt[t+7>>0]|0)<<16|(mt[t+6>>0]|0)<<24|(mt[t+8>>0]|0)<<8|(mt[t+9>>0]|0))>>>0>e>>>0){r=0;return r|0}dt[r+4>>2]=(mt[t+12>>0]|0)<<8|(mt[t+13>>0]|0);dt[r+8>>2]=(mt[t+14>>0]|0)<<8|(mt[t+15>>0]|0);dt[r+12>>2]=mt[t+16>>0];dt[r+16>>2]=mt[t+17>>0];e=t+18|0;i=r+32|0;dt[i>>2]=mt[e>>0];dt[i+4>>2]=0;e=pt[e>>0]|0;dt[r+20>>2]=e<<24>>24==0|e<<24>>24==9?8:16;dt[r+24>>2]=(mt[t+26>>0]|0)<<16|(mt[t+25>>0]|0)<<24|(mt[t+27>>0]|0)<<8|(mt[t+28>>0]|0);dt[r+28>>2]=(mt[t+30>>0]|0)<<16|(mt[t+29>>0]|0)<<24|(mt[t+31>>0]|0)<<8|(mt[t+32>>0]|0);r=1;return r|0}function he(t){t=t|0;Ot(t|0)|0;Ue()}function ce(t){t=t|0;var e=0,r=0,i=0,n=0,o=0;o=vt;vt=vt+544|0;n=o;i=o+24|0;e=dt[t+20>>2]|0;if(e)fe(e);e=t+4|0;r=dt[e>>2]|0;if(!r){n=t+16|0;pt[n>>0]=0;vt=o;return}if(!(r&7))Di[dt[104>>2]&1](r,0,0,1,dt[27]|0)|0;else{dt[n>>2]=1154;dt[n+4>>2]=2499;dt[n+8>>2]=1516;br(i,1100,n)|0;yr(i,o+16|0)|0}dt[e>>2]=0;dt[t+8>>2]=0;dt[t+12>>2]=0;n=t+16|0;pt[n>>0]=0;vt=o;return}function fe(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0;p=vt;vt=vt+640|0;f=p+112|0;c=p+96|0;h=p+88|0;u=p+72|0;l=p+64|0;s=p+48|0;i=p+40|0;o=p+24|0;n=p+16|0;r=p;a=p+120|0;if(!t){vt=p;return}e=dt[t+168>>2]|0;do{if(e){d=dt[e+-4>>2]|0;e=e+-8|0;if(!((d|0)!=0?(d|0)==(~dt[e>>2]|0):0)){dt[r>>2]=1154;dt[r+4>>2]=644;dt[r+8>>2]=1863;br(a,1100,r)|0;yr(a,n)|0}if(!(e&7)){Di[dt[104>>2]&1](e,0,0,1,dt[27]|0)|0;break}else{dt[o>>2]=1154;dt[o+4>>2]=2499;dt[o+8>>2]=1516;br(a,1100,o)|0;yr(a,i)|0;break}}}while(0);e=dt[t+176>>2]|0;do{if(e){d=dt[e+-4>>2]|0;e=e+-8|0;if(!((d|0)!=0?(d|0)==(~dt[e>>2]|0):0)){dt[s>>2]=1154;dt[s+4>>2]=644;dt[s+8>>2]=1863;br(a,1100,s)|0;yr(a,l)|0}if(!(e&7)){Di[dt[104>>2]&1](e,0,0,1,dt[27]|0)|0;break}else{dt[u>>2]=1154;dt[u+4>>2]=2499;dt[u+8>>2]=1516;br(a,1100,u)|0;yr(a,h)|0;break}}}while(0);if(!(t&7)){Di[dt[104>>2]&1](t,0,0,1,dt[27]|0)|0;vt=p;return}else{dt[c>>2]=1154;dt[c+4>>2]=2499;dt[c+8>>2]=1516;br(a,1100,c)|0;yr(a,f)|0;vt=p;return}}function pe(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0;h=vt;vt=vt+560|0;a=h+40|0;s=h+24|0;e=h;o=h+48|0;n=t+8|0;r=dt[n>>2]|0;if((r+-1|0)>>>0>=8192){dt[e>>2]=1154;dt[e+4>>2]=2997;dt[e+8>>2]=1541;br(o,1100,e)|0;yr(o,h+16|0)|0}dt[t>>2]=r;i=t+20|0;e=dt[i>>2]|0;if(!e){e=ae(180,0)|0;if(!e)e=0;else{u=e+164|0;dt[u>>2]=0;dt[u+4>>2]=0;dt[u+8>>2]=0;dt[u+12>>2]=0}dt[i>>2]=e;u=e;l=dt[t>>2]|0}else{u=e;l=r}if(!(dt[n>>2]|0)){dt[s>>2]=1154;dt[s+4>>2]=903;dt[s+8>>2]=1781;br(o,1100,s)|0;yr(o,a)|0;o=dt[t>>2]|0}else o=l;n=dt[t+4>>2]|0;if(o>>>0>16){r=o;e=0}else{t=0;u=se(u,l,n,t)|0;vt=h;return u|0}while(1){i=e+1|0;if(r>>>0>3){r=r>>>1;e=i}else{r=i;break}}t=e+2+((r|0)!=32&1<>>0>>0&1)|0;t=t>>>0<11?t&255:11;u=se(u,l,n,t)|0;vt=h;return u|0}function de(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,E=0,C=0,A=0,I=0,O=0,M=0,D=0,R=0,z=0;z=vt;vt=vt+800|0;I=z+256|0;A=z+240|0;C=z+232|0;E=z+216|0;P=z+208|0;S=z+192|0;k=z+184|0;T=z+168|0;w=z+160|0;x=z+144|0;b=z+136|0;y=z+120|0;_=z+112|0;v=z+96|0;g=z+88|0;m=z+72|0;c=z+64|0;h=z+48|0;s=z+40|0;l=z+24|0;o=z+16|0;n=z;D=z+288|0;R=z+264|0;O=me(t,14)|0;if(!O){dt[e>>2]=0;r=e+4|0;i=dt[r>>2]|0;if(i){if(!(i&7))Di[dt[104>>2]&1](i,0,0,1,dt[27]|0)|0;else{dt[n>>2]=1154;dt[n+4>>2]=2499;dt[n+8>>2]=1516;br(D,1100,n)|0;yr(D,o)|0}dt[r>>2]=0;dt[e+8>>2]=0;dt[e+12>>2]=0}pt[e+16>>0]=0;r=e+20|0;i=dt[r>>2]|0;if(!i){e=1;vt=z;return e|0}fe(i);dt[r>>2]=0;e=1;vt=z;return e|0}p=e+4|0;d=e+8|0;r=dt[d>>2]|0;if((r|0)!=(O|0)){if(r>>>0<=O>>>0){do{if((dt[e+12>>2]|0)>>>0>>0){if(ne(p,O,(r+1|0)==(O|0),1,0)|0){r=dt[d>>2]|0;break}pt[e+16>>0]=1;e=0;vt=z;return e|0}}while(0);Yr((dt[p>>2]|0)+r|0,0,O-r|0)|0}dt[d>>2]=O}Yr(dt[p>>2]|0,0,O|0)|0;f=t+20|0;r=dt[f>>2]|0;if((r|0)<5){o=t+4|0;a=t+8|0;n=t+16|0;do{i=dt[o>>2]|0;if((i|0)==(dt[a>>2]|0))i=0;else{dt[o>>2]=i+1;i=mt[i>>0]|0}r=r+8|0;dt[f>>2]=r;if((r|0)>=33){dt[l>>2]=1154;dt[l+4>>2]=3199;dt[l+8>>2]=1650;br(D,1100,l)|0;yr(D,s)|0;r=dt[f>>2]|0}i=i<<32-r|dt[n>>2];dt[n>>2]=i}while((r|0)<5)}else{i=t+16|0;n=i;i=dt[i>>2]|0}u=i>>>27;dt[n>>2]=i<<5;dt[f>>2]=r+-5;if((u+-1|0)>>>0>20){e=0;vt=z;return e|0}dt[R+20>>2]=0;dt[R>>2]=0;dt[R+4>>2]=0;dt[R+8>>2]=0;dt[R+12>>2]=0;pt[R+16>>0]=0;r=R+4|0;i=R+8|0;t:do{if(ne(r,21,0,1,0)|0){s=dt[i>>2]|0;l=dt[r>>2]|0;Yr(l+s|0,0,21-s|0)|0;dt[i>>2]=21;if(u){n=t+4|0;o=t+8|0;a=t+16|0;s=0;do{r=dt[f>>2]|0;if((r|0)<3)do{i=dt[n>>2]|0;if((i|0)==(dt[o>>2]|0))i=0;else{dt[n>>2]=i+1;i=mt[i>>0]|0}r=r+8|0;dt[f>>2]=r;if((r|0)>=33){dt[h>>2]=1154;dt[h+4>>2]=3199;dt[h+8>>2]=1650;br(D,1100,h)|0;yr(D,c)|0;r=dt[f>>2]|0}i=i<<32-r|dt[a>>2];dt[a>>2]=i}while((r|0)<3);else i=dt[a>>2]|0;dt[a>>2]=i<<3;dt[f>>2]=r+-3;pt[l+(mt[1611+s>>0]|0)>>0]=i>>>29;s=s+1|0}while((s|0)!=(u|0))}if(pe(R)|0){s=t+4|0;l=t+8|0;u=t+16|0;i=0;e:while(1){a=O-i|0;r=ge(t,R)|0;r:do{if(r>>>0<17){if((dt[d>>2]|0)>>>0<=i>>>0){dt[m>>2]=1154;dt[m+4>>2]=903;dt[m+8>>2]=1781;br(D,1100,m)|0;yr(D,g)|0}pt[(dt[p>>2]|0)+i>>0]=r;r=i+1|0}else switch(r|0){case 17:{r=dt[f>>2]|0;if((r|0)<3)do{n=dt[s>>2]|0;if((n|0)==(dt[l>>2]|0))n=0;else{dt[s>>2]=n+1;n=mt[n>>0]|0}r=r+8|0;dt[f>>2]=r;if((r|0)>=33){dt[v>>2]=1154;dt[v+4>>2]=3199;dt[v+8>>2]=1650;br(D,1100,v)|0;yr(D,_)|0;r=dt[f>>2]|0}n=n<<32-r|dt[u>>2];dt[u>>2]=n}while((r|0)<3);else n=dt[u>>2]|0;dt[u>>2]=n<<3;dt[f>>2]=r+-3;r=(n>>>29)+3|0;if(r>>>0>a>>>0){r=0;break t}r=r+i|0;break r}case 18:{r=dt[f>>2]|0;if((r|0)<7)do{n=dt[s>>2]|0;if((n|0)==(dt[l>>2]|0))n=0;else{dt[s>>2]=n+1;n=mt[n>>0]|0}r=r+8|0;dt[f>>2]=r;if((r|0)>=33){dt[y>>2]=1154;dt[y+4>>2]=3199;dt[y+8>>2]=1650;br(D,1100,y)|0;yr(D,b)|0;r=dt[f>>2]|0}n=n<<32-r|dt[u>>2];dt[u>>2]=n}while((r|0)<7);else n=dt[u>>2]|0;dt[u>>2]=n<<7;dt[f>>2]=r+-7;r=(n>>>25)+11|0;if(r>>>0>a>>>0){r=0;break t}r=r+i|0;break r}default:{if((r+-19|0)>>>0>=2){M=90;break e}o=dt[f>>2]|0;if((r|0)==19){if((o|0)<2){n=o;while(1){r=dt[s>>2]|0;if((r|0)==(dt[l>>2]|0))o=0;else{dt[s>>2]=r+1;o=mt[r>>0]|0}r=n+8|0;dt[f>>2]=r;if((r|0)>=33){dt[x>>2]=1154;dt[x+4>>2]=3199;dt[x+8>>2]=1650;br(D,1100,x)|0;yr(D,w)|0;r=dt[f>>2]|0}n=o<<32-r|dt[u>>2];dt[u>>2]=n;if((r|0)<2)n=r;else break}}else{n=dt[u>>2]|0;r=o}dt[u>>2]=n<<2;dt[f>>2]=r+-2;o=(n>>>30)+3|0}else{if((o|0)<6){n=o;while(1){r=dt[s>>2]|0;if((r|0)==(dt[l>>2]|0))o=0;else{dt[s>>2]=r+1;o=mt[r>>0]|0}r=n+8|0;dt[f>>2]=r;if((r|0)>=33){dt[T>>2]=1154;dt[T+4>>2]=3199;dt[T+8>>2]=1650;br(D,1100,T)|0;yr(D,k)|0;r=dt[f>>2]|0}n=o<<32-r|dt[u>>2];dt[u>>2]=n;if((r|0)<6)n=r;else break}}else{n=dt[u>>2]|0;r=o}dt[u>>2]=n<<6;dt[f>>2]=r+-6;o=(n>>>26)+7|0}if((i|0)==0|o>>>0>a>>>0){r=0;break t}r=i+-1|0;if((dt[d>>2]|0)>>>0<=r>>>0){dt[S>>2]=1154;dt[S+4>>2]=903;dt[S+8>>2]=1781;br(D,1100,S)|0;yr(D,P)|0}n=pt[(dt[p>>2]|0)+r>>0]|0;if(!(n<<24>>24)){r=0;break t}r=o+i|0;if(i>>>0>=r>>>0){r=i;break r}do{if((dt[d>>2]|0)>>>0<=i>>>0){dt[E>>2]=1154;dt[E+4>>2]=903;dt[E+8>>2]=1781;br(D,1100,E)|0;yr(D,C)|0}pt[(dt[p>>2]|0)+i>>0]=n;i=i+1|0}while((i|0)!=(r|0))}}}while(0);if(O>>>0>r>>>0)i=r;else break}if((M|0)==90){dt[A>>2]=1154;dt[A+4>>2]=3140;dt[A+8>>2]=1632;br(D,1100,A)|0;yr(D,I)|0;r=0;break}if((O|0)==(r|0))r=pe(e)|0;else r=0}else r=0}else{pt[R+16>>0]=1;r=0}}while(0);ce(R);e=r;vt=z;return e|0}function me(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0;h=vt;vt=vt+544|0;s=h+16|0;a=h;o=h+24|0;if(!e){u=0;vt=h;return u|0}if(e>>>0<=16){u=ve(t,e)|0;vt=h;return u|0}l=ve(t,e+-16|0)|0;u=t+20|0;e=dt[u>>2]|0;if((e|0)<16){i=t+4|0;n=t+8|0;r=t+16|0;do{t=dt[i>>2]|0;if((t|0)==(dt[n>>2]|0))t=0;else{dt[i>>2]=t+1;t=mt[t>>0]|0}e=e+8|0;dt[u>>2]=e;if((e|0)>=33){dt[a>>2]=1154;dt[a+4>>2]=3199;dt[a+8>>2]=1650;br(o,1100,a)|0;yr(o,s)|0;e=dt[u>>2]|0}t=t<<32-e|dt[r>>2];dt[r>>2]=t}while((e|0)<16)}else{t=t+16|0;r=t;t=dt[t>>2]|0}dt[r>>2]=t<<16;dt[u>>2]=e+-16;u=t>>>16|l<<16;vt=h;return u|0}function ge(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0;y=vt;vt=vt+608|0;m=y+88|0;d=y+72|0;f=y+64|0;c=y+48|0;h=y+40|0;p=y+24|0;u=y+16|0;l=y;v=y+96|0;g=dt[e+20>>2]|0;_=t+20|0;s=dt[_>>2]|0;do{if((s|0)<24){a=t+4|0;i=dt[a>>2]|0;n=dt[t+8>>2]|0;r=i>>>0>>0;if((s|0)>=16){if(r){dt[a>>2]=i+1;r=mt[i>>0]|0}else r=0;dt[_>>2]=s+8;a=t+16|0;o=r<<24-s|dt[a>>2];dt[a>>2]=o;break}if(r){o=(mt[i>>0]|0)<<8;r=i+1|0}else{o=0;r=i}if(r>>>0>>0){i=mt[r>>0]|0;r=r+1|0}else i=0;dt[a>>2]=r;dt[_>>2]=s+16;a=t+16|0;o=(i|o)<<16-s|dt[a>>2];dt[a>>2]=o}else{o=t+16|0;a=o;o=dt[o>>2]|0}}while(0);n=(o>>>16)+1|0;do{if(n>>>0<=(dt[g+16>>2]|0)>>>0){i=dt[(dt[g+168>>2]|0)+(o>>>(32-(dt[g+8>>2]|0)|0)<<2)>>2]|0;if((i|0)==-1){dt[l>>2]=1154;dt[l+4>>2]=3244;dt[l+8>>2]=1677;br(v,1100,l)|0;yr(v,u)|0}r=i&65535;i=i>>>16;if((dt[e+8>>2]|0)>>>0<=r>>>0){dt[p>>2]=1154;dt[p+4>>2]=902;dt[p+8>>2]=1781;br(v,1100,p)|0;yr(v,h)|0}if((mt[(dt[e+4>>2]|0)+r>>0]|0|0)!=(i|0)){dt[c>>2]=1154;dt[c+4>>2]=3248;dt[c+8>>2]=1694;br(v,1100,c)|0;yr(v,f)|0}}else{i=dt[g+20>>2]|0;while(1){r=i+-1|0;if(n>>>0>(dt[g+28+(r<<2)>>2]|0)>>>0)i=i+1|0;else break}r=(o>>>(32-i|0))+(dt[g+96+(r<<2)>>2]|0)|0;if(r>>>0<(dt[e>>2]|0)>>>0){r=gt[(dt[g+176>>2]|0)+(r<<1)>>1]|0;break}dt[d>>2]=1154;dt[d+4>>2]=3266;dt[d+8>>2]=1632;br(v,1100,d)|0;yr(v,m)|0;_=0;vt=y;return _|0}}while(0);dt[a>>2]=dt[a>>2]<>2]=(dt[_>>2]|0)-i;_=r;vt=y;return _|0}function ve(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0;h=vt;vt=vt+560|0;s=h+40|0;l=h+24|0;r=h;a=h+48|0;if(e>>>0>=33){dt[r>>2]=1154;dt[r+4>>2]=3190;dt[r+8>>2]=1634;br(a,1100,r)|0;yr(a,h+16|0)|0}u=t+20|0;r=dt[u>>2]|0;if((r|0)>=(e|0)){o=t+16|0;a=o;o=dt[o>>2]|0;s=r;l=32-e|0;l=o>>>l;o=o<>2]=o;e=s-e|0;dt[u>>2]=e;vt=h;return l|0}n=t+4|0;o=t+8|0;i=t+16|0;do{t=dt[n>>2]|0;if((t|0)==(dt[o>>2]|0))t=0;else{dt[n>>2]=t+1;t=mt[t>>0]|0}r=r+8|0;dt[u>>2]=r;if((r|0)>=33){dt[l>>2]=1154;dt[l+4>>2]=3199;dt[l+8>>2]=1650;br(a,1100,l)|0;yr(a,s)|0;r=dt[u>>2]|0}t=t<<32-r|dt[i>>2];dt[i>>2]=t}while((r|0)<(e|0));l=32-e|0;l=t>>>l;s=t<>2]=s;e=r-e|0;dt[u>>2]=e;vt=h;return l|0}function _e(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0;d=vt;vt=vt+544|0;f=d+16|0;c=d;h=d+24|0;if((t|0)==0|e>>>0<62){p=0;vt=d;return p|0}u=ae(300,0)|0;if(!u){p=0;vt=d;return p|0}dt[u>>2]=519686845;r=u+4|0;dt[r>>2]=0;i=u+8|0;dt[i>>2]=0;l=u+88|0;n=u+136|0;o=u+160|0;a=l;s=a+44|0;do{dt[a>>2]=0;a=a+4|0}while((a|0)<(s|0));pt[l+44>>0]=0;m=u+184|0;a=u+208|0;s=u+232|0;g=u+252|0;dt[g>>2]=0;dt[g+4>>2]=0;dt[g+8>>2]=0;pt[g+12>>0]=0;g=u+268|0;dt[g>>2]=0;dt[g+4>>2]=0;dt[g+8>>2]=0;pt[g+12>>0]=0;g=u+284|0;dt[g>>2]=0;dt[g+4>>2]=0;dt[g+8>>2]=0;pt[g+12>>0]=0;dt[n>>2]=0;dt[n+4>>2]=0;dt[n+8>>2]=0;dt[n+12>>2]=0;dt[n+16>>2]=0;pt[n+20>>0]=0;dt[o>>2]=0;dt[o+4>>2]=0;dt[o+8>>2]=0;dt[o+12>>2]=0;dt[o+16>>2]=0;pt[o+20>>0]=0;dt[m>>2]=0;dt[m+4>>2]=0;dt[m+8>>2]=0;dt[m+12>>2]=0;dt[m+16>>2]=0;pt[m+20>>0]=0;dt[a>>2]=0;dt[a+4>>2]=0;dt[a+8>>2]=0;dt[a+12>>2]=0;dt[a+16>>2]=0;pt[a+20>>0]=0;dt[s>>2]=0;dt[s+4>>2]=0;dt[s+8>>2]=0;dt[s+12>>2]=0;pt[s+16>>0]=0;do{if(((e>>>0>=74?((mt[t>>0]|0)<<8|(mt[t+1>>0]|0)|0)==18552:0)?((mt[t+2>>0]|0)<<8|(mt[t+3>>0]|0))>>>0>=74:0)?((mt[t+7>>0]|0)<<16|(mt[t+6>>0]|0)<<24|(mt[t+8>>0]|0)<<8|(mt[t+9>>0]|0))>>>0<=e>>>0:0){dt[l>>2]=t;dt[r>>2]=t;dt[i>>2]=e;if(Ee(u)|0){r=dt[l>>2]|0;if((mt[r+39>>0]|0)<<8|(mt[r+40>>0]|0)){if(!(Ce(u)|0))break;if(!(Ae(u)|0))break;r=dt[l>>2]|0}if(!((mt[r+55>>0]|0)<<8|(mt[r+56>>0]|0))){g=u;vt=d;return g|0}if(Ie(u)|0?Oe(u)|0:0){g=u;vt=d;return g|0}}}else p=7}while(0);if((p|0)==7)dt[l>>2]=0;Fe(u);if(!(u&7)){Di[dt[104>>2]&1](u,0,0,1,dt[27]|0)|0;g=0;vt=d;return g|0}else{dt[c>>2]=1154;dt[c+4>>2]=2499;dt[c+8>>2]=1516;br(h,1100,c)|0;yr(h,f)|0;g=0;vt=d;return g|0}return 0}function ye(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0,l=0,u=0,h=0;h=vt;vt=vt+544|0;u=h;l=h+24|0;o=dt[t+88>>2]|0;s=(mt[o+70+(n<<2)+1>>0]|0)<<16|(mt[o+70+(n<<2)>>0]|0)<<24|(mt[o+70+(n<<2)+2>>0]|0)<<8|(mt[o+70+(n<<2)+3>>0]|0);a=n+1|0;if(a>>>0<(mt[o+16>>0]|0)>>>0)o=(mt[o+70+(a<<2)+1>>0]|0)<<16|(mt[o+70+(a<<2)>>0]|0)<<24|(mt[o+70+(a<<2)+2>>0]|0)<<8|(mt[o+70+(a<<2)+3>>0]|0);else o=dt[t+8>>2]|0;if(o>>>0>s>>>0){l=t+4|0;l=dt[l>>2]|0;l=l+s|0;u=o-s|0;u=be(t,l,u,e,r,i,n)|0;vt=h;return u|0}dt[u>>2]=1154;dt[u+4>>2]=3704;dt[u+8>>2]=1792;br(l,1100,u)|0;yr(l,h+16|0)|0;l=t+4|0;l=dt[l>>2]|0;l=l+s|0;u=o-s|0;u=be(t,l,u,e,r,i,n)|0;vt=h;return u|0}function be(t,e,r,i,n,o,a){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;a=a|0;var s=0,l=0,u=0,h=0;h=dt[t+88>>2]|0;l=((mt[h+12>>0]|0)<<8|(mt[h+13>>0]|0))>>>a;u=((mt[h+14>>0]|0)<<8|(mt[h+15>>0]|0))>>>a;l=l>>>0>1?(l+3|0)>>>2:1;u=u>>>0>1?(u+3|0)>>>2:1;h=h+18|0;a=pt[h>>0]|0;a=_t(a<<24>>24==0|a<<24>>24==9?8:16,l)|0;if(o)if((o&3|0)==0&a>>>0<=o>>>0)a=o;else{t=0;return t|0}if((_t(a,u)|0)>>>0>n>>>0){t=0;return t|0}o=(l+1|0)>>>1;s=(u+1|0)>>>1;if(!r){t=0;return t|0}dt[t+92>>2]=e;dt[t+96>>2]=e;dt[t+104>>2]=r;dt[t+100>>2]=e+r;dt[t+108>>2]=0;dt[t+112>>2]=0;switch(mt[h>>0]|0|0){case 0:{Me(t,i,n,a,l,u,o,s)|0;t=1;return t|0}case 4:case 6:case 5:case 3:case 2:{De(t,i,n,a,l,u,o,s)|0;t=1;return t|0}case 9:{Re(t,i,n,a,l,u,o,s)|0;t=1;return t|0}case 8:case 7:{ze(t,i,n,a,l,u,o,s)|0;t=1;return t|0}default:{t=0;return t|0}}return 0}function xe(t,e){t=t|0;e=e|0;var r=0,i=0;i=vt;vt=vt+48|0;r=i;dt[r>>2]=40;ue(t,e,r)|0;vt=i;return dt[r+4>>2]|0}function we(t,e){t=t|0;e=e|0;var r=0,i=0;i=vt;vt=vt+48|0;r=i;dt[r>>2]=40;ue(t,e,r)|0;vt=i;return dt[r+8>>2]|0}function Te(t,e){t=t|0;e=e|0;var r=0,i=0;i=vt;vt=vt+48|0;r=i;dt[r>>2]=40;ue(t,e,r)|0;vt=i;return dt[r+12>>2]|0}function ke(t,e){t=t|0;e=e|0;var r=0,i=0;i=vt;vt=vt+48|0;r=i;dt[r>>2]=40;ue(t,e,r)|0;vt=i;return dt[r+32>>2]|0}function Se(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0,a=0,s=0,l=0,u=0;l=vt;vt=vt+576|0;a=l+56|0;o=l+40|0;n=l+64|0;u=l;dt[u>>2]=40;ue(t,e,u)|0;i=(((dt[u+4>>2]|0)>>>r)+3|0)>>>2;e=(((dt[u+8>>2]|0)>>>r)+3|0)>>>2;r=u+32|0;t=dt[r+4>>2]|0;do{switch(dt[r>>2]|0){case 0:{if(!t)t=8;else s=13;break}case 1:{if(!t)s=12;else s=13;break}case 2:{if(!t)s=12;else s=13;break}case 3:{if(!t)s=12;else s=13;break}case 4:{if(!t)s=12;else s=13;break}case 5:{if(!t)s=12;else s=13;break}case 6:{if(!t)s=12;else s=13;break}case 7:{if(!t)s=12;else s=13;break}case 8:{if(!t)s=12;else s=13;break}case 9:{if(!t)t=8;else s=13;break}default:s=13}}while(0);if((s|0)==12)t=16;else if((s|0)==13){dt[o>>2]=1154;dt[o+4>>2]=2663;dt[o+8>>2]=1535;br(n,1100,o)|0;yr(n,a)|0;t=0}u=_t(_t(e,i)|0,t)|0;vt=l;return u|0}function Pe(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0;d=vt;vt=vt+608|0;f=d+80|0;p=d+64|0;s=d+56|0;a=d+40|0;h=d+88|0;m=d;c=d+84|0;dt[m>>2]=40;ue(t,e,m)|0;l=(((dt[m+4>>2]|0)>>>n)+3|0)>>>2;m=m+32|0;o=dt[m+4>>2]|0;do{switch(dt[m>>2]|0){case 0:{if(!o)o=8;else u=13;break}case 1:{if(!o)u=12;else u=13;break}case 2:{if(!o)u=12;else u=13;break}case 3:{if(!o)u=12;else u=13;break}case 4:{if(!o)u=12;else u=13;break}case 5:{if(!o)u=12;else u=13;break}case 6:{if(!o)u=12;else u=13;break}case 7:{if(!o)u=12;else u=13;break}case 8:{if(!o)u=12;else u=13;break}case 9:{if(!o)o=8;else u=13;break}default:u=13}}while(0);if((u|0)==12)o=16;else if((u|0)==13){dt[a>>2]=1154;dt[a+4>>2]=2663;dt[a+8>>2]=1535;br(h,1100,a)|0;yr(h,s)|0;o=0}s=_t(o,l)|0;a=_e(t,e)|0;dt[c>>2]=r;o=(a|0)==0;if(!(n>>>0>15|(i>>>0<8|o))?(dt[a>>2]|0)==519686845:0)ye(a,c,i,s,n)|0;if(o){vt=d;return}if((dt[a>>2]|0)!=519686845){vt=d;return}Fe(a);if(!(a&7)){Di[dt[104>>2]&1](a,0,0,1,dt[27]|0)|0;vt=d;return}else{dt[p>>2]=1154;dt[p+4>>2]=2499;dt[p+8>>2]=1516;br(h,1100,p)|0;yr(h,f)|0;vt=d;return}}function Ee(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0;a=t+92|0;i=dt[t+4>>2]|0;o=t+88|0;n=dt[o>>2]|0;e=(mt[n+68>>0]|0)<<8|(mt[n+67>>0]|0)<<16|(mt[n+69>>0]|0);r=i+e|0;n=(mt[n+65>>0]|0)<<8|(mt[n+66>>0]|0);if(!n){t=0;return t|0}dt[a>>2]=r;dt[t+96>>2]=r;dt[t+104>>2]=n;dt[t+100>>2]=i+(n+e);dt[t+108>>2]=0;dt[t+112>>2]=0;if(!(de(a,t+116|0)|0)){t=0;return t|0}e=dt[o>>2]|0;do{if(!((mt[e+39>>0]|0)<<8|(mt[e+40>>0]|0))){if(!((mt[e+55>>0]|0)<<8|(mt[e+56>>0]|0))){t=0;return t|0}}else{if(!(de(a,t+140|0)|0)){t=0;return t|0}if(de(a,t+188|0)|0){e=dt[o>>2]|0;break}else{t=0;return t|0}}}while(0);if((mt[e+55>>0]|0)<<8|(mt[e+56>>0]|0)){if(!(de(a,t+164|0)|0)){t=0;return t|0}if(!(de(a,t+212|0)|0)){t=0;return t|0}}t=1;return t|0}function Ce(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0;d=vt;vt=vt+592|0;l=d+16|0;s=d;a=d+72|0;p=d+24|0;i=t+88|0;e=dt[i>>2]|0;f=(mt[e+39>>0]|0)<<8|(mt[e+40>>0]|0);h=t+236|0;o=t+240|0;r=dt[o>>2]|0;if((r|0)!=(f|0)){if(r>>>0<=f>>>0){do{if((dt[t+244>>2]|0)>>>0>>0){if(ne(h,f,(r+1|0)==(f|0),4,0)|0){e=dt[o>>2]|0;break}pt[t+248>>0]=1;p=0;vt=d;return p|0}else e=r}while(0);Yr((dt[h>>2]|0)+(e<<2)|0,0,f-e<<2|0)|0;e=dt[i>>2]|0}dt[o>>2]=f}u=t+92|0;r=dt[t+4>>2]|0;i=(mt[e+34>>0]|0)<<8|(mt[e+33>>0]|0)<<16|(mt[e+35>>0]|0);n=r+i|0;e=(mt[e+37>>0]|0)<<8|(mt[e+36>>0]|0)<<16|(mt[e+38>>0]|0);if(!e){p=0;vt=d;return p|0}dt[u>>2]=n;dt[t+96>>2]=n;dt[t+104>>2]=e;dt[t+100>>2]=r+(e+i);dt[t+108>>2]=0;dt[t+112>>2]=0;dt[p+20>>2]=0;dt[p>>2]=0;dt[p+4>>2]=0;dt[p+8>>2]=0;dt[p+12>>2]=0;pt[p+16>>0]=0;t=p+24|0;dt[p+44>>2]=0;dt[t>>2]=0;dt[t+4>>2]=0;dt[t+8>>2]=0;dt[t+12>>2]=0;pt[t+16>>0]=0;if(de(u,p)|0?(c=p+24|0,de(u,c)|0):0){if(!(dt[o>>2]|0)){dt[s>>2]=1154;dt[s+4>>2]=903;dt[s+8>>2]=1781;br(a,1100,s)|0;yr(a,l)|0}if(!f)e=1;else{i=0;n=0;o=0;e=0;a=0;t=0;s=0;r=dt[h>>2]|0;while(1){i=(ge(u,p)|0)+i&31;n=(ge(u,c)|0)+n&63;o=(ge(u,p)|0)+o&31;e=(ge(u,p)|0)+e|0;a=(ge(u,c)|0)+a&63;t=(ge(u,p)|0)+t&31;dt[r>>2]=n<<5|i<<11|o|e<<27|a<<21|t<<16;s=s+1|0;if((s|0)==(f|0)){e=1;break}else{e=e&31;r=r+4|0}}}}else e=0;ce(p+24|0);ce(p);p=e;vt=d;return p|0}function Ae(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,E=0;S=vt;vt=vt+1024|0;s=S+16|0;a=S;o=S+504|0;k=S+480|0;w=S+284|0;T=S+88|0;x=S+24|0;n=dt[t+88>>2]|0;b=(mt[n+47>>0]|0)<<8|(mt[n+48>>0]|0);y=t+92|0;e=dt[t+4>>2]|0;r=(mt[n+42>>0]|0)<<8|(mt[n+41>>0]|0)<<16|(mt[n+43>>0]|0);i=e+r|0;n=(mt[n+45>>0]|0)<<8|(mt[n+44>>0]|0)<<16|(mt[n+46>>0]|0);if(!n){k=0;vt=S;return k|0}dt[y>>2]=i;dt[t+96>>2]=i;dt[t+104>>2]=n;dt[t+100>>2]=e+(n+r);dt[t+108>>2]=0;dt[t+112>>2]=0;dt[k+20>>2]=0;dt[k>>2]=0;dt[k+4>>2]=0;dt[k+8>>2]=0;dt[k+12>>2]=0;pt[k+16>>0]=0;if(de(y,k)|0){r=0;i=-3;n=-3;while(1){dt[w+(r<<2)>>2]=i;dt[T+(r<<2)>>2]=n;e=(i|0)>2;r=r+1|0;if((r|0)==49)break;else{i=e?-3:i+1|0;n=(e&1)+n|0}}e=x;r=e+64|0;do{dt[e>>2]=0;e=e+4|0}while((e|0)<(r|0));_=t+252|0;r=t+256|0;e=dt[r>>2]|0;t:do{if((e|0)==(b|0))l=13;else{if(e>>>0<=b>>>0){do{if((dt[t+260>>2]|0)>>>0>>0)if(ne(_,b,(e+1|0)==(b|0),4,0)|0){e=dt[r>>2]|0;break}else{pt[t+264>>0]=1;e=0;break t}}while(0);Yr((dt[_>>2]|0)+(e<<2)|0,0,b-e<<2|0)|0}dt[r>>2]=b;l=13}}while(0);do{if((l|0)==13){if(!b){dt[a>>2]=1154;dt[a+4>>2]=903;dt[a+8>>2]=1781;br(o,1100,a)|0;yr(o,s)|0;e=1;break}i=x+4|0;n=x+8|0;t=x+12|0;o=x+16|0;a=x+20|0;s=x+24|0;l=x+28|0;u=x+32|0;h=x+36|0;c=x+40|0;f=x+44|0;p=x+48|0;d=x+52|0;m=x+56|0;g=x+60|0;v=0;r=dt[_>>2]|0;while(1){e=0;do{P=ge(y,k)|0;_=e<<1;E=x+(_<<2)|0;dt[E>>2]=(dt[E>>2]|0)+(dt[w+(P<<2)>>2]|0)&3;_=x+((_|1)<<2)|0;dt[_>>2]=(dt[_>>2]|0)+(dt[T+(P<<2)>>2]|0)&3;e=e+1|0}while((e|0)!=8);dt[r>>2]=(mt[1725+(dt[i>>2]|0)>>0]|0)<<2|(mt[1725+(dt[x>>2]|0)>>0]|0)|(mt[1725+(dt[n>>2]|0)>>0]|0)<<4|(mt[1725+(dt[t>>2]|0)>>0]|0)<<6|(mt[1725+(dt[o>>2]|0)>>0]|0)<<8|(mt[1725+(dt[a>>2]|0)>>0]|0)<<10|(mt[1725+(dt[s>>2]|0)>>0]|0)<<12|(mt[1725+(dt[l>>2]|0)>>0]|0)<<14|(mt[1725+(dt[u>>2]|0)>>0]|0)<<16|(mt[1725+(dt[h>>2]|0)>>0]|0)<<18|(mt[1725+(dt[c>>2]|0)>>0]|0)<<20|(mt[1725+(dt[f>>2]|0)>>0]|0)<<22|(mt[1725+(dt[p>>2]|0)>>0]|0)<<24|(mt[1725+(dt[d>>2]|0)>>0]|0)<<26|(mt[1725+(dt[m>>2]|0)>>0]|0)<<28|(mt[1725+(dt[g>>2]|0)>>0]|0)<<30;v=v+1|0;if((v|0)==(b|0)){e=1;break}else r=r+4|0}}}while(0)}else e=0;ce(k);E=e;vt=S;return E|0}function Ie(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0;f=vt;vt=vt+560|0;l=f+16|0;s=f;a=f+48|0;c=f+24|0;n=dt[t+88>>2]|0;h=(mt[n+55>>0]|0)<<8|(mt[n+56>>0]|0);u=t+92|0;e=dt[t+4>>2]|0;r=(mt[n+50>>0]|0)<<8|(mt[n+49>>0]|0)<<16|(mt[n+51>>0]|0);i=e+r|0;n=(mt[n+53>>0]|0)<<8|(mt[n+52>>0]|0)<<16|(mt[n+54>>0]|0);if(!n){c=0;vt=f;return c|0}dt[u>>2]=i;dt[t+96>>2]=i;dt[t+104>>2]=n;dt[t+100>>2]=e+(n+r);dt[t+108>>2]=0;dt[t+112>>2]=0;dt[c+20>>2]=0;dt[c>>2]=0;dt[c+4>>2]=0;dt[c+8>>2]=0;dt[c+12>>2]=0;pt[c+16>>0]=0;t:do{if(de(u,c)|0){o=t+268|0;r=t+272|0;e=dt[r>>2]|0;if((e|0)!=(h|0)){if(e>>>0<=h>>>0){do{if((dt[t+276>>2]|0)>>>0>>0)if(ne(o,h,(e+1|0)==(h|0),2,0)|0){e=dt[r>>2]|0;break}else{pt[t+280>>0]=1;e=0;break t}}while(0);Yr((dt[o>>2]|0)+(e<<1)|0,0,h-e<<1|0)|0}dt[r>>2]=h}if(!h){dt[s>>2]=1154;dt[s+4>>2]=903;dt[s+8>>2]=1781;br(a,1100,s)|0;yr(a,l)|0;e=1;break}r=0;i=0;n=0;e=dt[o>>2]|0;while(1){l=ge(u,c)|0;r=l+r&255;i=(ge(u,c)|0)+i&255;$[e>>1]=i<<8|r;n=n+1|0;if((n|0)==(h|0)){e=1;break}else e=e+2|0}}else e=0}while(0);ce(c);c=e;vt=f;return c|0}function Oe(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,E=0;S=vt;vt=vt+2432|0;s=S+16|0;a=S;o=S+1912|0;k=S+1888|0;w=S+988|0;T=S+88|0;x=S+24|0;n=dt[t+88>>2]|0;b=(mt[n+63>>0]|0)<<8|(mt[n+64>>0]|0);y=t+92|0;e=dt[t+4>>2]|0;r=(mt[n+58>>0]|0)<<8|(mt[n+57>>0]|0)<<16|(mt[n+59>>0]|0);i=e+r|0;n=(mt[n+61>>0]|0)<<8|(mt[n+60>>0]|0)<<16|(mt[n+62>>0]|0);if(!n){k=0;vt=S;return k|0}dt[y>>2]=i;dt[t+96>>2]=i;dt[t+104>>2]=n;dt[t+100>>2]=e+(n+r);dt[t+108>>2]=0;dt[t+112>>2]=0;dt[k+20>>2]=0;dt[k>>2]=0;dt[k+4>>2]=0;dt[k+8>>2]=0;dt[k+12>>2]=0;pt[k+16>>0]=0;if(de(y,k)|0){r=0;i=-7;n=-7;while(1){dt[w+(r<<2)>>2]=i;dt[T+(r<<2)>>2]=n;e=(i|0)>6;r=r+1|0;if((r|0)==225)break;else{i=e?-7:i+1|0;n=(e&1)+n|0}}e=x;r=e+64|0;do{dt[e>>2]=0;e=e+4|0}while((e|0)<(r|0));_=t+284|0;r=b*3|0;i=t+288|0;e=dt[i>>2]|0;t:do{if((e|0)==(r|0))l=13;else{if(e>>>0<=r>>>0){do{if((dt[t+292>>2]|0)>>>0>>0)if(ne(_,r,(e+1|0)==(r|0),2,0)|0){e=dt[i>>2]|0;break}else{pt[t+296>>0]=1;e=0;break t}}while(0);Yr((dt[_>>2]|0)+(e<<1)|0,0,r-e<<1|0)|0}dt[i>>2]=r;l=13}}while(0);do{if((l|0)==13){if(!b){dt[a>>2]=1154;dt[a+4>>2]=903;dt[a+8>>2]=1781;br(o,1100,a)|0;yr(o,s)|0;e=1;break}i=x+4|0;n=x+8|0;t=x+12|0;o=x+16|0;a=x+20|0;s=x+24|0;l=x+28|0;u=x+32|0;h=x+36|0;c=x+40|0;f=x+44|0;p=x+48|0;d=x+52|0;m=x+56|0;g=x+60|0;v=0;r=dt[_>>2]|0;while(1){e=0;do{P=ge(y,k)|0;_=e<<1;E=x+(_<<2)|0;dt[E>>2]=(dt[E>>2]|0)+(dt[w+(P<<2)>>2]|0)&7;_=x+((_|1)<<2)|0;dt[_>>2]=(dt[_>>2]|0)+(dt[T+(P<<2)>>2]|0)&7;e=e+1|0}while((e|0)!=8);P=mt[1729+(dt[a>>2]|0)>>0]|0;$[r>>1]=(mt[1729+(dt[i>>2]|0)>>0]|0)<<3|(mt[1729+(dt[x>>2]|0)>>0]|0)|(mt[1729+(dt[n>>2]|0)>>0]|0)<<6|(mt[1729+(dt[t>>2]|0)>>0]|0)<<9|(mt[1729+(dt[o>>2]|0)>>0]|0)<<12|P<<15;E=mt[1729+(dt[c>>2]|0)>>0]|0;$[r+2>>1]=(mt[1729+(dt[s>>2]|0)>>0]|0)<<2|P>>>1|(mt[1729+(dt[l>>2]|0)>>0]|0)<<5|(mt[1729+(dt[u>>2]|0)>>0]|0)<<8|(mt[1729+(dt[h>>2]|0)>>0]|0)<<11|E<<14;$[r+4>>1]=(mt[1729+(dt[f>>2]|0)>>0]|0)<<1|E>>>2|(mt[1729+(dt[p>>2]|0)>>0]|0)<<4|(mt[1729+(dt[d>>2]|0)>>0]|0)<<7|(mt[1729+(dt[m>>2]|0)>>0]|0)<<10|(mt[1729+(dt[g>>2]|0)>>0]|0)<<13;v=v+1|0;if((v|0)==(b|0)){e=1;break}else r=r+6|0}}}while(0)}else e=0;ce(k);E=e;vt=S;return E|0}function Me(t,e,r,i,n,o,a,s){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;a=a|0;s=s|0;var l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,E=0,C=0,A=0,I=0,O=0,M=0,D=0,R=0,z=0,F=0,L=0,j=0,N=0,B=0,U=0,X=0,H=0,W=0,q=0,G=0,V=0,Y=0,Z=0,J=0,K=0,Q=0,$=0,tt=0,et=0,rt=0,it=0,nt=0,ot=0,at=0,st=0,lt=0,ut=0,ht=0,ct=0,ft=0;ht=vt;vt=vt+720|0;ut=ht+184|0;st=ht+168|0;at=ht+160|0;ot=ht+144|0;nt=ht+136|0;it=ht+120|0;rt=ht+112|0;tt=ht+96|0;$=ht+88|0;Q=ht+72|0;K=ht+64|0;J=ht+48|0;Z=ht+40|0;lt=ht+24|0;et=ht+16|0;Y=ht;G=ht+208|0;V=ht+192|0;N=t+240|0;B=dt[N>>2]|0;H=t+256|0;W=dt[H>>2]|0;r=pt[(dt[t+88>>2]|0)+17>>0]|0;q=i>>>2;if(!(r<<24>>24)){vt=ht;return 1}U=(s|0)==0;X=s+-1|0;M=(o&1|0)!=0;D=i<<1;R=t+92|0;z=t+116|0;F=t+140|0;L=t+236|0;j=a+-1|0;O=(n&1|0)!=0;I=t+188|0;S=t+252|0;P=q+1|0;E=q+2|0;C=q+3|0;A=j<<4;T=r&255;r=0;o=0;n=1;k=0;do{if(!U){x=dt[e+(k<<2)>>2]|0;w=0;while(1){_=w&1;l=(_|0)==0;v=(_<<5^32)+-16|0;_=(_<<1^2)+-1|0;b=l?a:-1;u=l?0:j;t=(w|0)==(X|0);y=M&t;if((u|0)!=(b|0)){g=M&t^1;m=l?x:x+A|0;while(1){if((n|0)==1)n=ge(R,z)|0|512;d=n&7;n=n>>>3;l=mt[1823+d>>0]|0;t=0;do{f=(ge(R,F)|0)+o|0;p=f-B|0;o=p>>31;o=o&f|p&~o;if((dt[N>>2]|0)>>>0<=o>>>0){dt[Y>>2]=1154;dt[Y+4>>2]=903;dt[Y+8>>2]=1781;br(G,1100,Y)|0;yr(G,et)|0}dt[V+(t<<2)>>2]=dt[(dt[L>>2]|0)+(o<<2)>>2];t=t+1|0}while(t>>>0>>0);p=O&(u|0)==(j|0);if(y|p){f=0;do{h=_t(f,i)|0;t=m+h|0;l=(f|0)==0|g;c=f<<1;ft=(ge(R,I)|0)+r|0;ct=ft-W|0;r=ct>>31;r=r&ft|ct&~r;do{if(p){if(!l){ct=(ge(R,I)|0)+r|0;ft=ct-W|0;r=ft>>31;r=r&ct|ft&~r;break}dt[t>>2]=dt[V+((mt[1831+(d<<2)+c>>0]|0)<<2)>>2];if((dt[H>>2]|0)>>>0<=r>>>0){dt[ot>>2]=1154;dt[ot+4>>2]=903;dt[ot+8>>2]=1781;br(G,1100,ot)|0;yr(G,at)|0}dt[m+(h+4)>>2]=dt[(dt[S>>2]|0)+(r<<2)>>2];ct=(ge(R,I)|0)+r|0;ft=ct-W|0;r=ft>>31;r=r&ct|ft&~r}else{if(!l){ct=(ge(R,I)|0)+r|0;ft=ct-W|0;r=ft>>31;r=r&ct|ft&~r;break}dt[t>>2]=dt[V+((mt[1831+(d<<2)+c>>0]|0)<<2)>>2];if((dt[H>>2]|0)>>>0<=r>>>0){dt[it>>2]=1154;dt[it+4>>2]=903;dt[it+8>>2]=1781;br(G,1100,it)|0;yr(G,nt)|0}dt[m+(h+4)>>2]=dt[(dt[S>>2]|0)+(r<<2)>>2];ct=(ge(R,I)|0)+r|0;ft=ct-W|0;r=ft>>31;r=r&ct|ft&~r;dt[m+(h+8)>>2]=dt[V+((mt[(c|1)+(1831+(d<<2))>>0]|0)<<2)>>2];if((dt[H>>2]|0)>>>0<=r>>>0){dt[st>>2]=1154;dt[st+4>>2]=903;dt[st+8>>2]=1781;br(G,1100,st)|0;yr(G,ut)|0}dt[m+(h+12)>>2]=dt[(dt[S>>2]|0)+(r<<2)>>2]}}while(0);f=f+1|0}while((f|0)!=2)}else{dt[m>>2]=dt[V+((mt[1831+(d<<2)>>0]|0)<<2)>>2];ct=(ge(R,I)|0)+r|0;ft=ct-W|0;r=ft>>31;r=r&ct|ft&~r;if((dt[H>>2]|0)>>>0<=r>>>0){dt[lt>>2]=1154;dt[lt+4>>2]=903;dt[lt+8>>2]=1781;br(G,1100,lt)|0;yr(G,Z)|0}dt[m+4>>2]=dt[(dt[S>>2]|0)+(r<<2)>>2];dt[m+8>>2]=dt[V+((mt[1831+(d<<2)+1>>0]|0)<<2)>>2];ct=(ge(R,I)|0)+r|0;ft=ct-W|0;r=ft>>31;r=r&ct|ft&~r;if((dt[H>>2]|0)>>>0<=r>>>0){dt[J>>2]=1154;dt[J+4>>2]=903;dt[J+8>>2]=1781;br(G,1100,J)|0;yr(G,K)|0}dt[m+12>>2]=dt[(dt[S>>2]|0)+(r<<2)>>2];dt[m+(q<<2)>>2]=dt[V+((mt[1831+(d<<2)+2>>0]|0)<<2)>>2];ct=(ge(R,I)|0)+r|0;ft=ct-W|0;r=ft>>31;r=r&ct|ft&~r;if((dt[H>>2]|0)>>>0<=r>>>0){dt[Q>>2]=1154;dt[Q+4>>2]=903;dt[Q+8>>2]=1781;br(G,1100,Q)|0;yr(G,$)|0}dt[m+(P<<2)>>2]=dt[(dt[S>>2]|0)+(r<<2)>>2];dt[m+(E<<2)>>2]=dt[V+((mt[1831+(d<<2)+3>>0]|0)<<2)>>2];ct=(ge(R,I)|0)+r|0;ft=ct-W|0;r=ft>>31;r=r&ct|ft&~r;if((dt[H>>2]|0)>>>0<=r>>>0){dt[tt>>2]=1154;dt[tt+4>>2]=903;dt[tt+8>>2]=1781;br(G,1100,tt)|0;yr(G,rt)|0}dt[m+(C<<2)>>2]=dt[(dt[S>>2]|0)+(r<<2)>>2]}u=u+_|0;if((u|0)==(b|0))break;else m=m+v|0}}w=w+1|0;if((w|0)==(s|0))break;else x=x+D|0}}k=k+1|0}while((k|0)!=(T|0));vt=ht;return 1}function De(t,e,r,i,n,o,a,s){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;a=a|0;s=s|0;var l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,E=0,C=0,A=0,I=0,O=0,M=0,D=0,R=0,z=0,F=0,L=0,j=0,N=0,B=0,U=0,X=0,H=0,W=0,q=0,G=0,V=0,Y=0,Z=0,J=0,K=0,Q=0,$=0,tt=0,et=0,rt=0,it=0,nt=0,ot=0,at=0,st=0,lt=0,ut=0,ht=0,ct=0,ft=0;ct=vt;vt=vt+640|0;lt=ct+88|0;st=ct+72|0;at=ct+64|0;ot=ct+48|0;nt=ct+40|0;ht=ct+24|0;ut=ct+16|0;it=ct;et=ct+128|0;rt=ct+112|0;tt=ct+96|0;N=t+240|0;B=dt[N>>2]|0;H=t+256|0;K=dt[H>>2]|0;Q=t+272|0;$=dt[Q>>2]|0;r=dt[t+88>>2]|0;U=(mt[r+63>>0]|0)<<8|(mt[r+64>>0]|0);r=pt[r+17>>0]|0;if(!(r<<24>>24)){vt=ct;return 1}X=(s|0)==0;W=s+-1|0;q=i<<1;G=t+92|0;V=t+116|0;Y=a+-1|0;Z=t+212|0;J=t+188|0;j=(n&1|0)==0;L=(o&1|0)==0;O=t+288|0;M=t+284|0;D=t+252|0;R=t+140|0;z=t+236|0;F=t+164|0;A=t+268|0;I=Y<<5;E=r&255;r=0;n=0;o=0;t=0;l=1;C=0;do{if(!X){S=dt[e+(C<<2)>>2]|0;P=0;while(1){T=P&1;u=(T|0)==0;w=(T<<6^64)+-32|0;T=(T<<1^2)+-1|0;k=u?a:-1;h=u?0:Y;if((h|0)!=(k|0)){x=L|(P|0)!=(W|0);b=u?S:S+I|0;while(1){if((l|0)==1)l=ge(G,V)|0|512;y=l&7;l=l>>>3;c=mt[1823+y>>0]|0;u=0;do{v=(ge(G,F)|0)+n|0;_=v-$|0;n=_>>31;n=n&v|_&~n;if((dt[Q>>2]|0)>>>0<=n>>>0){dt[it>>2]=1154;dt[it+4>>2]=903;dt[it+8>>2]=1781;br(et,1100,it)|0;yr(et,ut)|0}dt[tt+(u<<2)>>2]=gt[(dt[A>>2]|0)+(n<<1)>>1];u=u+1|0}while(u>>>0>>0);u=0;do{v=(ge(G,R)|0)+t|0;_=v-B|0;t=_>>31;t=t&v|_&~t;if((dt[N>>2]|0)>>>0<=t>>>0){dt[ht>>2]=1154;dt[ht+4>>2]=903;dt[ht+8>>2]=1781;br(et,1100,ht)|0;yr(et,nt)|0}dt[rt+(u<<2)>>2]=dt[(dt[z>>2]|0)+(t<<2)>>2];u=u+1|0}while(u>>>0>>0);_=j|(h|0)!=(Y|0);g=0;v=b;while(1){m=x|(g|0)==0;d=g<<1;f=0;p=v;while(1){c=(ge(G,Z)|0)+r|0;u=c-U|0;r=u>>31;r=r&c|u&~r;u=(ge(G,J)|0)+o|0;c=u-K|0;o=c>>31;o=o&u|c&~o;if((_|(f|0)==0)&m){u=mt[f+d+(1831+(y<<2))>>0]|0;c=r*3|0;if((dt[O>>2]|0)>>>0<=c>>>0){dt[ot>>2]=1154;dt[ot+4>>2]=903;dt[ot+8>>2]=1781;br(et,1100,ot)|0;yr(et,at)|0}ft=dt[M>>2]|0;dt[p>>2]=(gt[ft+(c<<1)>>1]|0)<<16|dt[tt+(u<<2)>>2];dt[p+4>>2]=(gt[ft+(c+2<<1)>>1]|0)<<16|(gt[ft+(c+1<<1)>>1]|0);dt[p+8>>2]=dt[rt+(u<<2)>>2];if((dt[H>>2]|0)>>>0<=o>>>0){dt[st>>2]=1154;dt[st+4>>2]=903;dt[st+8>>2]=1781;br(et,1100,st)|0;yr(et,lt)|0}dt[p+12>>2]=dt[(dt[D>>2]|0)+(o<<2)>>2]}f=f+1|0;if((f|0)==2)break;else p=p+16|0}g=g+1|0;if((g|0)==2)break;else v=v+i|0}h=h+T|0;if((h|0)==(k|0))break;else b=b+w|0}}P=P+1|0;if((P|0)==(s|0))break;else S=S+q|0}}C=C+1|0}while((C|0)!=(E|0));vt=ct;return 1}function Re(t,e,r,i,n,o,a,s){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;a=a|0;s=s|0;var l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,E=0,C=0,A=0,I=0,O=0,M=0,D=0,R=0,z=0,F=0,L=0,j=0,N=0,B=0,U=0,X=0,H=0,W=0,q=0,G=0,V=0,Y=0,Z=0,J=0,K=0;K=vt;vt=vt+608|0;Y=K+64|0;V=K+48|0;G=K+40|0;J=K+24|0;Z=K+16|0;q=K;W=K+88|0;H=K+72|0;D=t+272|0;R=dt[D>>2]|0;r=dt[t+88>>2]|0;z=(mt[r+63>>0]|0)<<8|(mt[r+64>>0]|0);r=pt[r+17>>0]|0;if(!(r<<24>>24)){vt=K;return 1}F=(s|0)==0;L=s+-1|0;j=i<<1;N=t+92|0;B=t+116|0;U=a+-1|0;X=t+212|0;M=(o&1|0)==0;A=t+288|0;I=t+284|0;O=t+164|0;E=t+268|0;C=U<<4;P=r&255;S=(n&1|0)!=0;r=0;o=0;t=1;k=0;do{if(!F){w=dt[e+(k<<2)>>2]|0;T=0;while(1){b=T&1;n=(b|0)==0;y=(b<<5^32)+-16|0;b=(b<<1^2)+-1|0;x=n?a:-1;l=n?0:U;if((l|0)!=(x|0)){_=M|(T|0)!=(L|0);v=n?w:w+C|0;while(1){if((t|0)==1)t=ge(N,B)|0|512;g=t&7;t=t>>>3;u=mt[1823+g>>0]|0;n=0;do{d=(ge(N,O)|0)+o|0;m=d-R|0;o=m>>31;o=o&d|m&~o;if((dt[D>>2]|0)>>>0<=o>>>0){dt[q>>2]=1154;dt[q+4>>2]=903;dt[q+8>>2]=1781;br(W,1100,q)|0;yr(W,Z)|0}dt[H+(n<<2)>>2]=gt[(dt[E>>2]|0)+(o<<1)>>1];n=n+1|0}while(n>>>0>>0);m=(l|0)==(U|0)&S;p=0;d=v;while(1){f=_|(p|0)==0;c=p<<1;n=(ge(N,X)|0)+r|0;h=n-z|0;u=h>>31;u=u&n|h&~u;if(f){r=mt[1831+(g<<2)+c>>0]|0;n=u*3|0;if((dt[A>>2]|0)>>>0<=n>>>0){dt[J>>2]=1154;dt[J+4>>2]=903;dt[J+8>>2]=1781;br(W,1100,J)|0;yr(W,G)|0}h=dt[I>>2]|0;dt[d>>2]=(gt[h+(n<<1)>>1]|0)<<16|dt[H+(r<<2)>>2];dt[d+4>>2]=(gt[h+(n+2<<1)>>1]|0)<<16|(gt[h+(n+1<<1)>>1]|0)}h=d+8|0;n=(ge(N,X)|0)+u|0;u=n-z|0;r=u>>31;r=r&n|u&~r;if(!(m|f^1)){n=mt[(c|1)+(1831+(g<<2))>>0]|0;u=r*3|0;if((dt[A>>2]|0)>>>0<=u>>>0){dt[V>>2]=1154;dt[V+4>>2]=903;dt[V+8>>2]=1781;br(W,1100,V)|0;yr(W,Y)|0}f=dt[I>>2]|0;dt[h>>2]=(gt[f+(u<<1)>>1]|0)<<16|dt[H+(n<<2)>>2];dt[d+12>>2]=(gt[f+(u+2<<1)>>1]|0)<<16|(gt[f+(u+1<<1)>>1]|0)}p=p+1|0;if((p|0)==2)break;else d=d+i|0}l=l+b|0;if((l|0)==(x|0))break;else v=v+y|0}}T=T+1|0;if((T|0)==(s|0))break;else w=w+j|0}}k=k+1|0}while((k|0)!=(P|0));vt=K;return 1}function ze(t,e,r,i,n,o,a,s){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;a=a|0;s=s|0;var l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,E=0,C=0,A=0,I=0,O=0,M=0,D=0,R=0,z=0,F=0,L=0,j=0,N=0,B=0,U=0,X=0,H=0,W=0,q=0,G=0,V=0,Y=0,Z=0,J=0,K=0,Q=0,$=0,tt=0,et=0,rt=0,it=0,nt=0,ot=0,at=0;at=vt;vt=vt+640|0;it=at+88|0;rt=at+72|0;et=at+64|0;tt=at+48|0;$=at+40|0;ot=at+24|0;nt=at+16|0;Q=at;K=at+128|0;Z=at+112|0;J=at+96|0;N=t+272|0;B=dt[N>>2]|0;r=dt[t+88>>2]|0;U=(mt[r+63>>0]|0)<<8|(mt[r+64>>0]|0);r=pt[r+17>>0]|0;if(!(r<<24>>24)){vt=at;return 1}X=(s|0)==0;H=s+-1|0;W=i<<1;q=t+92|0;G=t+116|0;V=a+-1|0;Y=t+212|0;j=(n&1|0)==0;L=(o&1|0)==0;R=t+288|0;z=t+284|0;F=t+164|0;M=t+268|0;D=V<<5;I=r&255;r=0;n=0;o=0;t=0;l=1;O=0;do{if(!X){C=dt[e+(O<<2)>>2]|0;A=0;while(1){P=A&1;u=(P|0)==0;S=(P<<6^64)+-32|0;P=(P<<1^2)+-1|0;E=u?a:-1;h=u?0:V;if((h|0)!=(E|0)){k=L|(A|0)!=(H|0);T=u?C:C+D|0;while(1){if((l|0)==1)l=ge(q,G)|0|512;w=l&7;l=l>>>3;c=mt[1823+w>>0]|0;u=0;do{b=(ge(q,F)|0)+t|0;x=b-B|0;t=x>>31;t=t&b|x&~t;if((dt[N>>2]|0)>>>0<=t>>>0){dt[Q>>2]=1154;dt[Q+4>>2]=903;dt[Q+8>>2]=1781;br(K,1100,Q)|0;yr(K,nt)|0}dt[Z+(u<<2)>>2]=gt[(dt[M>>2]|0)+(t<<1)>>1];u=u+1|0}while(u>>>0>>0);u=0;do{b=(ge(q,F)|0)+n|0;x=b-B|0;n=x>>31;n=n&b|x&~n;if((dt[N>>2]|0)>>>0<=n>>>0){dt[ot>>2]=1154;dt[ot+4>>2]=903;dt[ot+8>>2]=1781;br(K,1100,ot)|0;yr(K,$)|0}dt[J+(u<<2)>>2]=gt[(dt[M>>2]|0)+(n<<1)>>1];u=u+1|0}while(u>>>0>>0);x=j|(h|0)!=(V|0);y=0;b=T;while(1){_=k|(y|0)==0;v=y<<1;m=0;g=b;while(1){d=(ge(q,Y)|0)+o|0;p=d-U|0;o=p>>31;o=o&d|p&~o;p=(ge(q,Y)|0)+r|0;d=p-U|0;r=d>>31;r=r&p|d&~r;if((x|(m|0)==0)&_){p=mt[m+v+(1831+(w<<2))>>0]|0;d=o*3|0;u=dt[R>>2]|0;if(u>>>0<=d>>>0){dt[tt>>2]=1154;dt[tt+4>>2]=903;dt[tt+8>>2]=1781;br(K,1100,tt)|0;yr(K,et)|0;u=dt[R>>2]|0}c=dt[z>>2]|0;f=r*3|0;if(u>>>0>f>>>0)u=c;else{dt[rt>>2]=1154;dt[rt+4>>2]=903;dt[rt+8>>2]=1781;br(K,1100,rt)|0;yr(K,it)|0;u=dt[z>>2]|0}dt[g>>2]=(gt[c+(d<<1)>>1]|0)<<16|dt[Z+(p<<2)>>2];dt[g+4>>2]=(gt[c+(d+2<<1)>>1]|0)<<16|(gt[c+(d+1<<1)>>1]|0);dt[g+8>>2]=(gt[u+(f<<1)>>1]|0)<<16|dt[J+(p<<2)>>2];dt[g+12>>2]=(gt[u+(f+2<<1)>>1]|0)<<16|(gt[u+(f+1<<1)>>1]|0)}m=m+1|0;if((m|0)==2)break;else g=g+16|0}y=y+1|0;if((y|0)==2)break;else b=b+i|0}h=h+P|0;if((h|0)==(E|0))break;else T=T+S|0}}A=A+1|0;if((A|0)==(s|0))break;else C=C+W|0}}O=O+1|0}while((O|0)!=(I|0));vt=at;return 1}function Fe(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0;f=vt;vt=vt+608|0;c=f+88|0;h=f+72|0;l=f+64|0;s=f+48|0;o=f+40|0;a=f+24|0;n=f+16|0;i=f;u=f+96|0;dt[t>>2]=0;e=t+284|0;r=dt[e>>2]|0;if(r){if(!(r&7))Di[dt[104>>2]&1](r,0,0,1,dt[27]|0)|0;else{dt[i>>2]=1154;dt[i+4>>2]=2499;dt[i+8>>2]=1516;br(u,1100,i)|0;yr(u,n)|0}dt[e>>2]=0;dt[t+288>>2]=0;dt[t+292>>2]=0}pt[t+296>>0]=0;e=t+268|0;r=dt[e>>2]|0;if(r){if(!(r&7))Di[dt[104>>2]&1](r,0,0,1,dt[27]|0)|0;else{dt[a>>2]=1154;dt[a+4>>2]=2499;dt[a+8>>2]=1516;br(u,1100,a)|0;yr(u,o)|0}dt[e>>2]=0;dt[t+272>>2]=0;dt[t+276>>2]=0}pt[t+280>>0]=0;e=t+252|0;r=dt[e>>2]|0;if(r){if(!(r&7))Di[dt[104>>2]&1](r,0,0,1,dt[27]|0)|0;else{dt[s>>2]=1154;dt[s+4>>2]=2499;dt[s+8>>2]=1516;br(u,1100,s)|0;yr(u,l)|0}dt[e>>2]=0;dt[t+256>>2]=0;dt[t+260>>2]=0}pt[t+264>>0]=0;e=t+236|0;r=dt[e>>2]|0;if(!r){c=t+248|0;pt[c>>0]=0;c=t+212|0;ce(c);c=t+188|0;ce(c);c=t+164|0;ce(c);c=t+140|0;ce(c);c=t+116|0;ce(c);vt=f;return}if(!(r&7))Di[dt[104>>2]&1](r,0,0,1,dt[27]|0)|0;else{dt[h>>2]=1154;dt[h+4>>2]=2499;dt[h+8>>2]=1516;br(u,1100,h)|0;yr(u,c)|0}dt[e>>2]=0;dt[t+240>>2]=0;dt[t+244>>2]=0;c=t+248|0;pt[c>>0]=0;c=t+212|0;ce(c);c=t+188|0;ce(c);c=t+164|0;ce(c);c=t+140|0;ce(c);c=t+116|0;ce(c);vt=f;return}function Le(t,e){t=t|0;e=e|0;var r=0;r=vt;vt=vt+16|0;dt[r>>2]=e;e=dt[63]|0;xr(e,t,r)|0;vr(10,e)|0;Xt()}function je(){var t=0,e=0;t=vt;vt=vt+16|0;if(!(Ft(200,2)|0)){e=Rt(dt[49]|0)|0;vt=t;return e|0}else Le(2090,t);return 0}function Ne(t){t=t|0;Ur(t);return}function Be(t){t=t|0;var e=0;e=vt;vt=vt+16|0;Oi[t&3]();Le(2139,e)}function Ue(){var t=0,e=0;t=je()|0;if(((t|0)!=0?(e=dt[t>>2]|0,(e|0)!=0):0)?(t=e+48|0,(dt[t>>2]&-256|0)==1126902528?(dt[t+4>>2]|0)==1129074247:0):0)Be(dt[e+12>>2]|0);e=dt[28]|0;dt[28]=e+0;Be(e)}function Xe(t){t=t|0;return}function He(t){t=t|0;return}function We(t){t=t|0;return}function qe(t){t=t|0;return}function Ge(t){t=t|0;Ne(t);return}function Ve(t){t=t|0;Ne(t);return}function Ye(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0,a=0;a=vt;vt=vt+64|0;o=a;if((t|0)!=(e|0))if((e|0)!=0?(n=Qe(e,24,40,0)|0,(n|0)!=0):0){e=o;i=e+56|0;do{dt[e>>2]=0;e=e+4|0}while((e|0)<(i|0));dt[o>>2]=n;dt[o+8>>2]=t;dt[o+12>>2]=-1;dt[o+48>>2]=1;Ri[dt[(dt[n>>2]|0)+28>>2]&3](n,o,dt[r>>2]|0,1);if((dt[o+24>>2]|0)==1){dt[r>>2]=dt[o+16>>2];e=1}else e=0}else e=0;else e=1;vt=a;return e|0}function Ze(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0;t=e+16|0;n=dt[t>>2]|0;do{if(n){if((n|0)!=(r|0)){i=e+36|0;dt[i>>2]=(dt[i>>2]|0)+1;dt[e+24>>2]=2;pt[e+54>>0]=1;break}t=e+24|0;if((dt[t>>2]|0)==2)dt[t>>2]=i}else{dt[t>>2]=r;dt[e+24>>2]=i;dt[e+36>>2]=1}}while(0);return}function Je(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;if((t|0)==(dt[e+8>>2]|0))Ze(0,e,r,i);return}function Ke(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;if((t|0)==(dt[e+8>>2]|0))Ze(0,e,r,i);else{t=dt[t+8>>2]|0;Ri[dt[(dt[t>>2]|0)+28>>2]&3](t,e,r,i)}return}function Qe(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0;p=vt;vt=vt+64|0;f=p;c=dt[t>>2]|0;h=t+(dt[c+-8>>2]|0)|0;c=dt[c+-4>>2]|0;dt[f>>2]=r;dt[f+4>>2]=t;dt[f+8>>2]=e;dt[f+12>>2]=i;i=f+16|0;t=f+20|0;e=f+24|0;n=f+28|0;o=f+32|0;a=f+40|0;s=(c|0)==(r|0);l=i;u=l+36|0;do{dt[l>>2]=0;l=l+4|0}while((l|0)<(u|0));$[i+36>>1]=0;pt[i+38>>0]=0;t:do{if(s){dt[f+48>>2]=1;Mi[dt[(dt[r>>2]|0)+20>>2]&3](r,f,h,h,1,0);i=(dt[e>>2]|0)==1?h:0}else{Ei[dt[(dt[c>>2]|0)+24>>2]&3](c,f,h,1,0);switch(dt[f+36>>2]|0){case 0:{i=(dt[a>>2]|0)==1&(dt[n>>2]|0)==1&(dt[o>>2]|0)==1?dt[t>>2]|0:0;break t}case 1:break;default:{i=0;break t}}if((dt[e>>2]|0)!=1?!((dt[a>>2]|0)==0&(dt[n>>2]|0)==1&(dt[o>>2]|0)==1):0){i=0;break}i=dt[i>>2]|0}}while(0);vt=p;return i|0}function $e(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;pt[e+53>>0]=1;do{if((dt[e+4>>2]|0)==(i|0)){pt[e+52>>0]=1;i=e+16|0;t=dt[i>>2]|0;if(!t){dt[i>>2]=r;dt[e+24>>2]=n;dt[e+36>>2]=1;if(!((n|0)==1?(dt[e+48>>2]|0)==1:0))break;pt[e+54>>0]=1;break}if((t|0)!=(r|0)){n=e+36|0;dt[n>>2]=(dt[n>>2]|0)+1;pt[e+54>>0]=1;break}t=e+24|0;i=dt[t>>2]|0;if((i|0)==2){dt[t>>2]=n;i=n}if((i|0)==1?(dt[e+48>>2]|0)==1:0)pt[e+54>>0]=1}}while(0);return}function tr(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0,l=0;t:do{if((t|0)==(dt[e+8>>2]|0)){if((dt[e+4>>2]|0)==(r|0)?(o=e+28|0,(dt[o>>2]|0)!=1):0)dt[o>>2]=i}else{if((t|0)!=(dt[e>>2]|0)){s=dt[t+8>>2]|0;Ei[dt[(dt[s>>2]|0)+24>>2]&3](s,e,r,i,n);break}if((dt[e+16>>2]|0)!=(r|0)?(a=e+20|0,(dt[a>>2]|0)!=(r|0)):0){dt[e+32>>2]=i;i=e+44|0;if((dt[i>>2]|0)==4)break;o=e+52|0;pt[o>>0]=0;l=e+53|0;pt[l>>0]=0;t=dt[t+8>>2]|0;Mi[dt[(dt[t>>2]|0)+20>>2]&3](t,e,r,r,1,n);if(pt[l>>0]|0){if(!(pt[o>>0]|0)){o=1;s=13}}else{o=0;s=13}do{if((s|0)==13){dt[a>>2]=r;l=e+40|0;dt[l>>2]=(dt[l>>2]|0)+1;if((dt[e+36>>2]|0)==1?(dt[e+24>>2]|0)==2:0){pt[e+54>>0]=1;if(o)break}else s=16;if((s|0)==16?o:0)break;dt[i>>2]=4;break t}}while(0);dt[i>>2]=3;break}if((i|0)==1)dt[e+32>>2]=1}}while(0);return}function er(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0,a=0;do{if((t|0)==(dt[e+8>>2]|0)){if((dt[e+4>>2]|0)==(r|0)?(a=e+28|0,(dt[a>>2]|0)!=1):0)dt[a>>2]=i}else if((t|0)==(dt[e>>2]|0)){if((dt[e+16>>2]|0)!=(r|0)?(o=e+20|0,(dt[o>>2]|0)!=(r|0)):0){dt[e+32>>2]=i;dt[o>>2]=r;n=e+40|0;dt[n>>2]=(dt[n>>2]|0)+1;if((dt[e+36>>2]|0)==1?(dt[e+24>>2]|0)==2:0)pt[e+54>>0]=1;dt[e+44>>2]=4;break}if((i|0)==1)dt[e+32>>2]=1}}while(0);return}function rr(t,e,r,i,n,o){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;if((t|0)==(dt[e+8>>2]|0))$e(0,e,r,i,n);else{t=dt[t+8>>2]|0;Mi[dt[(dt[t>>2]|0)+20>>2]&3](t,e,r,i,n,o)}return}function ir(t,e,r,i,n,o){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;if((t|0)==(dt[e+8>>2]|0))$e(0,e,r,i,n);return}function nr(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0;n=vt;vt=vt+16|0;i=n;dt[i>>2]=dt[r>>2];t=Pi[dt[(dt[t>>2]|0)+16>>2]&7](t,e,i)|0;if(t)dt[r>>2]=dt[i>>2];vt=n;return t&1|0}function or(t){t=t|0;if(!t)t=0;else t=(Qe(t,24,72,0)|0)!=0;return t&1|0}function ar(){var t=0,e=0,r=0,i=0,n=0,o=0,a=0,s=0;n=vt;vt=vt+48|0;a=n+32|0;r=n+24|0;s=n+16|0;o=n;n=n+36|0;t=je()|0;if((t|0)!=0?(i=dt[t>>2]|0,(i|0)!=0):0){t=i+48|0;e=dt[t>>2]|0;t=dt[t+4>>2]|0;if(!((e&-256|0)==1126902528&(t|0)==1129074247)){dt[r>>2]=dt[51];Le(2368,r)}if((e|0)==1126902529&(t|0)==1129074247)t=dt[i+44>>2]|0;else t=i+80|0;dt[n>>2]=t;i=dt[i>>2]|0;t=dt[i+4>>2]|0;if(Pi[dt[(dt[8>>2]|0)+16>>2]&7](8,i,n)|0){s=dt[n>>2]|0;n=dt[51]|0;s=Ai[dt[(dt[s>>2]|0)+8>>2]&1](s)|0;dt[o>>2]=n;dt[o+4>>2]=t;dt[o+8>>2]=s;Le(2282,o)}else{dt[s>>2]=dt[51];dt[s+4>>2]=t;Le(2327,s)}}Le(2406,a)}function sr(){var t=0;t=vt;vt=vt+16|0;if(!(Lt(196,6)|0)){vt=t;return}else Le(2179,t)}function lr(t){t=t|0;var e=0;e=vt;vt=vt+16|0;Ur(t);if(!(Bt(dt[49]|0,0)|0)){vt=e;return}else Le(2229,e)}function ur(t){t=t|0;var e=0,r=0;e=0;while(1){if((mt[2427+e>>0]|0)==(t|0)){r=2;break}e=e+1|0;if((e|0)==87){e=87;t=2515;r=5;break}}if((r|0)==2)if(!e)t=2515;else{t=2515;r=5}if((r|0)==5)while(1){r=t;while(1){t=r+1|0;if(!(pt[r>>0]|0))break;else r=t}e=e+-1|0;if(!e)break;else r=5}return t|0}function hr(){var t=0;if(!(dt[52]|0))t=264;else{t=(zt()|0)+60|0;t=dt[t>>2]|0}return t|0}function cr(t){t=t|0;var e=0;if(t>>>0>4294963200){e=hr()|0;dt[e>>2]=0-t;t=-1}return t|0}function fr(t,e){t=+t;e=e|0;var r=0,i=0,n=0;tt[et>>3]=t;r=dt[et>>2]|0;i=dt[et+4>>2]|0;n=Zr(r|0,i|0,52)|0;n=n&2047;switch(n|0){case 0:{if(t!=0.0){t=+fr(t*18446744073709552.0e3,e);r=(dt[e>>2]|0)+-64|0}else r=0;dt[e>>2]=r;break}case 2047:break;default:{dt[e>>2]=n+-1022;dt[et>>2]=r;dt[et+4>>2]=i&-2146435073|1071644672;t=+tt[et>>3]}}return+t}function pr(t,e){t=+t;e=e|0;return+ +fr(t,e)}function dr(t,e,r){t=t|0;e=e|0;r=r|0;do{if(t){if(e>>>0<128){pt[t>>0]=e;t=1;break}if(e>>>0<2048){pt[t>>0]=e>>>6|192;pt[t+1>>0]=e&63|128;t=2;break}if(e>>>0<55296|(e&-8192|0)==57344){pt[t>>0]=e>>>12|224;pt[t+1>>0]=e>>>6&63|128;pt[t+2>>0]=e&63|128;t=3;break}if((e+-65536|0)>>>0<1048576){pt[t>>0]=e>>>18|240;pt[t+1>>0]=e>>>12&63|128;pt[t+2>>0]=e>>>6&63|128;pt[t+3>>0]=e&63|128;t=4;break}else{t=hr()|0;dt[t>>2]=84;t=-1;break}}else t=1}while(0);return t|0}function mr(t,e){t=t|0;e=e|0;if(!t)t=0;else t=dr(t,e,0)|0;return t|0}function gr(t){t=t|0;var e=0,r=0;do{if(t){if((dt[t+76>>2]|0)<=-1){e=Dr(t)|0;break}r=(kr(t)|0)==0;e=Dr(t)|0;if(!r)Sr(t)}else{if(!(dt[65]|0))e=0;else e=gr(dt[65]|0)|0;Ut(236);t=dt[58]|0;if(t)do{if((dt[t+76>>2]|0)>-1)r=kr(t)|0;else r=0;if((dt[t+20>>2]|0)>>>0>(dt[t+28>>2]|0)>>>0)e=Dr(t)|0|e;if(r)Sr(t);t=dt[t+56>>2]|0}while((t|0)!=0);jt(236)}}while(0);return e|0}function vr(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0;if((dt[e+76>>2]|0)>=0?(kr(e)|0)!=0:0){if((pt[e+75>>0]|0)!=(t|0)?(i=e+20|0,n=dt[i>>2]|0,n>>>0<(dt[e+16>>2]|0)>>>0):0){dt[i>>2]=n+1;pt[n>>0]=t;r=t&255}else r=Pr(e,t)|0;Sr(e)}else a=3;do{if((a|0)==3){if((pt[e+75>>0]|0)!=(t|0)?(o=e+20|0,r=dt[o>>2]|0,r>>>0<(dt[e+16>>2]|0)>>>0):0){dt[o>>2]=r+1;pt[r>>0]=t;r=t&255;break}r=Pr(e,t)|0}}while(0);return r|0}function _r(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0,a=0;i=r+16|0;n=dt[i>>2]|0;if(!n)if(!(Or(r)|0)){n=dt[i>>2]|0;o=4}else i=0;else o=4;t:do{if((o|0)==4){a=r+20|0;o=dt[a>>2]|0;if((n-o|0)>>>0>>0){i=Pi[dt[r+36>>2]&7](r,t,e)|0;break}e:do{if((pt[r+75>>0]|0)>-1){i=e;while(1){if(!i){n=o;i=0;break e}n=i+-1|0;if((pt[t+n>>0]|0)==10)break;else i=n}if((Pi[dt[r+36>>2]&7](r,t,i)|0)>>>0>>0)break t;e=e-i|0;t=t+i|0;n=dt[a>>2]|0}else{n=o;i=0}}while(0);Qr(n|0,t|0,e|0)|0;dt[a>>2]=(dt[a>>2]|0)+e;i=i+e|0}}while(0);return i|0}function yr(t,e){t=t|0;e=e|0;var r=0,i=0;r=vt;vt=vt+16|0;i=r;dt[i>>2]=e;e=xr(dt[64]|0,t,i)|0;vt=r;return e|0}function br(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0;i=vt;vt=vt+16|0;n=i;dt[n>>2]=r;r=Tr(t,e,n)|0;vt=i;return r|0}function xr(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0;m=vt;vt=vt+224|0;c=m+120|0;d=m+80|0;p=m;f=m+136|0;i=d;n=i+40|0;do{dt[i>>2]=0;i=i+4|0}while((i|0)<(n|0));dt[c>>2]=dt[r>>2];if((Rr(0,e,c,p,d)|0)<0)r=-1;else{if((dt[t+76>>2]|0)>-1)u=kr(t)|0;else u=0;r=dt[t>>2]|0;h=r&32;if((pt[t+74>>0]|0)<1)dt[t>>2]=r&-33;r=t+48|0;if(!(dt[r>>2]|0)){n=t+44|0;o=dt[n>>2]|0;dt[n>>2]=f;a=t+28|0;dt[a>>2]=f;s=t+20|0;dt[s>>2]=f;dt[r>>2]=80;l=t+16|0;dt[l>>2]=f+80;i=Rr(t,e,c,p,d)|0;if(o){Pi[dt[t+36>>2]&7](t,0,0)|0;i=(dt[s>>2]|0)==0?-1:i;dt[n>>2]=o;dt[r>>2]=0;dt[l>>2]=0;dt[a>>2]=0;dt[s>>2]=0}}else i=Rr(t,e,c,p,d)|0;r=dt[t>>2]|0;dt[t>>2]=r|h;if(u)Sr(t);r=(r&32|0)==0?i:-1}vt=m;return r|0}function wr(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0,o=0,a=0,s=0,l=0,u=0,h=0;h=vt;vt=vt+128|0;n=h+112|0;u=h;o=u;a=268;s=o+112|0;do{dt[o>>2]=dt[a>>2];o=o+4|0;a=a+4|0}while((o|0)<(s|0));if((e+-1|0)>>>0>2147483646)if(!e){e=1;l=4}else{e=hr()|0;dt[e>>2]=75;e=-1}else{n=t;l=4}if((l|0)==4){l=-2-n|0;l=e>>>0>l>>>0?l:e;dt[u+48>>2]=l;t=u+20|0;dt[t>>2]=n;dt[u+44>>2]=n;e=n+l|0;n=u+16|0;dt[n>>2]=e;dt[u+28>>2]=e;e=xr(u,r,i)|0;if(l){r=dt[t>>2]|0;pt[r+(((r|0)==(dt[n>>2]|0))<<31>>31)>>0]=0}}vt=h;return e|0}function Tr(t,e,r){t=t|0;e=e|0;r=r|0;return wr(t,2147483647,e,r)|0}function kr(t){t=t|0;return 0}function Sr(t){t=t|0;return}function Pr(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0;l=vt;vt=vt+16|0;s=l;a=e&255;pt[s>>0]=a;i=t+16|0;n=dt[i>>2]|0;if(!n)if(!(Or(t)|0)){n=dt[i>>2]|0;o=4}else r=-1;else o=4;do{if((o|0)==4){i=t+20|0;o=dt[i>>2]|0;if(o>>>0>>0?(r=e&255,(r|0)!=(pt[t+75>>0]|0)):0){dt[i>>2]=o+1;pt[o>>0]=a;break}if((Pi[dt[t+36>>2]&7](t,s,1)|0)==1)r=mt[s>>0]|0;else r=-1}}while(0);vt=l;return r|0}function Er(t){t=t|0;var e=0,r=0;e=vt;vt=vt+16|0;r=e;dt[r>>2]=dt[t+60>>2];t=cr(Pt(6,r|0)|0)|0;vt=e;return t|0}function Cr(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0;n=vt;vt=vt+32|0;o=n;i=n+20|0;dt[o>>2]=dt[t+60>>2];dt[o+4>>2]=0;dt[o+8>>2]=e;dt[o+12>>2]=i;dt[o+16>>2]=r;if((cr(qt(140,o|0)|0)|0)<0){dt[i>>2]=-1;t=-1}else t=dt[i>>2]|0;vt=n;return t|0}function Ar(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0;d=vt;vt=vt+48|0;c=d+16|0;h=d;i=d+32|0;f=t+28|0;n=dt[f>>2]|0;dt[i>>2]=n;p=t+20|0;n=(dt[p>>2]|0)-n|0;dt[i+4>>2]=n;dt[i+8>>2]=e;dt[i+12>>2]=r;l=t+60|0;u=t+44|0;e=2;n=n+r|0;while(1){if(!(dt[52]|0)){dt[c>>2]=dt[l>>2];dt[c+4>>2]=i;dt[c+8>>2]=e;a=cr(Gt(146,c|0)|0)|0}else{Ht(7,t|0);dt[h>>2]=dt[l>>2];dt[h+4>>2]=i;dt[h+8>>2]=e;a=cr(Gt(146,h|0)|0)|0;kt(0)}if((n|0)==(a|0)){n=6;break}if((a|0)<0){n=8;break}n=n-a|0;o=dt[i+4>>2]|0;if(a>>>0<=o>>>0)if((e|0)==2){dt[f>>2]=(dt[f>>2]|0)+a;s=o;e=2}else s=o;else{s=dt[u>>2]|0;dt[f>>2]=s;dt[p>>2]=s;s=dt[i+12>>2]|0;a=a-o|0;i=i+8|0;e=e+-1|0}dt[i>>2]=(dt[i>>2]|0)+a;dt[i+4>>2]=s-a}if((n|0)==6){c=dt[u>>2]|0;dt[t+16>>2]=c+(dt[t+48>>2]|0);t=c;dt[f>>2]=t;dt[p>>2]=t}else if((n|0)==8){dt[t+16>>2]=0;dt[f>>2]=0;dt[p>>2]=0;dt[t>>2]=dt[t>>2]|32;if((e|0)==2)r=0;else r=r-(dt[i+4>>2]|0)|0}vt=d;return r|0}function Ir(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0;n=vt;vt=vt+80|0;i=n;dt[t+36>>2]=3;if((dt[t>>2]&64|0)==0?(dt[i>>2]=dt[t+60>>2],dt[i+4>>2]=21505,dt[i+8>>2]=n+12,(St(54,i|0)|0)!=0):0)pt[t+75>>0]=-1;i=Ar(t,e,r)|0;vt=n;return i|0}function Or(t){t=t|0;var e=0,r=0;e=t+74|0;r=pt[e>>0]|0;pt[e>>0]=r+255|r;e=dt[t>>2]|0;if(!(e&8)){dt[t+8>>2]=0;dt[t+4>>2]=0;e=dt[t+44>>2]|0;dt[t+28>>2]=e;dt[t+20>>2]=e;dt[t+16>>2]=e+(dt[t+48>>2]|0);e=0}else{dt[t>>2]=e|32;e=-1}return e|0}function Mr(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0,a=0;o=e&255;i=(r|0)!=0;t:do{if(i&(t&3|0)!=0){n=e&255;while(1){if((pt[t>>0]|0)==n<<24>>24){a=6;break t}t=t+1|0;r=r+-1|0;i=(r|0)!=0;if(!(i&(t&3|0)!=0)){a=5;break}}}else a=5}while(0);if((a|0)==5)if(i)a=6;else r=0;t:do{if((a|0)==6){n=e&255;if((pt[t>>0]|0)!=n<<24>>24){i=_t(o,16843009)|0;e:do{if(r>>>0>3)while(1){o=dt[t>>2]^i;if((o&-2139062144^-2139062144)&o+-16843009)break;t=t+4|0;r=r+-4|0;if(r>>>0<=3){a=11;break e}}else a=11}while(0);if((a|0)==11)if(!r){r=0;break}while(1){if((pt[t>>0]|0)==n<<24>>24)break t;t=t+1|0;r=r+-1|0;if(!r){r=0;break}}}}}while(0);return((r|0)!=0?t:0)|0}function Dr(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0;e=t+20|0;o=t+28|0;if((dt[e>>2]|0)>>>0>(dt[o>>2]|0)>>>0?(Pi[dt[t+36>>2]&7](t,0,0)|0,(dt[e>>2]|0)==0):0)e=-1;else{a=t+4|0;r=dt[a>>2]|0;i=t+8|0;n=dt[i>>2]|0;if(r>>>0>>0)Pi[dt[t+40>>2]&7](t,r-n|0,1)|0;dt[t+16>>2]=0;dt[o>>2]=0;dt[e>>2]=0;dt[i>>2]=0;dt[a>>2]=0;e=0}return e|0}function Rr(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0,l=0,u=0.0,h=0,c=0,f=0,p=0,d=0.0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,E=0,C=0,A=0,I=0,O=0,M=0,D=0,R=0,z=0,F=0,L=0,j=0,N=0,B=0,U=0,X=0,H=0,W=0,q=0,G=0,V=0,Y=0,Z=0,J=0,K=0,Q=0;Q=vt;vt=vt+624|0;V=Q+24|0;Z=Q+16|0;Y=Q+588|0;X=Q+576|0;G=Q;N=Q+536|0;K=Q+8|0;J=Q+528|0;I=(t|0)!=0;O=N+40|0;j=O;N=N+39|0;B=K+4|0;U=X+12|0;X=X+11|0;H=Y;W=U;q=W-H|0;M=-2-H|0;D=W+2|0;R=V+288|0;z=Y+9|0;F=z;L=Y+8|0;o=0;m=e;a=0;e=0;t:while(1){do{if((o|0)>-1)if((a|0)>(2147483647-o|0)){o=hr()|0;dt[o>>2]=75;o=-1;break}else{o=a+o|0;break}}while(0);a=pt[m>>0]|0;if(!(a<<24>>24)){A=245;break}else s=m;e:while(1){switch(a<<24>>24){case 37:{a=s;A=9;break e}case 0:{a=s;break e}default:{}}C=s+1|0;a=pt[C>>0]|0;s=C}e:do{if((A|0)==9)while(1){A=0;if((pt[a+1>>0]|0)!=37)break e;s=s+1|0;a=a+2|0;if((pt[a>>0]|0)==37)A=9;else break}}while(0);v=s-m|0;if(I?(dt[t>>2]&32|0)==0:0)_r(m,v,t)|0;if((s|0)!=(m|0)){m=a;a=v;continue}h=a+1|0;s=pt[h>>0]|0;l=(s<<24>>24)+-48|0;if(l>>>0<10){C=(pt[a+2>>0]|0)==36;h=C?a+3|0:h;s=pt[h>>0]|0;p=C?l:-1;e=C?1:e}else p=-1;a=s<<24>>24;e:do{if((a&-32|0)==32){l=0;while(1){if(!(1<>24)+-32|l;h=h+1|0;s=pt[h>>0]|0;a=s<<24>>24;if((a&-32|0)!=32){c=l;a=h;break}}}else{c=0;a=h}}while(0);do{if(s<<24>>24==42){l=a+1|0;s=(pt[l>>0]|0)+-48|0;if(s>>>0<10?(pt[a+2>>0]|0)==36:0){dt[n+(s<<2)>>2]=10;e=1;a=a+3|0;s=dt[i+((pt[l>>0]|0)+-48<<3)>>2]|0}else{if(e){o=-1;break t}if(!I){g=c;a=l;e=0;C=0;break}e=(dt[r>>2]|0)+(4-1)&~(4-1);s=dt[e>>2]|0;dt[r>>2]=e+4;e=0;a=l}if((s|0)<0){g=c|8192;C=0-s|0}else{g=c;C=s}}else{l=(s<<24>>24)+-48|0;if(l>>>0<10){s=0;do{s=(s*10|0)+l|0;a=a+1|0;l=(pt[a>>0]|0)+-48|0}while(l>>>0<10);if((s|0)<0){o=-1;break t}else{g=c;C=s}}else{g=c;C=0}}}while(0);e:do{if((pt[a>>0]|0)==46){l=a+1|0;s=pt[l>>0]|0;if(s<<24>>24!=42){h=(s<<24>>24)+-48|0;if(h>>>0<10){a=l;s=0}else{a=l;h=0;break}while(1){s=(s*10|0)+h|0;a=a+1|0;h=(pt[a>>0]|0)+-48|0;if(h>>>0>=10){h=s;break e}}}l=a+2|0;s=(pt[l>>0]|0)+-48|0;if(s>>>0<10?(pt[a+3>>0]|0)==36:0){dt[n+(s<<2)>>2]=10;a=a+4|0;h=dt[i+((pt[l>>0]|0)+-48<<3)>>2]|0;break}if(e){o=-1;break t}if(I){a=(dt[r>>2]|0)+(4-1)&~(4-1);h=dt[a>>2]|0;dt[r>>2]=a+4;a=l}else{a=l;h=0}}else h=-1}while(0);f=0;while(1){s=(pt[a>>0]|0)+-65|0;if(s>>>0>57){o=-1;break t}l=a+1|0;s=pt[5359+(f*58|0)+s>>0]|0;c=s&255;if((c+-1|0)>>>0<8){a=l;f=c}else{E=l;break}}if(!(s<<24>>24)){o=-1;break}l=(p|0)>-1;do{if(s<<24>>24==19)if(l){o=-1;break t}else A=52;else{if(l){dt[n+(p<<2)>>2]=c;S=i+(p<<3)|0;P=dt[S+4>>2]|0;A=G;dt[A>>2]=dt[S>>2];dt[A+4>>2]=P;A=52;break}if(!I){o=0;break t}Lr(G,c,r)}}while(0);if((A|0)==52?(A=0,!I):0){m=E;a=v;continue}p=pt[a>>0]|0;p=(f|0)!=0&(p&15|0)==3?p&-33:p;l=g&-65537;P=(g&8192|0)==0?g:l;e:do{switch(p|0){case 110:switch(f|0){case 0:{dt[dt[G>>2]>>2]=o;m=E;a=v;continue t}case 1:{dt[dt[G>>2]>>2]=o;m=E;a=v;continue t}case 2:{m=dt[G>>2]|0;dt[m>>2]=o;dt[m+4>>2]=((o|0)<0)<<31>>31;m=E;a=v;continue t}case 3:{$[dt[G>>2]>>1]=o;m=E;a=v;continue t}case 4:{pt[dt[G>>2]>>0]=o;m=E;a=v;continue t}case 6:{dt[dt[G>>2]>>2]=o;m=E;a=v;continue t}case 7:{m=dt[G>>2]|0;dt[m>>2]=o;dt[m+4>>2]=((o|0)<0)<<31>>31;m=E;a=v;continue t}default:{m=E;a=v;continue t}}case 112:{f=P|8;h=h>>>0>8?h:8;p=120;A=64;break}case 88:case 120:{f=P;A=64;break}case 111:{l=G;s=dt[l>>2]|0;l=dt[l+4>>2]|0;if((s|0)==0&(l|0)==0)a=O;else{a=O;do{a=a+-1|0;pt[a>>0]=s&7|48;s=Zr(s|0,l|0,3)|0;l=rt}while(!((s|0)==0&(l|0)==0))}if(!(P&8)){s=P;f=0;c=5839;A=77}else{f=j-a+1|0;s=P;h=(h|0)<(f|0)?f:h;f=0;c=5839;A=77}break}case 105:case 100:{s=G;a=dt[s>>2]|0;s=dt[s+4>>2]|0;if((s|0)<0){a=Vr(0,0,a|0,s|0)|0;s=rt;l=G;dt[l>>2]=a;dt[l+4>>2]=s;l=1;c=5839;A=76;break e}if(!(P&2048)){c=P&1;l=c;c=(c|0)==0?5839:5841;A=76}else{l=1;c=5840;A=76}break}case 117:{s=G;a=dt[s>>2]|0;s=dt[s+4>>2]|0;l=0;c=5839;A=76;break}case 99:{pt[N>>0]=dt[G>>2];m=N;s=1;f=0;p=5839;a=O;break}case 109:{a=hr()|0;a=ur(dt[a>>2]|0)|0;A=82;break}case 115:{a=dt[G>>2]|0;a=(a|0)!=0?a:5849;A=82;break}case 67:{dt[K>>2]=dt[G>>2];dt[B>>2]=0;dt[G>>2]=K;h=-1;A=86;break}case 83:{if(!h){Nr(t,32,C,0,P);a=0;A=98}else A=86;break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{u=+tt[G>>3];dt[Z>>2]=0;tt[et>>3]=u;if((dt[et+4>>2]|0)>=0)if(!(P&2048)){S=P&1;k=S;S=(S|0)==0?5857:5862}else{k=1;S=5859}else{u=-u;k=1;S=5856}tt[et>>3]=u;T=dt[et+4>>2]&2146435072;do{if(T>>>0<2146435072|(T|0)==2146435072&0<0){d=+pr(u,Z)*2.0;s=d!=0.0;if(s)dt[Z>>2]=(dt[Z>>2]|0)+-1;x=p|32;if((x|0)==97){m=p&32;v=(m|0)==0?S:S+9|0;g=k|2;a=12-h|0;do{if(!(h>>>0>11|(a|0)==0)){u=8.0;do{a=a+-1|0;u=u*16.0}while((a|0)!=0);if((pt[v>>0]|0)==45){u=-(u+(-d-u));break}else{u=d+u-u;break}}else u=d}while(0);s=dt[Z>>2]|0;a=(s|0)<0?0-s|0:s;a=jr(a,((a|0)<0)<<31>>31,U)|0;if((a|0)==(U|0)){pt[X>>0]=48;a=X}pt[a+-1>>0]=(s>>31&2)+43;f=a+-2|0;pt[f>>0]=p+15;c=(h|0)<1;l=(P&8|0)==0;s=Y;while(1){S=~~u;a=s+1|0;pt[s>>0]=mt[5823+S>>0]|m;u=(u-+(S|0))*16.0;do{if((a-H|0)==1){if(l&(c&u==0.0))break;pt[a>>0]=46;a=s+2|0}}while(0);if(!(u!=0.0))break;else s=a}h=(h|0)!=0&(M+a|0)<(h|0)?D+h-f|0:q-f+a|0;l=h+g|0;Nr(t,32,C,l,P);if(!(dt[t>>2]&32))_r(v,g,t)|0;Nr(t,48,C,l,P^65536);a=a-H|0;if(!(dt[t>>2]&32))_r(Y,a,t)|0;s=W-f|0;Nr(t,48,h-(a+s)|0,0,0);if(!(dt[t>>2]&32))_r(f,s,t)|0;Nr(t,32,C,l,P^8192);a=(l|0)<(C|0)?C:l;break}a=(h|0)<0?6:h;if(s){s=(dt[Z>>2]|0)+-28|0;dt[Z>>2]=s;u=d*268435456.0}else{u=d;s=dt[Z>>2]|0}T=(s|0)<0?V:R;w=T;s=T;do{b=~~u>>>0;dt[s>>2]=b;s=s+4|0;u=(u-+(b>>>0))*1.0e9}while(u!=0.0);l=s;s=dt[Z>>2]|0;if((s|0)>0){c=T;while(1){f=(s|0)>29?29:s;h=l+-4|0;do{if(h>>>0>>0)h=c;else{s=0;do{b=Jr(dt[h>>2]|0,0,f|0)|0;b=Kr(b|0,rt|0,s|0,0)|0;s=rt;y=ai(b|0,s|0,1e9,0)|0;dt[h>>2]=y;s=oi(b|0,s|0,1e9,0)|0;h=h+-4|0}while(h>>>0>=c>>>0);if(!s){h=c;break}h=c+-4|0;dt[h>>2]=s}}while(0);while(1){if(l>>>0<=h>>>0)break;s=l+-4|0;if(!(dt[s>>2]|0))l=s;else break}s=(dt[Z>>2]|0)-f|0;dt[Z>>2]=s;if((s|0)>0)c=h;else break}}else h=T;if((s|0)<0){v=((a+25|0)/9|0)+1|0;_=(x|0)==102;m=h;while(1){g=0-s|0;g=(g|0)>9?9:g;do{if(m>>>0>>0){s=(1<>>g;h=0;f=m;do{b=dt[f>>2]|0;dt[f>>2]=(b>>>g)+h;h=_t(b&s,c)|0;f=f+4|0}while(f>>>0>>0);s=(dt[m>>2]|0)==0?m+4|0:m;if(!h){h=s;break}dt[l>>2]=h;h=s;l=l+4|0}else h=(dt[m>>2]|0)==0?m+4|0:m}while(0);s=_?T:h;l=(l-s>>2|0)>(v|0)?s+(v<<2)|0:l;s=(dt[Z>>2]|0)+g|0;dt[Z>>2]=s;if((s|0)>=0){m=h;break}else m=h}}else m=h;do{if(m>>>0>>0){s=(w-m>>2)*9|0;c=dt[m>>2]|0;if(c>>>0<10)break;else h=10;do{h=h*10|0;s=s+1|0}while(c>>>0>=h>>>0)}else s=0}while(0);y=(x|0)==103;b=(a|0)!=0;h=a-((x|0)!=102?s:0)+((b&y)<<31>>31)|0;if((h|0)<(((l-w>>2)*9|0)+-9|0)){f=h+9216|0;_=(f|0)/9|0;h=T+(_+-1023<<2)|0;f=((f|0)%9|0)+1|0;if((f|0)<9){c=10;do{c=c*10|0;f=f+1|0}while((f|0)!=9)}else c=10;g=dt[h>>2]|0;v=(g>>>0)%(c>>>0)|0;if((v|0)==0?(T+(_+-1022<<2)|0)==(l|0):0)c=m;else A=163;do{if((A|0)==163){A=0;d=(((g>>>0)/(c>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;f=(c|0)/2|0;do{if(v>>>0>>0)u=.5;else{if((v|0)==(f|0)?(T+(_+-1022<<2)|0)==(l|0):0){u=1.0;break}u=1.5}}while(0);do{if(k){if((pt[S>>0]|0)!=45)break;d=-d;u=-u}}while(0);f=g-v|0;dt[h>>2]=f;if(!(d+u!=d)){c=m;break}x=f+c|0;dt[h>>2]=x;if(x>>>0>999999999){s=m;while(1){c=h+-4|0;dt[h>>2]=0;if(c>>>0>>0){s=s+-4|0;dt[s>>2]=0}x=(dt[c>>2]|0)+1|0;dt[c>>2]=x;if(x>>>0>999999999)h=c;else{m=s;h=c;break}}}s=(w-m>>2)*9|0;f=dt[m>>2]|0;if(f>>>0<10){c=m;break}else c=10;do{c=c*10|0;s=s+1|0}while(f>>>0>=c>>>0);c=m}}while(0);x=h+4|0;m=c;l=l>>>0>x>>>0?x:l}v=0-s|0;while(1){if(l>>>0<=m>>>0){_=0;x=l;break}h=l+-4|0;if(!(dt[h>>2]|0))l=h;else{_=1;x=l;break}}do{if(y){a=(b&1^1)+a|0;if((a|0)>(s|0)&(s|0)>-5){p=p+-1|0;a=a+-1-s|0}else{p=p+-2|0;a=a+-1|0}l=P&8;if(l)break;do{if(_){l=dt[x+-4>>2]|0;if(!l){h=9;break}if(!((l>>>0)%10|0)){c=10;h=0}else{h=0;break}do{c=c*10|0;h=h+1|0}while(((l>>>0)%(c>>>0)|0|0)==0)}else h=9}while(0);l=((x-w>>2)*9|0)+-9|0;if((p|32|0)==102){l=l-h|0;l=(l|0)<0?0:l;a=(a|0)<(l|0)?a:l;l=0;break}else{l=l+s-h|0;l=(l|0)<0?0:l;a=(a|0)<(l|0)?a:l;l=0;break}}else l=P&8}while(0);g=a|l;c=(g|0)!=0&1;f=(p|32|0)==102;if(f){s=(s|0)>0?s:0;p=0}else{h=(s|0)<0?v:s;h=jr(h,((h|0)<0)<<31>>31,U)|0;if((W-h|0)<2)do{h=h+-1|0;pt[h>>0]=48}while((W-h|0)<2);pt[h+-1>>0]=(s>>31&2)+43;w=h+-2|0;pt[w>>0]=p;s=W-w|0;p=w}v=k+1+a+c+s|0;Nr(t,32,C,v,P);if(!(dt[t>>2]&32))_r(S,k,t)|0;Nr(t,48,C,v,P^65536);do{if(f){h=m>>>0>T>>>0?T:m;s=h;do{l=jr(dt[s>>2]|0,0,z)|0;do{if((s|0)==(h|0)){if((l|0)!=(z|0))break;pt[L>>0]=48;l=L}else{if(l>>>0<=Y>>>0)break;do{l=l+-1|0;pt[l>>0]=48}while(l>>>0>Y>>>0)}}while(0);if(!(dt[t>>2]&32))_r(l,F-l|0,t)|0;s=s+4|0}while(s>>>0<=T>>>0);do{if(g){if(dt[t>>2]&32)break;_r(5891,1,t)|0}}while(0);if((a|0)>0&s>>>0>>0){l=s;while(1){s=jr(dt[l>>2]|0,0,z)|0;if(s>>>0>Y>>>0)do{s=s+-1|0;pt[s>>0]=48}while(s>>>0>Y>>>0);if(!(dt[t>>2]&32))_r(s,(a|0)>9?9:a,t)|0;l=l+4|0;s=a+-9|0;if(!((a|0)>9&l>>>0>>0)){a=s;break}else a=s}}Nr(t,48,a+9|0,9,0)}else{f=_?x:m+4|0;if((a|0)>-1){c=(l|0)==0;h=m;do{s=jr(dt[h>>2]|0,0,z)|0;if((s|0)==(z|0)){pt[L>>0]=48;s=L}do{if((h|0)==(m|0)){l=s+1|0;if(!(dt[t>>2]&32))_r(s,1,t)|0;if(c&(a|0)<1){s=l;break}if(dt[t>>2]&32){s=l;break}_r(5891,1,t)|0;s=l}else{if(s>>>0<=Y>>>0)break;do{s=s+-1|0;pt[s>>0]=48}while(s>>>0>Y>>>0)}}while(0);l=F-s|0;if(!(dt[t>>2]&32))_r(s,(a|0)>(l|0)?l:a,t)|0;a=a-l|0;h=h+4|0}while(h>>>0>>0&(a|0)>-1)}Nr(t,48,a+18|0,18,0);if(dt[t>>2]&32)break;_r(p,W-p|0,t)|0}}while(0);Nr(t,32,C,v,P^8192);a=(v|0)<(C|0)?C:v}else{f=(p&32|0)!=0;c=u!=u|0.0!=0.0;s=c?0:k;h=s+3|0;Nr(t,32,C,h,l);a=dt[t>>2]|0;if(!(a&32)){_r(S,s,t)|0;a=dt[t>>2]|0}if(!(a&32))_r(c?f?5883:5887:f?5875:5879,3,t)|0;Nr(t,32,C,h,P^8192);a=(h|0)<(C|0)?C:h}}while(0);m=E;continue t}default:{l=P;s=h;f=0;p=5839;a=O}}}while(0);e:do{if((A|0)==64){l=G;s=dt[l>>2]|0;l=dt[l+4>>2]|0;c=p&32;if(!((s|0)==0&(l|0)==0)){a=O;do{a=a+-1|0;pt[a>>0]=mt[5823+(s&15)>>0]|c;s=Zr(s|0,l|0,4)|0;l=rt}while(!((s|0)==0&(l|0)==0));A=G;if((f&8|0)==0|(dt[A>>2]|0)==0&(dt[A+4>>2]|0)==0){s=f;f=0;c=5839;A=77}else{s=f;f=2;c=5839+(p>>4)|0;A=77}}else{a=O;s=f;f=0;c=5839;A=77}}else if((A|0)==76){a=jr(a,s,O)|0;s=P;f=l;A=77}else if((A|0)==82){A=0;P=Mr(a,0,h)|0;S=(P|0)==0;m=a;s=S?h:P-a|0;f=0;p=5839;a=S?a+h|0:P}else if((A|0)==86){A=0;s=0;a=0;c=dt[G>>2]|0;while(1){l=dt[c>>2]|0;if(!l)break;a=mr(J,l)|0;if((a|0)<0|a>>>0>(h-s|0)>>>0)break;s=a+s|0;if(h>>>0>s>>>0)c=c+4|0;else break}if((a|0)<0){o=-1;break t}Nr(t,32,C,s,P);if(!s){a=0;A=98}else{l=0;h=dt[G>>2]|0;while(1){a=dt[h>>2]|0;if(!a){a=s;A=98;break e}a=mr(J,a)|0;l=a+l|0;if((l|0)>(s|0)){a=s;A=98;break e}if(!(dt[t>>2]&32))_r(J,a,t)|0;if(l>>>0>=s>>>0){a=s;A=98;break}else h=h+4|0}}}}while(0);if((A|0)==98){A=0;Nr(t,32,C,a,P^8192);m=E;a=(C|0)>(a|0)?C:a;continue}if((A|0)==77){A=0;l=(h|0)>-1?s&-65537:s;s=G;s=(dt[s>>2]|0)!=0|(dt[s+4>>2]|0)!=0;if((h|0)!=0|s){s=(s&1^1)+(j-a)|0;m=a;s=(h|0)>(s|0)?h:s;p=c;a=O}else{m=O;s=0;p=c;a=O}}c=a-m|0;s=(s|0)<(c|0)?c:s;h=f+s|0;a=(C|0)<(h|0)?h:C;Nr(t,32,a,h,l);if(!(dt[t>>2]&32))_r(p,f,t)|0;Nr(t,48,a,h,l^65536);Nr(t,48,s,c,0);if(!(dt[t>>2]&32))_r(m,c,t)|0;Nr(t,32,a,h,l^8192);m=E}t:do{if((A|0)==245)if(!t)if(e){o=1;while(1){e=dt[n+(o<<2)>>2]|0;if(!e)break;Lr(i+(o<<3)|0,e,r);o=o+1|0;if((o|0)>=10){o=1;break t}}if((o|0)<10)while(1){if(dt[n+(o<<2)>>2]|0){o=-1;break t}o=o+1|0;if((o|0)>=10){o=1;break}}else o=1}else o=0}while(0);vt=Q;return o|0}function zr(t){t=t|0;if(!(dt[t+68>>2]|0))Sr(t);return}function Fr(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0;i=t+20|0;n=dt[i>>2]|0;t=(dt[t+16>>2]|0)-n|0;t=t>>>0>r>>>0?r:t;Qr(n|0,e|0,t|0)|0;dt[i>>2]=(dt[i>>2]|0)+t;return r|0}function Lr(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0.0;t:do{if(e>>>0<=20)do{switch(e|0){case 9:{i=(dt[r>>2]|0)+(4-1)&~(4-1);e=dt[i>>2]|0;dt[r>>2]=i+4;dt[t>>2]=e;break t}case 10:{i=(dt[r>>2]|0)+(4-1)&~(4-1);e=dt[i>>2]|0;dt[r>>2]=i+4;i=t;dt[i>>2]=e;dt[i+4>>2]=((e|0)<0)<<31>>31;break t}case 11:{i=(dt[r>>2]|0)+(4-1)&~(4-1);e=dt[i>>2]|0;dt[r>>2]=i+4;i=t;dt[i>>2]=e;dt[i+4>>2]=0;break t}case 12:{i=(dt[r>>2]|0)+(8-1)&~(8-1);e=i;n=dt[e>>2]|0;e=dt[e+4>>2]|0;dt[r>>2]=i+8;i=t;dt[i>>2]=n;dt[i+4>>2]=e;break t}case 13:{n=(dt[r>>2]|0)+(4-1)&~(4-1);i=dt[n>>2]|0;dt[r>>2]=n+4;i=(i&65535)<<16>>16;n=t;dt[n>>2]=i;dt[n+4>>2]=((i|0)<0)<<31>>31;break t}case 14:{n=(dt[r>>2]|0)+(4-1)&~(4-1);i=dt[n>>2]|0;dt[r>>2]=n+4;n=t;dt[n>>2]=i&65535;dt[n+4>>2]=0;break t}case 15:{n=(dt[r>>2]|0)+(4-1)&~(4-1);i=dt[n>>2]|0;dt[r>>2]=n+4;i=(i&255)<<24>>24;n=t;dt[n>>2]=i;dt[n+4>>2]=((i|0)<0)<<31>>31;break t}case 16:{n=(dt[r>>2]|0)+(4-1)&~(4-1);i=dt[n>>2]|0;dt[r>>2]=n+4;n=t;dt[n>>2]=i&255;dt[n+4>>2]=0;break t}case 17:{n=(dt[r>>2]|0)+(8-1)&~(8-1);o=+tt[n>>3];dt[r>>2]=n+8;tt[t>>3]=o;break t}case 18:{n=(dt[r>>2]|0)+(8-1)&~(8-1);o=+tt[n>>3];dt[r>>2]=n+8;tt[t>>3]=o;break t}default:break t}}while(0)}while(0);return}function jr(t,e,r){t=t|0;e=e|0;r=r|0;var i=0;if(e>>>0>0|(e|0)==0&t>>>0>4294967295)while(1){i=ai(t|0,e|0,10,0)|0;r=r+-1|0;pt[r>>0]=i|48;i=oi(t|0,e|0,10,0)|0;if(e>>>0>9|(e|0)==9&t>>>0>4294967295){t=i;e=rt}else{t=i;break}}if(t)while(1){r=r+-1|0;pt[r>>0]=(t>>>0)%10|0|48;if(t>>>0<10)break;else t=(t>>>0)/10|0}return r|0}function Nr(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0;s=vt;vt=vt+256|0;a=s;do{if((r|0)>(i|0)&(n&73728|0)==0){n=r-i|0;Yr(a|0,e|0,(n>>>0>256?256:n)|0)|0;e=dt[t>>2]|0;o=(e&32|0)==0;if(n>>>0>255){i=r-i|0;do{if(o){_r(a,256,t)|0;e=dt[t>>2]|0}n=n+-256|0;o=(e&32|0)==0}while(n>>>0>255);if(o)n=i&255;else break}else if(!o)break;_r(a,n,t)|0}}while(0);vt=s;return}function Br(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,E=0,C=0,A=0,I=0,O=0,M=0,D=0,R=0,z=0,F=0,L=0;do{if(t>>>0<245){p=t>>>0<11?16:t+11&-8;t=p>>>3;s=dt[151]|0;r=s>>>t;if(r&3){t=(r&1^1)+t|0;i=t<<1;r=644+(i<<2)|0;i=644+(i+2<<2)|0;n=dt[i>>2]|0;o=n+8|0;a=dt[o>>2]|0;do{if((r|0)!=(a|0)){if(a>>>0<(dt[155]|0)>>>0)Xt();e=a+12|0;if((dt[e>>2]|0)==(n|0)){dt[e>>2]=r;dt[i>>2]=a;break}else Xt()}else dt[151]=s&~(1<>2]=L|3;L=n+(L|4)|0;dt[L>>2]=dt[L>>2]|1;L=o;return L|0}a=dt[153]|0;if(p>>>0>a>>>0){if(r){i=2<>>12&16;i=i>>>l;n=i>>>5&8;i=i>>>n;o=i>>>2&4;i=i>>>o;r=i>>>1&2;i=i>>>r;t=i>>>1&1;t=(n|l|o|r|t)+(i>>>t)|0;i=t<<1;r=644+(i<<2)|0;i=644+(i+2<<2)|0;o=dt[i>>2]|0;l=o+8|0;n=dt[l>>2]|0;do{if((r|0)!=(n|0)){if(n>>>0<(dt[155]|0)>>>0)Xt();e=n+12|0;if((dt[e>>2]|0)==(o|0)){dt[e>>2]=r;dt[i>>2]=n;u=dt[153]|0;break}else Xt()}else{dt[151]=s&~(1<>2]=p|3;s=o+p|0;dt[o+(p|4)>>2]=a|1;dt[o+L>>2]=a;if(u){n=dt[156]|0;r=u>>>3;e=r<<1;i=644+(e<<2)|0;t=dt[151]|0;r=1<>2]|0;if(e>>>0<(dt[155]|0)>>>0)Xt();else{h=t;c=e}}else{dt[151]=t|r;h=644+(e+2<<2)|0;c=i}dt[h>>2]=n;dt[c+12>>2]=n;dt[n+8>>2]=c;dt[n+12>>2]=i}dt[153]=a;dt[156]=s;L=l;return L|0}t=dt[152]|0;if(t){r=(t&0-t)+-1|0;F=r>>>12&16;r=r>>>F;z=r>>>5&8;r=r>>>z;L=r>>>2&4;r=r>>>L;t=r>>>1&2;r=r>>>t;i=r>>>1&1;i=dt[908+((z|F|L|t|i)+(r>>>i)<<2)>>2]|0;r=(dt[i+4>>2]&-8)-p|0;t=i;while(1){e=dt[t+16>>2]|0;if(!e){e=dt[t+20>>2]|0;if(!e){l=r;break}}t=(dt[e+4>>2]&-8)-p|0;L=t>>>0>>0;r=L?t:r;t=e;i=L?e:i}o=dt[155]|0;if(i>>>0>>0)Xt();s=i+p|0;if(i>>>0>=s>>>0)Xt();a=dt[i+24>>2]|0;r=dt[i+12>>2]|0;do{if((r|0)==(i|0)){t=i+20|0;e=dt[t>>2]|0;if(!e){t=i+16|0;e=dt[t>>2]|0;if(!e){f=0;break}}while(1){r=e+20|0;n=dt[r>>2]|0;if(n){e=n;t=r;continue}r=e+16|0;n=dt[r>>2]|0;if(!n)break;else{e=n;t=r}}if(t>>>0>>0)Xt();else{dt[t>>2]=0;f=e;break}}else{n=dt[i+8>>2]|0;if(n>>>0>>0)Xt();e=n+12|0;if((dt[e>>2]|0)!=(i|0))Xt();t=r+8|0;if((dt[t>>2]|0)==(i|0)){dt[e>>2]=r;dt[t>>2]=n;f=r;break}else Xt()}}while(0);do{if(a){e=dt[i+28>>2]|0;t=908+(e<<2)|0;if((i|0)==(dt[t>>2]|0)){dt[t>>2]=f;if(!f){dt[152]=dt[152]&~(1<>>0<(dt[155]|0)>>>0)Xt();e=a+16|0;if((dt[e>>2]|0)==(i|0))dt[e>>2]=f;else dt[a+20>>2]=f;if(!f)break}t=dt[155]|0;if(f>>>0>>0)Xt();dt[f+24>>2]=a;e=dt[i+16>>2]|0;do{if(e)if(e>>>0>>0)Xt();else{dt[f+16>>2]=e;dt[e+24>>2]=f;break}}while(0);e=dt[i+20>>2]|0;if(e)if(e>>>0<(dt[155]|0)>>>0)Xt();else{dt[f+20>>2]=e;dt[e+24>>2]=f;break}}}while(0);if(l>>>0<16){L=l+p|0;dt[i+4>>2]=L|3;L=i+(L+4)|0;dt[L>>2]=dt[L>>2]|1}else{dt[i+4>>2]=p|3;dt[i+(p|4)>>2]=l|1;dt[i+(l+p)>>2]=l;e=dt[153]|0;if(e){o=dt[156]|0;r=e>>>3;e=r<<1;n=644+(e<<2)|0;t=dt[151]|0;r=1<>2]|0;if(t>>>0<(dt[155]|0)>>>0)Xt();else{d=e;m=t}}else{dt[151]=t|r;d=644+(e+2<<2)|0;m=n}dt[d>>2]=o;dt[m+12>>2]=o;dt[o+8>>2]=m;dt[o+12>>2]=n}dt[153]=l;dt[156]=s}L=i+8|0;return L|0}else m=p}else m=p}else if(t>>>0<=4294967231){t=t+11|0;c=t&-8;h=dt[152]|0;if(h){r=0-c|0;t=t>>>8;if(t)if(c>>>0>16777215)u=31;else{m=(t+1048320|0)>>>16&8;b=t<>>16&4;b=b<>>16&2;u=14-(d|m|u)+(b<>>15)|0;u=c>>>(u+7|0)&1|u<<1}else u=0;t=dt[908+(u<<2)>>2]|0;t:do{if(!t){n=0;t=0;b=86}else{a=r;n=0;s=c<<((u|0)==31?0:25-(u>>>1)|0);l=t;t=0;while(1){o=dt[l+4>>2]&-8;r=o-c|0;if(r>>>0>>0)if((o|0)==(c|0)){o=l;t=l;b=90;break t}else t=l;else r=a;b=dt[l+20>>2]|0;l=dt[l+16+(s>>>31<<2)>>2]|0;n=(b|0)==0|(b|0)==(l|0)?n:b;if(!l){b=86;break}else{a=r;s=s<<1}}}}while(0);if((b|0)==86){if((n|0)==0&(t|0)==0){t=2<>>12&16;t=t>>>f;h=t>>>5&8;t=t>>>h;d=t>>>2&4;t=t>>>d;m=t>>>1&2;t=t>>>m;n=t>>>1&1;n=dt[908+((h|f|d|m|n)+(t>>>n)<<2)>>2]|0;t=0}if(!n){s=r;l=t}else{o=n;b=90}}if((b|0)==90)while(1){b=0;m=(dt[o+4>>2]&-8)-c|0;n=m>>>0>>0;r=n?m:r;t=n?o:t;n=dt[o+16>>2]|0;if(n){o=n;b=90;continue}o=dt[o+20>>2]|0;if(!o){s=r;l=t;break}else b=90}if((l|0)!=0?s>>>0<((dt[153]|0)-c|0)>>>0:0){n=dt[155]|0;if(l>>>0>>0)Xt();a=l+c|0;if(l>>>0>=a>>>0)Xt();o=dt[l+24>>2]|0;r=dt[l+12>>2]|0;do{if((r|0)==(l|0)){t=l+20|0;e=dt[t>>2]|0;if(!e){t=l+16|0;e=dt[t>>2]|0;if(!e){p=0;break}}while(1){r=e+20|0;i=dt[r>>2]|0;if(i){e=i;t=r;continue}r=e+16|0;i=dt[r>>2]|0;if(!i)break;else{e=i;t=r}}if(t>>>0>>0)Xt();else{dt[t>>2]=0;p=e;break}}else{i=dt[l+8>>2]|0;if(i>>>0>>0)Xt();e=i+12|0;if((dt[e>>2]|0)!=(l|0))Xt();t=r+8|0;if((dt[t>>2]|0)==(l|0)){dt[e>>2]=r;dt[t>>2]=i;p=r;break}else Xt()}}while(0);do{if(o){e=dt[l+28>>2]|0;t=908+(e<<2)|0;if((l|0)==(dt[t>>2]|0)){dt[t>>2]=p;if(!p){dt[152]=dt[152]&~(1<>>0<(dt[155]|0)>>>0)Xt();e=o+16|0;if((dt[e>>2]|0)==(l|0))dt[e>>2]=p;else dt[o+20>>2]=p;if(!p)break}t=dt[155]|0;if(p>>>0>>0)Xt();dt[p+24>>2]=o;e=dt[l+16>>2]|0;do{if(e)if(e>>>0>>0)Xt();else{dt[p+16>>2]=e;dt[e+24>>2]=p;break}}while(0);e=dt[l+20>>2]|0;if(e)if(e>>>0<(dt[155]|0)>>>0)Xt();else{dt[p+20>>2]=e;dt[e+24>>2]=p;break}}}while(0);t:do{if(s>>>0>=16){dt[l+4>>2]=c|3;dt[l+(c|4)>>2]=s|1;dt[l+(s+c)>>2]=s;e=s>>>3;if(s>>>0<256){t=e<<1;i=644+(t<<2)|0;r=dt[151]|0;e=1<>2]|0;if(t>>>0<(dt[155]|0)>>>0)Xt();else{v=e;_=t}}else{dt[151]=r|e;v=644+(t+2<<2)|0;_=i}dt[v>>2]=a;dt[_+12>>2]=a;dt[l+(c+8)>>2]=_;dt[l+(c+12)>>2]=i;break}e=s>>>8;if(e)if(s>>>0>16777215)i=31;else{F=(e+1048320|0)>>>16&8;L=e<>>16&4;L=L<>>16&2;i=14-(z|F|i)+(L<>>15)|0;i=s>>>(i+7|0)&1|i<<1}else i=0;e=908+(i<<2)|0;dt[l+(c+28)>>2]=i;dt[l+(c+20)>>2]=0;dt[l+(c+16)>>2]=0;t=dt[152]|0;r=1<>2]=a;dt[l+(c+24)>>2]=e;dt[l+(c+12)>>2]=a;dt[l+(c+8)>>2]=a;break}e=dt[e>>2]|0;e:do{if((dt[e+4>>2]&-8|0)!=(s|0)){i=s<<((i|0)==31?0:25-(i>>>1)|0);while(1){t=e+16+(i>>>31<<2)|0;r=dt[t>>2]|0;if(!r)break;if((dt[r+4>>2]&-8|0)==(s|0)){T=r;break e}else{i=i<<1;e=r}}if(t>>>0<(dt[155]|0)>>>0)Xt();else{dt[t>>2]=a;dt[l+(c+24)>>2]=e;dt[l+(c+12)>>2]=a;dt[l+(c+8)>>2]=a;break t}}else T=e}while(0);e=T+8|0;t=dt[e>>2]|0;L=dt[155]|0;if(t>>>0>=L>>>0&T>>>0>=L>>>0){dt[t+12>>2]=a;dt[e>>2]=a;dt[l+(c+8)>>2]=t;dt[l+(c+12)>>2]=T;dt[l+(c+24)>>2]=0;break}else Xt()}else{L=s+c|0;dt[l+4>>2]=L|3;L=l+(L+4)|0;dt[L>>2]=dt[L>>2]|1}}while(0);L=l+8|0;return L|0}else m=c}else m=c}else m=-1}while(0);r=dt[153]|0;if(r>>>0>=m>>>0){e=r-m|0;t=dt[156]|0;if(e>>>0>15){dt[156]=t+m;dt[153]=e;dt[t+(m+4)>>2]=e|1;dt[t+r>>2]=e;dt[t+4>>2]=m|3}else{dt[153]=0;dt[156]=0;dt[t+4>>2]=r|3;L=t+(r+4)|0;dt[L>>2]=dt[L>>2]|1}L=t+8|0;return L|0}t=dt[154]|0;if(t>>>0>m>>>0){F=t-m|0;dt[154]=F;L=dt[157]|0;dt[157]=L+m;dt[L+(m+4)>>2]=F|1;dt[L+4>>2]=m|3;L=L+8|0;return L|0}do{if(!(dt[269]|0)){t=Dt(30)|0;if(!(t+-1&t)){dt[271]=t;dt[270]=t;dt[272]=-1;dt[273]=-1;dt[274]=0;dt[262]=0;T=(Wt(0)|0)&-16^1431655768;dt[269]=T;break}else Xt()}}while(0);l=m+48|0;s=dt[271]|0;u=m+47|0;a=s+u|0;s=0-s|0;h=a&s;if(h>>>0<=m>>>0){L=0;return L|0}t=dt[261]|0;if((t|0)!=0?(_=dt[259]|0,T=_+h|0,T>>>0<=_>>>0|T>>>0>t>>>0):0){L=0;return L|0}t:do{if(!(dt[262]&4)){t=dt[157]|0;e:do{if(t){n=1052;while(1){r=dt[n>>2]|0;if(r>>>0<=t>>>0?(g=n+4|0,(r+(dt[g>>2]|0)|0)>>>0>t>>>0):0){o=n;t=g;break}n=dt[n+8>>2]|0;if(!n){b=174;break e}}r=a-(dt[154]|0)&s;if(r>>>0<2147483647){n=It(r|0)|0;T=(n|0)==((dt[o>>2]|0)+(dt[t>>2]|0)|0);t=T?r:0;if(T){if((n|0)!=(-1|0)){x=n;d=t;b=194;break t}}else b=184}else t=0}else b=174}while(0);do{if((b|0)==174){o=It(0)|0;if((o|0)!=(-1|0)){t=o;r=dt[270]|0;n=r+-1|0;if(!(n&t))r=h;else r=h-t+(n+t&0-r)|0;t=dt[259]|0;n=t+r|0;if(r>>>0>m>>>0&r>>>0<2147483647){T=dt[261]|0;if((T|0)!=0?n>>>0<=t>>>0|n>>>0>T>>>0:0){t=0;break}n=It(r|0)|0;T=(n|0)==(o|0);t=T?r:0;if(T){x=o;d=t;b=194;break t}else b=184}else t=0}else t=0}}while(0);e:do{if((b|0)==184){o=0-r|0;do{if(l>>>0>r>>>0&(r>>>0<2147483647&(n|0)!=(-1|0))?(y=dt[271]|0,y=u-r+y&0-y,y>>>0<2147483647):0)if((It(y|0)|0)==(-1|0)){It(o|0)|0;break e}else{r=y+r|0;break}}while(0);if((n|0)!=(-1|0)){x=n;d=r;b=194;break t}}}while(0);dt[262]=dt[262]|4;b=191}else{t=0;b=191}}while(0);if((((b|0)==191?h>>>0<2147483647:0)?(x=It(h|0)|0,w=It(0)|0,x>>>0>>0&((x|0)!=(-1|0)&(w|0)!=(-1|0))):0)?(k=w-x|0,S=k>>>0>(m+40|0)>>>0,S):0){d=S?k:t;b=194}if((b|0)==194){t=(dt[259]|0)+d|0;dt[259]=t;if(t>>>0>(dt[260]|0)>>>0)dt[260]=t;a=dt[157]|0;t:do{if(a){o=1052;do{t=dt[o>>2]|0;r=o+4|0;n=dt[r>>2]|0;if((x|0)==(t+n|0)){P=t;E=r;C=n;A=o;b=204;break}o=dt[o+8>>2]|0}while((o|0)!=0);if(((b|0)==204?(dt[A+12>>2]&8|0)==0:0)?a>>>0>>0&a>>>0>=P>>>0:0){dt[E>>2]=C+d;L=(dt[154]|0)+d|0;F=a+8|0;F=(F&7|0)==0?0:0-F&7;z=L-F|0;dt[157]=a+F;dt[154]=z;dt[a+(F+4)>>2]=z|1;dt[a+(L+4)>>2]=40;dt[158]=dt[273];break}t=dt[155]|0;if(x>>>0>>0){dt[155]=x;t=x}r=x+d|0;o=1052;while(1){if((dt[o>>2]|0)==(r|0)){n=o;r=o;b=212;break}o=dt[o+8>>2]|0;if(!o){r=1052;break}}if((b|0)==212)if(!(dt[r+12>>2]&8)){dt[n>>2]=x;f=r+4|0;dt[f>>2]=(dt[f>>2]|0)+d;f=x+8|0;f=(f&7|0)==0?0:0-f&7;u=x+(d+8)|0;u=(u&7|0)==0?0:0-u&7;e=x+(u+d)|0;c=f+m|0;p=x+c|0;h=e-(x+f)-m|0;dt[x+(f+4)>>2]=m|3;e:do{if((e|0)!=(a|0)){if((e|0)==(dt[156]|0)){L=(dt[153]|0)+h|0;dt[153]=L;dt[156]=p;dt[x+(c+4)>>2]=L|1;dt[x+(L+c)>>2]=L;break}s=d+4|0;r=dt[x+(s+u)>>2]|0;if((r&3|0)==1){l=r&-8;o=r>>>3;r:do{if(r>>>0>=256){a=dt[x+((u|24)+d)>>2]|0;i=dt[x+(d+12+u)>>2]|0;do{if((i|0)==(e|0)){n=u|16;i=x+(s+n)|0;r=dt[i>>2]|0;if(!r){i=x+(n+d)|0;r=dt[i>>2]|0;if(!r){R=0;break}}while(1){n=r+20|0;o=dt[n>>2]|0;if(o){r=o;i=n;continue}n=r+16|0;o=dt[n>>2]|0;if(!o)break;else{r=o;i=n}}if(i>>>0>>0)Xt();else{dt[i>>2]=0;R=r;break}}else{n=dt[x+((u|8)+d)>>2]|0;if(n>>>0>>0)Xt();t=n+12|0;if((dt[t>>2]|0)!=(e|0))Xt();r=i+8|0;if((dt[r>>2]|0)==(e|0)){dt[t>>2]=i;dt[r>>2]=n;R=i;break}else Xt()}}while(0);if(!a)break;t=dt[x+(d+28+u)>>2]|0;r=908+(t<<2)|0;do{if((e|0)!=(dt[r>>2]|0)){if(a>>>0<(dt[155]|0)>>>0)Xt();t=a+16|0;if((dt[t>>2]|0)==(e|0))dt[t>>2]=R;else dt[a+20>>2]=R;if(!R)break r}else{dt[r>>2]=R;if(R)break;dt[152]=dt[152]&~(1<>>0>>0)Xt();dt[R+24>>2]=a;e=u|16;t=dt[x+(e+d)>>2]|0;do{if(t)if(t>>>0>>0)Xt();else{dt[R+16>>2]=t;dt[t+24>>2]=R;break}}while(0);e=dt[x+(s+e)>>2]|0;if(!e)break;if(e>>>0<(dt[155]|0)>>>0)Xt();else{dt[R+20>>2]=e;dt[e+24>>2]=R;break}}else{i=dt[x+((u|8)+d)>>2]|0;n=dt[x+(d+12+u)>>2]|0;r=644+(o<<1<<2)|0;do{if((i|0)!=(r|0)){if(i>>>0>>0)Xt();if((dt[i+12>>2]|0)==(e|0))break;Xt()}}while(0);if((n|0)==(i|0)){dt[151]=dt[151]&~(1<>>0>>0)Xt();t=n+8|0;if((dt[t>>2]|0)==(e|0)){I=t;break}Xt()}}while(0);dt[i+12>>2]=n;dt[I>>2]=i}}while(0);e=x+((l|u)+d)|0;n=l+h|0}else n=h;e=e+4|0;dt[e>>2]=dt[e>>2]&-2;dt[x+(c+4)>>2]=n|1;dt[x+(n+c)>>2]=n;e=n>>>3;if(n>>>0<256){t=e<<1;i=644+(t<<2)|0;r=dt[151]|0;e=1<>2]|0;if(t>>>0>=(dt[155]|0)>>>0){z=e;F=t;break}Xt()}}while(0);dt[z>>2]=p;dt[F+12>>2]=p;dt[x+(c+8)>>2]=F;dt[x+(c+12)>>2]=i;break}e=n>>>8;do{if(!e)i=0;else{if(n>>>0>16777215){i=31;break}z=(e+1048320|0)>>>16&8;F=e<>>16&4;F=F<>>16&2;i=14-(R|z|i)+(F<>>15)|0;i=n>>>(i+7|0)&1|i<<1}}while(0);e=908+(i<<2)|0;dt[x+(c+28)>>2]=i;dt[x+(c+20)>>2]=0;dt[x+(c+16)>>2]=0;t=dt[152]|0;r=1<>2]=p;dt[x+(c+24)>>2]=e;dt[x+(c+12)>>2]=p;dt[x+(c+8)>>2]=p;break}e=dt[e>>2]|0;r:do{if((dt[e+4>>2]&-8|0)!=(n|0)){i=n<<((i|0)==31?0:25-(i>>>1)|0);while(1){t=e+16+(i>>>31<<2)|0;r=dt[t>>2]|0;if(!r)break;if((dt[r+4>>2]&-8|0)==(n|0)){L=r;break r}else{i=i<<1;e=r}}if(t>>>0<(dt[155]|0)>>>0)Xt();else{dt[t>>2]=p;dt[x+(c+24)>>2]=e;dt[x+(c+12)>>2]=p;dt[x+(c+8)>>2]=p;break e}}else L=e}while(0);e=L+8|0;t=dt[e>>2]|0;F=dt[155]|0;if(t>>>0>=F>>>0&L>>>0>=F>>>0){dt[t+12>>2]=p;dt[e>>2]=p;dt[x+(c+8)>>2]=t;dt[x+(c+12)>>2]=L;dt[x+(c+24)>>2]=0;break}else Xt()}else{L=(dt[154]|0)+h|0;dt[154]=L;dt[157]=p;dt[x+(c+4)>>2]=L|1}}while(0);L=x+(f|8)|0;return L|0}else r=1052;while(1){t=dt[r>>2]|0;if(t>>>0<=a>>>0?(e=dt[r+4>>2]|0,i=t+e|0,i>>>0>a>>>0):0)break;r=dt[r+8>>2]|0}n=t+(e+-39)|0;t=t+(e+-47+((n&7|0)==0?0:0-n&7))|0;n=a+16|0;t=t>>>0>>0?a:t;e=t+8|0;r=x+8|0;r=(r&7|0)==0?0:0-r&7;L=d+-40-r|0;dt[157]=x+r;dt[154]=L;dt[x+(r+4)>>2]=L|1;dt[x+(d+-36)>>2]=40;dt[158]=dt[273];r=t+4|0;dt[r>>2]=27;dt[e>>2]=dt[263];dt[e+4>>2]=dt[264];dt[e+8>>2]=dt[265];dt[e+12>>2]=dt[266];dt[263]=x;dt[264]=d;dt[266]=0;dt[265]=e;e=t+28|0;dt[e>>2]=7;if((t+32|0)>>>0>>0)do{L=e;e=e+4|0;dt[e>>2]=7}while((L+8|0)>>>0>>0);if((t|0)!=(a|0)){o=t-a|0;dt[r>>2]=dt[r>>2]&-2;dt[a+4>>2]=o|1;dt[t>>2]=o;e=o>>>3;if(o>>>0<256){t=e<<1;i=644+(t<<2)|0;r=dt[151]|0;e=1<>2]|0;if(t>>>0<(dt[155]|0)>>>0)Xt();else{O=e;M=t}}else{dt[151]=r|e;O=644+(t+2<<2)|0;M=i}dt[O>>2]=a;dt[M+12>>2]=a;dt[a+8>>2]=M;dt[a+12>>2]=i;break}e=o>>>8;if(e)if(o>>>0>16777215)i=31;else{F=(e+1048320|0)>>>16&8;L=e<>>16&4;L=L<>>16&2;i=14-(z|F|i)+(L<>>15)|0;i=o>>>(i+7|0)&1|i<<1}else i=0;r=908+(i<<2)|0;dt[a+28>>2]=i;dt[a+20>>2]=0;dt[n>>2]=0;e=dt[152]|0;t=1<>2]=a;dt[a+24>>2]=r;dt[a+12>>2]=a;dt[a+8>>2]=a;break}e=dt[r>>2]|0;e:do{if((dt[e+4>>2]&-8|0)!=(o|0)){i=o<<((i|0)==31?0:25-(i>>>1)|0);while(1){t=e+16+(i>>>31<<2)|0;r=dt[t>>2]|0;if(!r)break;if((dt[r+4>>2]&-8|0)==(o|0)){D=r;break e}else{i=i<<1;e=r}}if(t>>>0<(dt[155]|0)>>>0)Xt();else{dt[t>>2]=a;dt[a+24>>2]=e;dt[a+12>>2]=a;dt[a+8>>2]=a;break t}}else D=e}while(0);e=D+8|0;t=dt[e>>2]|0;L=dt[155]|0;if(t>>>0>=L>>>0&D>>>0>=L>>>0){dt[t+12>>2]=a;dt[e>>2]=a;dt[a+8>>2]=t;dt[a+12>>2]=D;dt[a+24>>2]=0;break}else Xt()}}else{L=dt[155]|0;if((L|0)==0|x>>>0>>0)dt[155]=x;dt[263]=x;dt[264]=d;dt[266]=0;dt[160]=dt[269];dt[159]=-1;e=0;do{L=e<<1;F=644+(L<<2)|0;dt[644+(L+3<<2)>>2]=F;dt[644+(L+2<<2)>>2]=F;e=e+1|0}while((e|0)!=32);L=x+8|0;L=(L&7|0)==0?0:0-L&7;F=d+-40-L|0;dt[157]=x+L;dt[154]=F;dt[x+(L+4)>>2]=F|1;dt[x+(d+-36)>>2]=40;dt[158]=dt[273]}}while(0);e=dt[154]|0;if(e>>>0>m>>>0){F=e-m|0;dt[154]=F;L=dt[157]|0;dt[157]=L+m;dt[L+(m+4)>>2]=F|1;dt[L+4>>2]=m|3;L=L+8|0;return L|0}}L=hr()|0;dt[L>>2]=12;L=0;return L|0}function Ur(t){t=t|0;var e=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0;if(!t)return;e=t+-8|0;s=dt[155]|0;if(e>>>0>>0)Xt();r=dt[t+-4>>2]|0;i=r&3;if((i|0)==1)Xt();p=r&-8;m=t+(p+-8)|0;do{if(!(r&1)){e=dt[e>>2]|0;if(!i)return;l=-8-e|0;h=t+l|0;c=e+p|0;if(h>>>0>>0)Xt();if((h|0)==(dt[156]|0)){e=t+(p+-4)|0;r=dt[e>>2]|0;if((r&3|0)!=3){y=h;o=c;break}dt[153]=c;dt[e>>2]=r&-2;dt[t+(l+4)>>2]=c|1;dt[m>>2]=c;return}n=e>>>3;if(e>>>0<256){i=dt[t+(l+8)>>2]|0;r=dt[t+(l+12)>>2]|0;e=644+(n<<1<<2)|0;if((i|0)!=(e|0)){if(i>>>0>>0)Xt();if((dt[i+12>>2]|0)!=(h|0))Xt()}if((r|0)==(i|0)){dt[151]=dt[151]&~(1<>>0>>0)Xt();e=r+8|0;if((dt[e>>2]|0)==(h|0))a=e;else Xt()}else a=r+8|0;dt[i+12>>2]=r;dt[a>>2]=i;y=h;o=c;break}a=dt[t+(l+24)>>2]|0;i=dt[t+(l+12)>>2]|0;do{if((i|0)==(h|0)){r=t+(l+20)|0;e=dt[r>>2]|0;if(!e){r=t+(l+16)|0;e=dt[r>>2]|0;if(!e){u=0;break}}while(1){i=e+20|0;n=dt[i>>2]|0;if(n){e=n;r=i;continue}i=e+16|0;n=dt[i>>2]|0;if(!n)break;else{e=n;r=i}}if(r>>>0>>0)Xt();else{dt[r>>2]=0;u=e;break}}else{n=dt[t+(l+8)>>2]|0;if(n>>>0>>0)Xt();e=n+12|0;if((dt[e>>2]|0)!=(h|0))Xt();r=i+8|0;if((dt[r>>2]|0)==(h|0)){dt[e>>2]=i;dt[r>>2]=n;u=i;break}else Xt()}}while(0);if(a){e=dt[t+(l+28)>>2]|0;r=908+(e<<2)|0;if((h|0)==(dt[r>>2]|0)){dt[r>>2]=u;if(!u){dt[152]=dt[152]&~(1<>>0<(dt[155]|0)>>>0)Xt();e=a+16|0;if((dt[e>>2]|0)==(h|0))dt[e>>2]=u;else dt[a+20>>2]=u;if(!u){y=h;o=c;break}}r=dt[155]|0;if(u>>>0>>0)Xt();dt[u+24>>2]=a;e=dt[t+(l+16)>>2]|0;do{if(e)if(e>>>0>>0)Xt();else{dt[u+16>>2]=e;dt[e+24>>2]=u;break}}while(0);e=dt[t+(l+20)>>2]|0;if(e)if(e>>>0<(dt[155]|0)>>>0)Xt();else{dt[u+20>>2]=e;dt[e+24>>2]=u;y=h;o=c;break}else{y=h;o=c}}else{y=h;o=c}}else{y=e;o=p}}while(0);if(y>>>0>=m>>>0)Xt();e=t+(p+-4)|0;r=dt[e>>2]|0;if(!(r&1))Xt();if(!(r&2)){if((m|0)==(dt[157]|0)){_=(dt[154]|0)+o|0;dt[154]=_;dt[157]=y;dt[y+4>>2]=_|1;if((y|0)!=(dt[156]|0))return;dt[156]=0;dt[153]=0;return}if((m|0)==(dt[156]|0)){_=(dt[153]|0)+o|0;dt[153]=_;dt[156]=y;dt[y+4>>2]=_|1;dt[y+_>>2]=_;return}o=(r&-8)+o|0;n=r>>>3;do{if(r>>>0>=256){a=dt[t+(p+16)>>2]|0;e=dt[t+(p|4)>>2]|0;do{if((e|0)==(m|0)){r=t+(p+12)|0;e=dt[r>>2]|0;if(!e){r=t+(p+8)|0;e=dt[r>>2]|0;if(!e){d=0;break}}while(1){i=e+20|0;n=dt[i>>2]|0;if(n){e=n;r=i;continue}i=e+16|0;n=dt[i>>2]|0;if(!n)break;else{e=n;r=i}}if(r>>>0<(dt[155]|0)>>>0)Xt();else{dt[r>>2]=0;d=e;break}}else{r=dt[t+p>>2]|0;if(r>>>0<(dt[155]|0)>>>0)Xt();i=r+12|0;if((dt[i>>2]|0)!=(m|0))Xt();n=e+8|0;if((dt[n>>2]|0)==(m|0)){dt[i>>2]=e;dt[n>>2]=r;d=e;break}else Xt()}}while(0);if(a){e=dt[t+(p+20)>>2]|0;r=908+(e<<2)|0;if((m|0)==(dt[r>>2]|0)){dt[r>>2]=d;if(!d){dt[152]=dt[152]&~(1<>>0<(dt[155]|0)>>>0)Xt();e=a+16|0;if((dt[e>>2]|0)==(m|0))dt[e>>2]=d;else dt[a+20>>2]=d;if(!d)break}r=dt[155]|0;if(d>>>0>>0)Xt();dt[d+24>>2]=a;e=dt[t+(p+8)>>2]|0;do{if(e)if(e>>>0>>0)Xt();else{dt[d+16>>2]=e;dt[e+24>>2]=d;break}}while(0);e=dt[t+(p+12)>>2]|0;if(e)if(e>>>0<(dt[155]|0)>>>0)Xt();else{dt[d+20>>2]=e;dt[e+24>>2]=d;break}}}else{i=dt[t+p>>2]|0;r=dt[t+(p|4)>>2]|0;e=644+(n<<1<<2)|0;if((i|0)!=(e|0)){if(i>>>0<(dt[155]|0)>>>0)Xt();if((dt[i+12>>2]|0)!=(m|0))Xt()}if((r|0)==(i|0)){dt[151]=dt[151]&~(1<>>0<(dt[155]|0)>>>0)Xt();e=r+8|0;if((dt[e>>2]|0)==(m|0))f=e;else Xt()}else f=r+8|0;dt[i+12>>2]=r;dt[f>>2]=i}}while(0);dt[y+4>>2]=o|1;dt[y+o>>2]=o;if((y|0)==(dt[156]|0)){dt[153]=o;return}}else{dt[e>>2]=r&-2;dt[y+4>>2]=o|1;dt[y+o>>2]=o}e=o>>>3;if(o>>>0<256){r=e<<1;n=644+(r<<2)|0;i=dt[151]|0;e=1<>2]|0;if(r>>>0<(dt[155]|0)>>>0)Xt();else{g=e;v=r}}else{dt[151]=i|e;g=644+(r+2<<2)|0;v=n}dt[g>>2]=y;dt[v+12>>2]=y;dt[y+8>>2]=v;dt[y+12>>2]=n;return}e=o>>>8;if(e)if(o>>>0>16777215)n=31;else{g=(e+1048320|0)>>>16&8;v=e<>>16&4;v=v<>>16&2;n=14-(m|g|n)+(v<>>15)|0;n=o>>>(n+7|0)&1|n<<1}else n=0;e=908+(n<<2)|0;dt[y+28>>2]=n;dt[y+20>>2]=0;dt[y+16>>2]=0;r=dt[152]|0;i=1<>2]|0;e:do{if((dt[e+4>>2]&-8|0)!=(o|0)){n=o<<((n|0)==31?0:25-(n>>>1)|0);while(1){r=e+16+(n>>>31<<2)|0;i=dt[r>>2]|0;if(!i)break;if((dt[i+4>>2]&-8|0)==(o|0)){_=i;break e}else{n=n<<1;e=i}}if(r>>>0<(dt[155]|0)>>>0)Xt();else{dt[r>>2]=y;dt[y+24>>2]=e;dt[y+12>>2]=y;dt[y+8>>2]=y;break t}}else _=e}while(0);e=_+8|0;r=dt[e>>2]|0;v=dt[155]|0;if(r>>>0>=v>>>0&_>>>0>=v>>>0){dt[r+12>>2]=y;dt[e>>2]=y;dt[y+8>>2]=r;dt[y+12>>2]=_;dt[y+24>>2]=0;break}else Xt()}else{dt[152]=r|i;dt[e>>2]=y;dt[y+24>>2]=e;dt[y+12>>2]=y;dt[y+8>>2]=y}}while(0);y=(dt[159]|0)+-1|0;dt[159]=y;if(!y)e=1060;else return;while(1){e=dt[e>>2]|0;if(!e)break;else e=e+8|0}dt[159]=-1;return}function Xr(t,e){t=t|0;e=e|0;var r=0,i=0;if(!t){t=Br(e)|0;return t|0}if(e>>>0>4294967231){t=hr()|0;dt[t>>2]=12;t=0;return t|0}r=Wr(t+-8|0,e>>>0<11?16:e+11&-8)|0;if(r){t=r+8|0;return t|0}r=Br(e)|0;if(!r){t=0;return t|0}i=dt[t+-4>>2]|0;i=(i&-8)-((i&3|0)==0?8:4)|0;Qr(r|0,t|0,(i>>>0>>0?i:e)|0)|0;Ur(t);t=r;return t|0}function Hr(t){t=t|0;var e=0;if(!t){e=0;return e|0}t=dt[t+-4>>2]|0;e=t&3;if((e|0)==1){e=0;return e|0}e=(t&-8)-((e|0)==0?8:4)|0;return e|0}function Wr(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0;p=t+4|0;d=dt[p>>2]|0;l=d&-8;h=t+l|0;s=dt[155]|0;r=d&3;if(!((r|0)!=1&t>>>0>=s>>>0&t>>>0>>0))Xt();i=t+(l|4)|0;n=dt[i>>2]|0;if(!(n&1))Xt();if(!r){if(e>>>0<256){t=0;return t|0}if(l>>>0>=(e+4|0)>>>0?(l-e|0)>>>0<=dt[271]<<1>>>0:0)return t|0;t=0;return t|0}if(l>>>0>=e>>>0){r=l-e|0;if(r>>>0<=15)return t|0;dt[p>>2]=d&1|e|2;dt[t+(e+4)>>2]=r|3;dt[i>>2]=dt[i>>2]|1;qr(t+e|0,r);return t|0}if((h|0)==(dt[157]|0)){r=(dt[154]|0)+l|0;if(r>>>0<=e>>>0){t=0;return t|0}f=r-e|0;dt[p>>2]=d&1|e|2;dt[t+(e+4)>>2]=f|1;dt[157]=t+e;dt[154]=f;return t|0}if((h|0)==(dt[156]|0)){i=(dt[153]|0)+l|0;if(i>>>0>>0){t=0;return t|0}r=i-e|0;if(r>>>0>15){dt[p>>2]=d&1|e|2;dt[t+(e+4)>>2]=r|1;dt[t+i>>2]=r;i=t+(i+4)|0;dt[i>>2]=dt[i>>2]&-2;i=t+e|0}else{dt[p>>2]=d&1|i|2;i=t+(i+4)|0;dt[i>>2]=dt[i>>2]|1;i=0;r=0}dt[153]=r;dt[156]=i;return t|0}if(n&2){t=0;return t|0}c=(n&-8)+l|0;if(c>>>0>>0){t=0;return t|0}f=c-e|0;o=n>>>3;do{if(n>>>0>=256){a=dt[t+(l+24)>>2]|0;o=dt[t+(l+12)>>2]|0;do{if((o|0)==(h|0)){i=t+(l+20)|0;r=dt[i>>2]|0;if(!r){i=t+(l+16)|0;r=dt[i>>2]|0;if(!r){u=0;break}}while(1){n=r+20|0;o=dt[n>>2]|0;if(o){r=o;i=n;continue}n=r+16|0;o=dt[n>>2]|0;if(!o)break;else{r=o;i=n}}if(i>>>0>>0)Xt();else{dt[i>>2]=0;u=r;break}}else{n=dt[t+(l+8)>>2]|0;if(n>>>0>>0)Xt();r=n+12|0;if((dt[r>>2]|0)!=(h|0))Xt();i=o+8|0;if((dt[i>>2]|0)==(h|0)){dt[r>>2]=o;dt[i>>2]=n;u=o;break}else Xt()}}while(0);if(a){r=dt[t+(l+28)>>2]|0;i=908+(r<<2)|0;if((h|0)==(dt[i>>2]|0)){dt[i>>2]=u;if(!u){dt[152]=dt[152]&~(1<>>0<(dt[155]|0)>>>0)Xt();r=a+16|0;if((dt[r>>2]|0)==(h|0))dt[r>>2]=u;else dt[a+20>>2]=u;if(!u)break}i=dt[155]|0;if(u>>>0>>0)Xt();dt[u+24>>2]=a;r=dt[t+(l+16)>>2]|0;do{if(r)if(r>>>0>>0)Xt();else{dt[u+16>>2]=r;dt[r+24>>2]=u;break}}while(0);r=dt[t+(l+20)>>2]|0;if(r)if(r>>>0<(dt[155]|0)>>>0)Xt();else{dt[u+20>>2]=r;dt[r+24>>2]=u;break}}}else{n=dt[t+(l+8)>>2]|0;i=dt[t+(l+12)>>2]|0;r=644+(o<<1<<2)|0;if((n|0)!=(r|0)){if(n>>>0>>0)Xt();if((dt[n+12>>2]|0)!=(h|0))Xt()}if((i|0)==(n|0)){dt[151]=dt[151]&~(1<>>0>>0)Xt();r=i+8|0;if((dt[r>>2]|0)==(h|0))a=r;else Xt()}else a=i+8|0;dt[n+12>>2]=i;dt[a>>2]=n}}while(0);if(f>>>0<16){dt[p>>2]=c|d&1|2;e=t+(c|4)|0;dt[e>>2]=dt[e>>2]|1;return t|0}else{dt[p>>2]=d&1|e|2;dt[t+(e+4)>>2]=f|3;d=t+(c|4)|0;dt[d>>2]=dt[d>>2]|1;qr(t+e|0,f);return t|0}return 0}function qr(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0;m=t+e|0;r=dt[t+4>>2]|0;do{if(!(r&1)){u=dt[t>>2]|0;if(!(r&3))return;f=t+(0-u)|0;c=u+e|0;l=dt[155]|0;if(f>>>0>>0)Xt();if((f|0)==(dt[156]|0)){i=t+(e+4)|0;r=dt[i>>2]|0;if((r&3|0)!=3){_=f;a=c;break}dt[153]=c;dt[i>>2]=r&-2;dt[t+(4-u)>>2]=c|1;dt[m>>2]=c;return}o=u>>>3;if(u>>>0<256){n=dt[t+(8-u)>>2]|0;i=dt[t+(12-u)>>2]|0;r=644+(o<<1<<2)|0;if((n|0)!=(r|0)){if(n>>>0>>0)Xt();if((dt[n+12>>2]|0)!=(f|0))Xt()}if((i|0)==(n|0)){dt[151]=dt[151]&~(1<>>0>>0)Xt();r=i+8|0;if((dt[r>>2]|0)==(f|0))s=r;else Xt()}else s=i+8|0;dt[n+12>>2]=i;dt[s>>2]=n;_=f;a=c;break}s=dt[t+(24-u)>>2]|0;n=dt[t+(12-u)>>2]|0;do{if((n|0)==(f|0)){n=16-u|0;i=t+(n+4)|0;r=dt[i>>2]|0;if(!r){i=t+n|0;r=dt[i>>2]|0;if(!r){h=0;break}}while(1){n=r+20|0;o=dt[n>>2]|0;if(o){r=o;i=n;continue}n=r+16|0;o=dt[n>>2]|0;if(!o)break;else{r=o;i=n}}if(i>>>0>>0)Xt();else{dt[i>>2]=0;h=r;break}}else{o=dt[t+(8-u)>>2]|0;if(o>>>0>>0)Xt();r=o+12|0;if((dt[r>>2]|0)!=(f|0))Xt();i=n+8|0;if((dt[i>>2]|0)==(f|0)){dt[r>>2]=n;dt[i>>2]=o;h=n;break}else Xt()}}while(0);if(s){r=dt[t+(28-u)>>2]|0;i=908+(r<<2)|0;if((f|0)==(dt[i>>2]|0)){dt[i>>2]=h;if(!h){dt[152]=dt[152]&~(1<>>0<(dt[155]|0)>>>0)Xt();r=s+16|0;if((dt[r>>2]|0)==(f|0))dt[r>>2]=h;else dt[s+20>>2]=h;if(!h){_=f;a=c;break}}n=dt[155]|0;if(h>>>0>>0)Xt();dt[h+24>>2]=s;r=16-u|0;i=dt[t+r>>2]|0;do{if(i)if(i>>>0>>0)Xt();else{dt[h+16>>2]=i;dt[i+24>>2]=h;break}}while(0);r=dt[t+(r+4)>>2]|0;if(r)if(r>>>0<(dt[155]|0)>>>0)Xt();else{dt[h+20>>2]=r;dt[r+24>>2]=h;_=f;a=c;break}else{_=f;a=c}}else{_=f;a=c}}else{_=t;a=e}}while(0);l=dt[155]|0;if(m>>>0>>0)Xt();r=t+(e+4)|0;i=dt[r>>2]|0;if(!(i&2)){if((m|0)==(dt[157]|0)){v=(dt[154]|0)+a|0;dt[154]=v;dt[157]=_;dt[_+4>>2]=v|1;if((_|0)!=(dt[156]|0))return;dt[156]=0;dt[153]=0;return}if((m|0)==(dt[156]|0)){v=(dt[153]|0)+a|0;dt[153]=v;dt[156]=_;dt[_+4>>2]=v|1;dt[_+v>>2]=v;return}a=(i&-8)+a|0;o=i>>>3;do{if(i>>>0>=256){s=dt[t+(e+24)>>2]|0;n=dt[t+(e+12)>>2]|0;do{if((n|0)==(m|0)){i=t+(e+20)|0;r=dt[i>>2]|0;if(!r){i=t+(e+16)|0;r=dt[i>>2]|0;if(!r){d=0;break}}while(1){n=r+20|0;o=dt[n>>2]|0;if(o){r=o;i=n;continue}n=r+16|0;o=dt[n>>2]|0;if(!o)break;else{r=o;i=n}}if(i>>>0>>0)Xt();else{dt[i>>2]=0;d=r;break}}else{o=dt[t+(e+8)>>2]|0;if(o>>>0>>0)Xt();r=o+12|0;if((dt[r>>2]|0)!=(m|0))Xt();i=n+8|0;if((dt[i>>2]|0)==(m|0)){dt[r>>2]=n;dt[i>>2]=o;d=n;break}else Xt()}}while(0);if(s){r=dt[t+(e+28)>>2]|0;i=908+(r<<2)|0;if((m|0)==(dt[i>>2]|0)){dt[i>>2]=d;if(!d){dt[152]=dt[152]&~(1<>>0<(dt[155]|0)>>>0)Xt();r=s+16|0;if((dt[r>>2]|0)==(m|0))dt[r>>2]=d;else dt[s+20>>2]=d;if(!d)break}i=dt[155]|0;if(d>>>0>>0)Xt();dt[d+24>>2]=s;r=dt[t+(e+16)>>2]|0;do{if(r)if(r>>>0>>0)Xt();else{dt[d+16>>2]=r;dt[r+24>>2]=d;break}}while(0);r=dt[t+(e+20)>>2]|0;if(r)if(r>>>0<(dt[155]|0)>>>0)Xt();else{dt[d+20>>2]=r;dt[r+24>>2]=d;break}}}else{n=dt[t+(e+8)>>2]|0;i=dt[t+(e+12)>>2]|0;r=644+(o<<1<<2)|0;if((n|0)!=(r|0)){if(n>>>0>>0)Xt();if((dt[n+12>>2]|0)!=(m|0))Xt()}if((i|0)==(n|0)){dt[151]=dt[151]&~(1<>>0>>0)Xt();r=i+8|0;if((dt[r>>2]|0)==(m|0))p=r;else Xt()}else p=i+8|0;dt[n+12>>2]=i;dt[p>>2]=n}}while(0);dt[_+4>>2]=a|1;dt[_+a>>2]=a;if((_|0)==(dt[156]|0)){dt[153]=a;return}}else{dt[r>>2]=i&-2;dt[_+4>>2]=a|1;dt[_+a>>2]=a}r=a>>>3;if(a>>>0<256){i=r<<1;o=644+(i<<2)|0;n=dt[151]|0;r=1<>2]|0;if(i>>>0<(dt[155]|0)>>>0)Xt();else{g=r;v=i}}else{dt[151]=n|r;g=644+(i+2<<2)|0;v=o}dt[g>>2]=_;dt[v+12>>2]=_;dt[_+8>>2]=v;dt[_+12>>2]=o;return}r=a>>>8;if(r)if(a>>>0>16777215)o=31;else{g=(r+1048320|0)>>>16&8;v=r<>>16&4;v=v<>>16&2;o=14-(m|g|o)+(v<>>15)|0;o=a>>>(o+7|0)&1|o<<1}else o=0;r=908+(o<<2)|0;dt[_+28>>2]=o;dt[_+20>>2]=0;dt[_+16>>2]=0;i=dt[152]|0;n=1<>2]=_;dt[_+24>>2]=r;dt[_+12>>2]=_;dt[_+8>>2]=_;return}r=dt[r>>2]|0;t:do{if((dt[r+4>>2]&-8|0)!=(a|0)){o=a<<((o|0)==31?0:25-(o>>>1)|0);while(1){i=r+16+(o>>>31<<2)|0;n=dt[i>>2]|0;if(!n)break;if((dt[n+4>>2]&-8|0)==(a|0)){r=n;break t}else{o=o<<1;r=n}}if(i>>>0<(dt[155]|0)>>>0)Xt();dt[i>>2]=_;dt[_+24>>2]=r;dt[_+12>>2]=_;dt[_+8>>2]=_;return}}while(0);i=r+8|0;n=dt[i>>2]|0;v=dt[155]|0;if(!(n>>>0>=v>>>0&r>>>0>=v>>>0))Xt();dt[n+12>>2]=_;dt[i>>2]=_;dt[_+8>>2]=n;dt[_+12>>2]=r;dt[_+24>>2]=0;return}function Gr(){}function Vr(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;i=e-i-(r>>>0>t>>>0|0)>>>0;return(rt=i,t-r>>>0|0)|0}function Yr(t,e,r){t=t|0;e=e|0;r=r|0;var i=0,n=0,o=0,a=0;i=t+r|0;if((r|0)>=20){e=e&255;o=t&3;a=e|e<<8|e<<16|e<<24;n=i&~3;if(o){o=t+4-o|0;while((t|0)<(o|0)){pt[t>>0]=e;t=t+1|0}}while((t|0)<(n|0)){dt[t>>2]=a;t=t+4|0}}while((t|0)<(i|0)){pt[t>>0]=e;t=t+1|0}return t-r|0}function Zr(t,e,r){t=t|0;e=e|0;r=r|0;if((r|0)<32){rt=e>>>r;return t>>>r|(e&(1<>>r-32|0}function Jr(t,e,r){t=t|0;e=e|0;r=r|0;if((r|0)<32){rt=e<>>32-r;return t<>>0;return(rt=e+i+(r>>>0>>0|0)>>>0,r|0)|0}function Qr(t,e,r){t=t|0;e=e|0;r=r|0;var i=0;if((r|0)>=4096)return Mt(t|0,e|0,r|0)|0;i=t|0;if((t&3)==(e&3)){while(t&3){if(!r)return i|0;pt[t>>0]=pt[e>>0]|0;t=t+1|0;e=e+1|0;r=r-1|0}while((r|0)>=4){dt[t>>2]=dt[e>>2];t=t+4|0;e=e+4|0;r=r-4|0}}while((r|0)>0){pt[t>>0]=pt[e>>0]|0;t=t+1|0;e=e+1|0;r=r-1|0}return i|0}function $r(t,e,r){t=t|0;e=e|0;r=r|0;if((r|0)<32){rt=e>>r;return t>>>r|(e&(1<>r-32|0}function ti(t){t=t|0;var e=0;e=pt[g+(t&255)>>0]|0;if((e|0)<8)return e|0;e=pt[g+(t>>8&255)>>0]|0;if((e|0)<8)return e+8|0;e=pt[g+(t>>16&255)>>0]|0;if((e|0)<8)return e+16|0;return(pt[g+(t>>>24)>>0]|0)+24|0}function ei(t,e){t=t|0;e=e|0;var r=0,i=0,n=0,o=0;o=t&65535;n=e&65535;r=_t(n,o)|0;i=t>>>16;t=(r>>>16)+(_t(n,i)|0)|0;n=e>>>16;e=_t(n,o)|0;return(rt=(t>>>16)+(_t(n,i)|0)+(((t&65535)+e|0)>>>16)|0,t+e<<16|r&65535|0)|0}function ri(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0,o=0,a=0,s=0,l=0,u=0;u=e>>31|((e|0)<0?-1:0)<<1;l=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;o=i>>31|((i|0)<0?-1:0)<<1;n=((i|0)<0?-1:0)>>31|((i|0)<0?-1:0)<<1;s=Vr(u^t,l^e,u,l)|0;a=rt;t=o^u;e=n^l;return Vr((si(s,a,Vr(o^r,n^i,o,n)|0,rt,0)|0)^t,rt^e,t,e)|0}function ii(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0,o=0,a=0,s=0,l=0,u=0;n=vt;vt=vt+16|0;s=n|0;a=e>>31|((e|0)<0?-1:0)<<1;o=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;u=i>>31|((i|0)<0?-1:0)<<1;l=((i|0)<0?-1:0)>>31|((i|0)<0?-1:0)<<1;t=Vr(a^t,o^e,a,o)|0;e=rt;si(t,e,Vr(u^r,l^i,u,l)|0,rt,s)|0;i=Vr(dt[s>>2]^a,dt[s+4>>2]^o,a,o)|0;r=rt;vt=n;return(rt=r,i)|0}function ni(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0,o=0;n=t;o=r;r=ei(n,o)|0;t=rt;return(rt=(_t(e,o)|0)+(_t(i,n)|0)+t|t&0,r|0|0)|0}function oi(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;return si(t,e,r,i,0)|0}function ai(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;var n=0,o=0;o=vt;vt=vt+16|0;n=o|0;si(t,e,r,i,n)|0;vt=o;return(rt=dt[n+4>>2]|0,dt[n>>2]|0)|0}function si(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0;h=t;l=e;u=l;a=r;f=i;s=f;if(!u){o=(n|0)!=0;if(!s){if(o){dt[n>>2]=(h>>>0)%(a>>>0);dt[n+4>>2]=0}f=0;n=(h>>>0)/(a>>>0)>>>0;return(rt=f,n)|0}else{if(!o){f=0;n=0;return(rt=f,n)|0}dt[n>>2]=t|0;dt[n+4>>2]=e&0;f=0;n=0;return(rt=f,n)|0}}o=(s|0)==0;do{if(a){if(!o){o=(at(s|0)|0)-(at(u|0)|0)|0;if(o>>>0<=31){c=o+1|0;s=31-o|0;e=o-31>>31;a=c;t=h>>>(c>>>0)&e|u<>>(c>>>0)&e;o=0;s=h<>2]=t|0;dt[n+4>>2]=l|e&0;f=0;n=0;return(rt=f,n)|0}o=a-1|0;if(o&a){s=(at(a|0)|0)+33-(at(u|0)|0)|0;d=64-s|0;c=32-s|0;l=c>>31;p=s-32|0;e=p>>31;a=s;t=c-1>>31&u>>>(p>>>0)|(u<>>(s>>>0))&e;e=e&u>>>(s>>>0);o=h<>>(p>>>0))&l|h<>31;break}if(n){dt[n>>2]=o&h;dt[n+4>>2]=0}if((a|0)==1){p=l|e&0;d=t|0|0;return(rt=p,d)|0}else{d=ti(a|0)|0;p=u>>>(d>>>0)|0;d=u<<32-d|h>>>(d>>>0)|0;return(rt=p,d)|0}}else{if(o){if(n){dt[n>>2]=(u>>>0)%(a>>>0);dt[n+4>>2]=0}p=0;d=(u>>>0)/(a>>>0)>>>0;return(rt=p,d)|0}if(!h){if(n){dt[n>>2]=0;dt[n+4>>2]=(u>>>0)%(s>>>0)}p=0;d=(u>>>0)/(s>>>0)>>>0;return(rt=p,d)|0}o=s-1|0;if(!(o&s)){if(n){dt[n>>2]=t|0;dt[n+4>>2]=o&u|e&0}p=0;d=u>>>((ti(s|0)|0)>>>0);return(rt=p,d)|0}o=(at(s|0)|0)-(at(u|0)|0)|0;if(o>>>0<=30){e=o+1|0;s=31-o|0;a=e;t=u<>>(e>>>0);e=u>>>(e>>>0);o=0;s=h<>2]=t|0;dt[n+4>>2]=l|e&0;p=0;d=0;return(rt=p,d)|0}}while(0);if(!a){u=s;l=0;s=0}else{c=r|0|0;h=f|i&0;u=Kr(c|0,h|0,-1,-1)|0;r=rt;l=s;s=0;do{i=l;l=o>>>31|l<<1;o=s|o<<1;i=t<<1|i>>>31|0;f=t>>>31|e<<1|0;Vr(u,r,i,f)|0;d=rt;p=d>>31|((d|0)<0?-1:0)<<1;s=p&1;t=Vr(i,f,p&c,(((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1)&h)|0;e=rt;a=a-1|0}while((a|0)!=0);u=l;l=0}a=0;if(n){dt[n>>2]=t;dt[n+4>>2]=e}p=(o|0)>>>31|(u|a)<<1|(a<<1|o>>>31)&0|l;d=(o<<1|0>>>31)&-2|s;return(rt=p,d)|0}function li(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;return Pi[t&7](e|0,r|0,i|0)|0}function ui(t,e,r,i,n,o){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;Ei[t&3](e|0,r|0,i|0,n|0,o|0)}function hi(t,e){t=t|0;e=e|0;Ci[t&7](e|0)}function ci(t,e){t=t|0;e=e|0;return Ai[t&1](e|0)|0}function fi(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;Ii[t&0](e|0,r|0,i|0)}function pi(t){t=t|0;Oi[t&3]()}function di(t,e,r,i,n,o,a){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;a=a|0;Mi[t&3](e|0,r|0,i|0,n|0,o|0,a|0)}function mi(t,e,r,i,n,o){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;return Di[t&1](e|0,r|0,i|0,n|0,o|0)|0}function gi(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;Ri[t&3](e|0,r|0,i|0,n|0)}function vi(t,e,r){t=t|0;e=e|0;r=r|0;st(0);return 0}function _i(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;st(1)}function yi(t){t=t|0;st(2)}function bi(t){t=t|0;st(3);return 0}function xi(t,e,r){t=t|0;e=e|0;r=r|0;st(4)}function wi(){st(5)}function Ti(t,e,r,i,n,o){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;o=o|0;st(6)}function ki(t,e,r,i,n){t=t|0;e=e|0;r=r|0;i=i|0;n=n|0;st(7);return 0}function Si(t,e,r,i){t=t|0;e=e|0;r=r|0;i=i|0;st(8)}var Pi=[vi,Ye,Fr,Ar,Cr,Ir,vi,vi];var Ei=[_i,er,tr,_i];var Ci=[yi,He,Ge,We,qe,Ve,lr,zr];var Ai=[bi,Er];var Ii=[xi];var Oi=[wi,ar,sr,wi];var Mi=[Ti,ir,rr,Ti];var Di=[ki,le];var Ri=[Si,Je,Ke,Si];return{___cxa_can_catch:nr,_crn_get_levels:Te,_crn_get_uncompressed_size:Se,_crn_decompress:Pe,_i64Add:Kr,_crn_get_width:xe,___cxa_is_pointer_type:or,_i64Subtract:Vr,_memset:Yr,_malloc:Br,_free:Ur,_memcpy:Qr,_bitshift64Lshr:Zr,_fflush:gr,_bitshift64Shl:Jr,_crn_get_height:we,___errno_location:hr,_crn_get_dxt_format:ke,runPostSets:Gr,_emscripten_replace_memory:Yt,stackAlloc:Zt,stackSave:Jt,stackRestore:Kt,establishStackSpace:Qt,setThrew:$t,setTempRet0:re,getTempRet0:ie,dynCall_iiii:li,dynCall_viiiii:ui,dynCall_vi:hi,dynCall_ii:ci,dynCall_viii:fi,dynCall_v:pi,dynCall_viiiiii:di,dynCall_iiiiii:mi,dynCall_viiii:gi}}(e.Ya,e.Za,buffer);e.___cxa_can_catch=Z.___cxa_can_catch,e._crn_get_levels=Z._crn_get_levels,e.runPostSets=Z.runPostSets,e._crn_get_uncompressed_size=Z._crn_get_uncompressed_size,e._crn_decompress=Z._crn_decompress;var zc=e._i64Add=Z._i64Add;e._crn_get_height=Z._crn_get_height,e.___cxa_is_pointer_type=Z.___cxa_is_pointer_type;var nb=e._i64Subtract=Z._i64Subtract,qb=e._memset=Z._memset,Ea=e._malloc=Z._malloc,Bc=e._memcpy=Z._memcpy,Xa=e._emscripten_replace_memory=Z._emscripten_replace_memory;e._crn_get_dxt_format=Z._crn_get_dxt_format;var rb=e._bitshift64Lshr=Z._bitshift64Lshr,Na=e._free=Z._free;e._fflush=Z._fflush,e._crn_get_width=Z._crn_get_width,e.___errno_location=Z.___errno_location;var sb=e._bitshift64Shl=Z._bitshift64Shl;function ia(t){this.name="ExitStatus",this.message="Program terminated with exit("+t+")",this.status=t}e.dynCall_iiii=Z.dynCall_iiii,e.dynCall_viiiii=Z.dynCall_viiiii,e.dynCall_vi=Z.dynCall_vi,e.dynCall_ii=Z.dynCall_ii,e.dynCall_viii=Z.dynCall_viii,e.dynCall_v=Z.dynCall_v,e.dynCall_viiiiii=Z.dynCall_viiiiii,e.dynCall_iiiiii=Z.dynCall_iiiiii,e.dynCall_viiii=Z.dynCall_viiii,n.aa=Z.stackAlloc,n.ua=Z.stackSave,n.ba=Z.stackRestore,n.Cd=Z.establishStackSpace,n.rb=Z.setTempRet0,n.fb=Z.getTempRet0,ia.prototype=Error(),ia.prototype.constructor=ia;var rd=null,jb=function t(){e.calledRun||td(),e.calledRun||(jb=t)};function td(t){function r(){if(!e.calledRun&&(e.calledRun=!0,!na)){if(Ha||(Ha=!0,ab(cb)),ab(db),e.onRuntimeInitialized&&e.onRuntimeInitialized(),e._main&&vd&&e.callMain(t),e.postRun)for("function"==typeof e.postRun&&(e.postRun=[e.postRun]);e.postRun.length;)gb(e.postRun.shift());ab(eb)}}if(t=t||e.arguments,null===rd&&(rd=Date.now()),!(0>8&255,t>>16&255,t>>24&255)}!function(s){s.loadFromArrayBuffer=function(t,e,r){return new i(e).loadFromArrayBuffer(t,r)};var i=function(l){function t(t,e,r,i,n,o,a){var s=l.call(this)||this;return s.complete=!1,s.isCompressedImage=!0,s.preserveSource=!0,s.onload=null,s.baseTexture=null,s.init(t,e,r,i,n,o,a),s}return __extends(t,l),t.prototype.init=function(t,e,r,i,n,o,a){void 0===i&&(i=-1),void 0===n&&(n=-1),this.src=t,this.resize(i,n),this._width=i,this._height=n,this.data=e,this.type=r,this.levels=o,this.internalFormat=a;var s=this.complete;return this.complete=!!e,!s&&this.complete&&this.onload&&this.onload({target:this}),this.update(),this},t.prototype.dispose=function(){this.data=null},t.prototype.bind=function(t){t.premultiplyAlpha=!1,l.prototype.bind.call(this,t)},t.prototype.upload=function(t,e,r){var i=t.state.gl;if(r.compressed=!1,t.texture.initCompressed(),null===this.data)throw"Trying to create a second (or more) webgl texture from the same CompressedImage : "+this.src;for(var n=this.levels,o=this.width,a=this.height,s=0,l=0;l>=1)<1&&(o=1),(a>>=1)<1&&(a=1),s+=u}return this._internalLoader.free(),this.preserveSource||(this.data=null),!0},t.prototype.style=function(t,e,r){var i=t.state.gl,n=this.levels;return e.scaleMode===PIXI.SCALE_MODES.LINEAR?1>2)*(e+3>>2)*8;case 33778:case 33779:case 35987:case 34798:return(t+3>>2)*(e+3>>2)*16;default:return 0}},h.type="DDS",h}(t.AbstractInternalLoader);t.DDSLoader=l}(pixi_compressed_textures||(pixi_compressed_textures={})),function(h){var t,c=((t={})[0]=35841,t[1]=35843,t[2]=35840,t[3]=35842,t[6]=36196,t[7]=33776,t[9]=33778,t[5]=33779,t),e=function(e){function t(t){return e.call(this,t)||this}return __extends(t,e),t.prototype.load=function(t){if(!h.DDSLoader.test(t))throw"Invalid magic number in PVR header";var e=new Int32Array(t,0,13),r=e[2],i=c[r]||-1,n=e[7],o=e[6],a=e[11],s=e[12]+52,l=new Uint8Array(t,s),u=this._image;return this._format=i,u.init(u.src,l,"PVR",n,o,a,i),u},t.test=function(t){return 55727696===new Int32Array(t,0,1)[0]},t.prototype.levelBufferSize=function(t,e,r){switch(void 0===r&&(r=0),this._format){case 33776:case 36196:return(t+3>>2)*(e+3>>2)*8;case 33778:case 33779:return(t+3>>2)*(e+3>>2)*16;case 35840:case 35842:return Math.floor((Math.max(t,8)*Math.max(e,8)*4+7)/8);case 35841:case 35843:return Math.floor((Math.max(t,16)*Math.max(e,8)*2+7)/8);default:return 0}},t.type="PVR",t}(h.AbstractInternalLoader);h.PVRTCLoader=e}(pixi_compressed_textures||(pixi_compressed_textures={}));var __awaiter=this&&this.__awaiter||function(t,a,s,l){return new(s||(s=Promise))(function(e,r){function i(t){try{o(l.next(t))}catch(t){r(t)}}function n(t){try{o(l.throw(t))}catch(t){r(t)}}function o(t){t.done?e(t.value):function(e){return e instanceof s?e:new s(function(t){t(e)})}(t.value).then(i,n)}o((l=l.apply(t,a||[])).next())})},__generator=this&&this.__generator||function(r,i){var n,o,a,t,s={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return t={next:e(0),throw:e(1),return:e(2)},"function"==typeof Symbol&&(t[Symbol.iterator]=function(){return this}),t;function e(e){return function(t){return function(e){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,o&&(a=2&e[0]?o.return:e[0]?o.throw||((a=o.return)&&a.call(o),0):o.next)&&!(a=a.call(o,e[1])).done)return a;switch(o=0,a&&(e=[2&e[0],a.value]),e[0]){case 0:case 1:a=e;break;case 4:return s.label++,{value:e[1],done:!1};case 5:s.label++,o=e[1],e=[0];continue;case 7:e=s.ops.pop(),s.trys.pop();continue;default:if(!(a=0<(a=s.trys).length&&a[a.length-1])&&(6===e[0]||2===e[0])){s=0;continue}if(3===e[0]&&(!a||e[1]>a[0]&&e[1] 0.0) {\n c.rgb /= c.a;\n\n vec3 rgb = pow(c.rgb, vec3(1. / gamma));\n rgb = mix(vec3(.5), mix(vec3(dot(vec3(.2125, .7154, .0721), rgb)), rgb, saturation), contrast);\n rgb.r *= red;\n rgb.g *= green;\n rgb.b *= blue;\n c.rgb = rgb * brightness;\n\n c.rgb *= c.a;\n }\n\n gl_FragColor = c * alpha;\n}\n"),Object.assign(this,{gamma:1,saturation:1,contrast:1,brightness:1,red:1,green:1,blue:1,alpha:1},t)}return e&&(t.__proto__=e),((t.prototype=Object.create(e&&e.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.gamma=Math.max(this.gamma,1e-4),this.uniforms.saturation=this.saturation,this.uniforms.contrast=this.contrast,this.uniforms.brightness=this.brightness,this.uniforms.red=this.red,this.uniforms.green=this.green,this.uniforms.blue=this.blue,this.uniforms.alpha=this.alpha,t.applyFilter(this,e,r,i)},t}(n.Filter),d=function(i){function t(t,e,r){void 0===t&&(t=4),void 0===e&&(e=3),void 0===r&&(r=!1),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}",r?"\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec2 uOffset;\nuniform vec4 filterClamp;\n\nvoid main(void)\n{\n vec4 color = vec4(0.0);\n\n // Sample top left pixel\n color += texture2D(uSampler, clamp(vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y + uOffset.y), filterClamp.xy, filterClamp.zw));\n\n // Sample top right pixel\n color += texture2D(uSampler, clamp(vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y + uOffset.y), filterClamp.xy, filterClamp.zw));\n\n // Sample bottom right pixel\n color += texture2D(uSampler, clamp(vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y - uOffset.y), filterClamp.xy, filterClamp.zw));\n\n // Sample bottom left pixel\n color += texture2D(uSampler, clamp(vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y - uOffset.y), filterClamp.xy, filterClamp.zw));\n\n // Average\n color *= 0.25;\n\n gl_FragColor = color;\n}\n":"\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec2 uOffset;\n\nvoid main(void)\n{\n vec4 color = vec4(0.0);\n\n // Sample top left pixel\n color += texture2D(uSampler, vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y + uOffset.y));\n\n // Sample top right pixel\n color += texture2D(uSampler, vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y + uOffset.y));\n\n // Sample bottom right pixel\n color += texture2D(uSampler, vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y - uOffset.y));\n\n // Sample bottom left pixel\n color += texture2D(uSampler, vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y - uOffset.y));\n\n // Average\n color *= 0.25;\n\n gl_FragColor = color;\n}"),this.uniforms.uOffset=new Float32Array(2),this._pixelSize=new f.Point,this.pixelSize=1,this._clamp=r,this._kernels=null,Array.isArray(t)?this.kernels=t:(this._blur=t,this.quality=e)}i&&(t.__proto__=i);var e={kernels:{configurable:!0},clamp:{configurable:!0},pixelSize:{configurable:!0},quality:{configurable:!0},blur:{configurable:!0}};return((t.prototype=Object.create(i&&i.prototype)).constructor=t).prototype.apply=function(t,e,r,i){var n,o=this.pixelSize.x/e._frame.width,a=this.pixelSize.y/e._frame.height;if(1===this._quality||0===this._blur)n=this._kernels[0]+.5,this.uniforms.uOffset[0]=n*o,this.uniforms.uOffset[1]=n*a,t.applyFilter(this,e,r,i);else{for(var s,l=t.getFilterTexture(),u=e,h=l,c=this._quality-1,f=0;f threshold) {\n gl_FragColor = color;\n } else {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n }\n}\n"),this.threshold=t}e&&(t.__proto__=e),(t.prototype=Object.create(e&&e.prototype)).constructor=t;var r={threshold:{configurable:!0}};return r.threshold.get=function(){return this.uniforms.threshold},r.threshold.set=function(t){this.uniforms.threshold=t},Object.defineProperties(t.prototype,r),t}(n.Filter),i=function(a){function t(t){a.call(this,c,"uniform sampler2D uSampler;\nvarying vec2 vTextureCoord;\n\nuniform sampler2D bloomTexture;\nuniform float bloomScale;\nuniform float brightness;\n\nvoid main() {\n vec4 color = texture2D(uSampler, vTextureCoord);\n color.rgb *= brightness;\n vec4 bloomColor = vec4(texture2D(bloomTexture, vTextureCoord).rgb, 0.0);\n bloomColor.rgb *= bloomScale;\n gl_FragColor = color + bloomColor;\n}\n"),"number"==typeof t&&(t={threshold:t}),t=Object.assign({threshold:.5,bloomScale:1,brightness:1,kernels:null,blur:8,quality:4,pixelSize:1,resolution:p.settings.RESOLUTION},t),this.bloomScale=t.bloomScale,this.brightness=t.brightness;var e=t.kernels,r=t.blur,i=t.quality,n=t.pixelSize,o=t.resolution;this._extractFilter=new m(t.threshold),this._extractFilter.resolution=o,this._blurFilter=e?new d(e):new d(r,i),this.pixelSize=n,this.resolution=o}a&&(t.__proto__=a);var e={resolution:{configurable:!0},threshold:{configurable:!0},kernels:{configurable:!0},blur:{configurable:!0},quality:{configurable:!0},pixelSize:{configurable:!0}};return((t.prototype=Object.create(a&&a.prototype)).constructor=t).prototype.apply=function(t,e,r,i,n){var o=t.getFilterTexture();this._extractFilter.apply(t,e,o,!0,n);var a=t.getFilterTexture();this._blurFilter.apply(t,o,a,!0,n),this.uniforms.bloomScale=this.bloomScale,this.uniforms.brightness=this.brightness,this.uniforms.bloomTexture=a,t.applyFilter(this,e,r,i),t.returnFilterTexture(a),t.returnFilterTexture(o)},e.resolution.get=function(){return this._resolution},e.resolution.set=function(t){this._resolution=t,this._extractFilter&&(this._extractFilter.resolution=t),this._blurFilter&&(this._blurFilter.resolution=t)},e.threshold.get=function(){return this._extractFilter.threshold},e.threshold.set=function(t){this._extractFilter.threshold=t},e.kernels.get=function(){return this._blurFilter.kernels},e.kernels.set=function(t){this._blurFilter.kernels=t},e.blur.get=function(){return this._blurFilter.blur},e.blur.set=function(t){this._blurFilter.blur=t},e.quality.get=function(){return this._blurFilter.quality},e.quality.set=function(t){this._blurFilter.quality=t},e.pixelSize.get=function(){return this._blurFilter.pixelSize},e.pixelSize.set=function(t){this._blurFilter.pixelSize=t},Object.defineProperties(t.prototype,e),t}(n.Filter),o=function(e){function t(t){void 0===t&&(t=8),e.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\n\nuniform vec4 filterArea;\nuniform float pixelSize;\nuniform sampler2D uSampler;\n\nvec2 mapCoord( vec2 coord )\n{\n coord *= filterArea.xy;\n coord += filterArea.zw;\n\n return coord;\n}\n\nvec2 unmapCoord( vec2 coord )\n{\n coord -= filterArea.zw;\n coord /= filterArea.xy;\n\n return coord;\n}\n\nvec2 pixelate(vec2 coord, vec2 size)\n{\n return floor( coord / size ) * size;\n}\n\nvec2 getMod(vec2 coord, vec2 size)\n{\n return mod( coord , size) / size;\n}\n\nfloat character(float n, vec2 p)\n{\n p = floor(p*vec2(4.0, -4.0) + 2.5);\n\n if (clamp(p.x, 0.0, 4.0) == p.x)\n {\n if (clamp(p.y, 0.0, 4.0) == p.y)\n {\n if (int(mod(n/exp2(p.x + 5.0*p.y), 2.0)) == 1) return 1.0;\n }\n }\n return 0.0;\n}\n\nvoid main()\n{\n vec2 coord = mapCoord(vTextureCoord);\n\n // get the rounded color..\n vec2 pixCoord = pixelate(coord, vec2(pixelSize));\n pixCoord = unmapCoord(pixCoord);\n\n vec4 color = texture2D(uSampler, pixCoord);\n\n // determine the character to use\n float gray = (color.r + color.g + color.b) / 3.0;\n\n float n = 65536.0; // .\n if (gray > 0.2) n = 65600.0; // :\n if (gray > 0.3) n = 332772.0; // *\n if (gray > 0.4) n = 15255086.0; // o\n if (gray > 0.5) n = 23385164.0; // &\n if (gray > 0.6) n = 15252014.0; // 8\n if (gray > 0.7) n = 13199452.0; // @\n if (gray > 0.8) n = 11512810.0; // #\n\n // get the mod..\n vec2 modd = getMod(coord, vec2(pixelSize));\n\n gl_FragColor = color * character( n, vec2(-1.0) + modd * 2.0);\n\n}\n"),this.size=t}e&&(t.__proto__=e),(t.prototype=Object.create(e&&e.prototype)).constructor=t;var r={size:{configurable:!0}};return r.size.get=function(){return this.uniforms.pixelSize},r.size.set=function(t){this.uniforms.pixelSize=t},Object.defineProperties(t.prototype,r),t}(n.Filter),a=function(e){function t(t){void 0===t&&(t={}),e.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec4 filterArea;\n\nuniform float transformX;\nuniform float transformY;\nuniform vec3 lightColor;\nuniform float lightAlpha;\nuniform vec3 shadowColor;\nuniform float shadowAlpha;\n\nvoid main(void) {\n vec2 transform = vec2(1.0 / filterArea) * vec2(transformX, transformY);\n vec4 color = texture2D(uSampler, vTextureCoord);\n float light = texture2D(uSampler, vTextureCoord - transform).a;\n float shadow = texture2D(uSampler, vTextureCoord + transform).a;\n\n color.rgb = mix(color.rgb, lightColor, clamp((color.a - light) * lightAlpha, 0.0, 1.0));\n color.rgb = mix(color.rgb, shadowColor, clamp((color.a - shadow) * shadowAlpha, 0.0, 1.0));\n gl_FragColor = vec4(color.rgb * color.a, color.a);\n}\n"),this.uniforms.lightColor=new Float32Array(3),this.uniforms.shadowColor=new Float32Array(3),t=Object.assign({rotation:45,thickness:2,lightColor:16777215,lightAlpha:.7,shadowColor:0,shadowAlpha:.7},t),this.rotation=t.rotation,this.thickness=t.thickness,this.lightColor=t.lightColor,this.lightAlpha=t.lightAlpha,this.shadowColor=t.shadowColor,this.shadowAlpha=t.shadowAlpha}e&&(t.__proto__=e);var r={rotation:{configurable:!0},thickness:{configurable:!0},lightColor:{configurable:!0},lightAlpha:{configurable:!0},shadowColor:{configurable:!0},shadowAlpha:{configurable:!0}};return((t.prototype=Object.create(e&&e.prototype)).constructor=t).prototype._updateTransform=function(){this.uniforms.transformX=this._thickness*Math.cos(this._angle),this.uniforms.transformY=this._thickness*Math.sin(this._angle)},r.rotation.get=function(){return this._angle/f.DEG_TO_RAD},r.rotation.set=function(t){this._angle=t*f.DEG_TO_RAD,this._updateTransform()},r.thickness.get=function(){return this._thickness},r.thickness.set=function(t){this._thickness=t,this._updateTransform()},r.lightColor.get=function(){return l.rgb2hex(this.uniforms.lightColor)},r.lightColor.set=function(t){l.hex2rgb(t,this.uniforms.lightColor)},r.lightAlpha.get=function(){return this.uniforms.lightAlpha},r.lightAlpha.set=function(t){this.uniforms.lightAlpha=t},r.shadowColor.get=function(){return l.rgb2hex(this.uniforms.shadowColor)},r.shadowColor.set=function(t){l.hex2rgb(t,this.uniforms.shadowColor)},r.shadowAlpha.get=function(){return this.uniforms.shadowAlpha},r.shadowAlpha.set=function(t){this.uniforms.shadowAlpha=t},Object.defineProperties(t.prototype,r),t}(n.Filter),g=function(a){function t(t,e,r,i){var n,o;void 0===t&&(t=2),void 0===e&&(e=4),void 0===r&&(r=p.settings.RESOLUTION),void 0===i&&(i=5),a.call(this),"number"==typeof t?o=n=t:t instanceof f.Point?(n=t.x,o=t.y):Array.isArray(t)&&(n=t[0],o=t[1]),this.blurXFilter=new h.BlurFilterPass(!0,n,e,r,i),this.blurYFilter=new h.BlurFilterPass(!1,o,e,r,i),this.blurYFilter.blendMode=s.BLEND_MODES.SCREEN,this.defaultFilter=new u.AlphaFilter}a&&(t.__proto__=a);var e={blur:{configurable:!0},blurX:{configurable:!0},blurY:{configurable:!0}};return((t.prototype=Object.create(a&&a.prototype)).constructor=t).prototype.apply=function(t,e,r){var i=t.getFilterTexture(!0);this.defaultFilter.apply(t,e,r),this.blurXFilter.apply(t,e,i),this.blurYFilter.apply(t,i,r),t.returnFilterTexture(i)},e.blur.get=function(){return this.blurXFilter.blur},e.blur.set=function(t){this.blurXFilter.blur=this.blurYFilter.blur=t},e.blurX.get=function(){return this.blurXFilter.blur},e.blurX.set=function(t){this.blurXFilter.blur=t},e.blurY.get=function(){return this.blurYFilter.blur},e.blurY.set=function(t){this.blurYFilter.blur=t},Object.defineProperties(t.prototype,e),t}(n.Filter),v=function(i){function t(t,e,r){i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","uniform float radius;\nuniform float strength;\nuniform vec2 center;\nuniform sampler2D uSampler;\nvarying vec2 vTextureCoord;\n\nuniform vec4 filterArea;\nuniform vec4 filterClamp;\nuniform vec2 dimensions;\n\nvoid main()\n{\n vec2 coord = vTextureCoord * filterArea.xy;\n coord -= center * dimensions.xy;\n float distance = length(coord);\n if (distance < radius) {\n float percent = distance / radius;\n if (strength > 0.0) {\n coord *= mix(1.0, smoothstep(0.0, radius / distance, percent), strength * 0.75);\n } else {\n coord *= mix(1.0, pow(percent, 1.0 + strength * 0.75) * radius / distance, 1.0 - percent);\n }\n }\n coord += center * dimensions.xy;\n coord /= filterArea.xy;\n vec2 clampedCoord = clamp(coord, filterClamp.xy, filterClamp.zw);\n vec4 color = texture2D(uSampler, clampedCoord);\n if (coord != clampedCoord) {\n color *= max(0.0, 1.0 - length(coord - clampedCoord));\n }\n\n gl_FragColor = color;\n}\n"),this.uniforms.dimensions=new Float32Array(2),this.center=t||[.5,.5],this.radius="number"==typeof e?e:100,this.strength="number"==typeof r?r:1}i&&(t.__proto__=i);var e={radius:{configurable:!0},strength:{configurable:!0},center:{configurable:!0}};return((t.prototype=Object.create(i&&i.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.dimensions[0]=e.filterFrame.width,this.uniforms.dimensions[1]=e.filterFrame.height,t.applyFilter(this,e,r,i)},e.radius.get=function(){return this.uniforms.radius},e.radius.set=function(t){this.uniforms.radius=t},e.strength.get=function(){return this.uniforms.strength},e.strength.set=function(t){this.uniforms.strength=t},e.center.get=function(){return this.uniforms.center},e.center.set=function(t){this.uniforms.center=t},Object.defineProperties(t.prototype,e),t}(n.Filter),_=function(i){function t(t,e,r){void 0===e&&(e=!1),void 0===r&&(r=1),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform sampler2D colorMap;\nuniform float _mix;\nuniform float _size;\nuniform float _sliceSize;\nuniform float _slicePixelSize;\nuniform float _sliceInnerSize;\nvoid main() {\n vec4 color = texture2D(uSampler, vTextureCoord.xy);\n\n vec4 adjusted;\n if (color.a > 0.0) {\n color.rgb /= color.a;\n float innerWidth = _size - 1.0;\n float zSlice0 = min(floor(color.b * innerWidth), innerWidth);\n float zSlice1 = min(zSlice0 + 1.0, innerWidth);\n float xOffset = _slicePixelSize * 0.5 + color.r * _sliceInnerSize;\n float s0 = xOffset + (zSlice0 * _sliceSize);\n float s1 = xOffset + (zSlice1 * _sliceSize);\n float yOffset = _sliceSize * 0.5 + color.g * (1.0 - _sliceSize);\n vec4 slice0Color = texture2D(colorMap, vec2(s0,yOffset));\n vec4 slice1Color = texture2D(colorMap, vec2(s1,yOffset));\n float zOffset = fract(color.b * innerWidth);\n adjusted = mix(slice0Color, slice1Color, zOffset);\n\n color.rgb *= color.a;\n }\n gl_FragColor = vec4(mix(color, adjusted, _mix).rgb, color.a);\n\n}"),this._size=0,this._sliceSize=0,this._slicePixelSize=0,this._sliceInnerSize=0,this._scaleMode=null,this._nearest=!1,this.nearest=e,this.mix=r,this.colorMap=t}i&&(t.__proto__=i);var e={colorSize:{configurable:!0},colorMap:{configurable:!0},nearest:{configurable:!0}};return((t.prototype=Object.create(i&&i.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms._mix=this.mix,t.applyFilter(this,e,r,i)},e.colorSize.get=function(){return this._size},e.colorMap.get=function(){return this._colorMap},e.colorMap.set=function(t){t instanceof n.Texture||(t=n.Texture.from(t)),t&&t.baseTexture&&(t.baseTexture.scaleMode=this._scaleMode,t.baseTexture.mipmap=!1,this._size=t.height,this._sliceSize=1/this._size,this._slicePixelSize=this._sliceSize/this._size,this._sliceInnerSize=this._slicePixelSize*(this._size-1),this.uniforms._size=this._size,this.uniforms._sliceSize=this._sliceSize,this.uniforms._slicePixelSize=this._slicePixelSize,this.uniforms._sliceInnerSize=this._sliceInnerSize,this.uniforms.colorMap=t),this._colorMap=t},e.nearest.get=function(){return this._nearest},e.nearest.set=function(t){this._nearest=t,this._scaleMode=t?s.SCALE_MODES.NEAREST:s.SCALE_MODES.LINEAR;var e=this._colorMap;e&&e.baseTexture&&(e.baseTexture._glTextures={},e.baseTexture.scaleMode=this._scaleMode,e.baseTexture.mipmap=!1,e._updateID++,e.baseTexture.emit("update",e.baseTexture))},t.prototype.updateColorMap=function(){var t=this._colorMap;t&&t.baseTexture&&(t._updateID++,t.baseTexture.emit("update",t.baseTexture),this.colorMap=t)},t.prototype.destroy=function(t){this._colorMap&&this._colorMap.destroy(t),i.prototype.destroy.call(this)},Object.defineProperties(t.prototype,e),t}(n.Filter),y=function(i){function t(t,e,r){void 0===t&&(t=16711680),void 0===e&&(e=0),void 0===r&&(r=.4),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec3 originalColor;\nuniform vec3 newColor;\nuniform float epsilon;\nvoid main(void) {\n vec4 currentColor = texture2D(uSampler, vTextureCoord);\n vec3 colorDiff = originalColor - (currentColor.rgb / max(currentColor.a, 0.0000000001));\n float colorDistance = length(colorDiff);\n float doReplace = step(colorDistance, epsilon);\n gl_FragColor = vec4(mix(currentColor.rgb, (newColor + colorDiff) * currentColor.a, doReplace), currentColor.a);\n}\n"),this.uniforms.originalColor=new Float32Array(3),this.uniforms.newColor=new Float32Array(3),this.originalColor=t,this.newColor=e,this.epsilon=r}i&&(t.__proto__=i),(t.prototype=Object.create(i&&i.prototype)).constructor=t;var e={originalColor:{configurable:!0},newColor:{configurable:!0},epsilon:{configurable:!0}};return e.originalColor.set=function(t){var e=this.uniforms.originalColor;"number"==typeof t?(l.hex2rgb(t,e),this._originalColor=t):(e[0]=t[0],e[1]=t[1],e[2]=t[2],this._originalColor=l.rgb2hex(e))},e.originalColor.get=function(){return this._originalColor},e.newColor.set=function(t){var e=this.uniforms.newColor;"number"==typeof t?(l.hex2rgb(t,e),this._newColor=t):(e[0]=t[0],e[1]=t[1],e[2]=t[2],this._newColor=l.rgb2hex(e))},e.newColor.get=function(){return this._newColor},e.epsilon.set=function(t){this.uniforms.epsilon=t},e.epsilon.get=function(){return this.uniforms.epsilon},Object.defineProperties(t.prototype,e),t}(n.Filter),b=function(i){function t(t,e,r){void 0===e&&(e=200),void 0===r&&(r=200),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying mediump vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec2 texelSize;\nuniform float matrix[9];\n\nvoid main(void)\n{\n vec4 c11 = texture2D(uSampler, vTextureCoord - texelSize); // top left\n vec4 c12 = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y - texelSize.y)); // top center\n vec4 c13 = texture2D(uSampler, vec2(vTextureCoord.x + texelSize.x, vTextureCoord.y - texelSize.y)); // top right\n\n vec4 c21 = texture2D(uSampler, vec2(vTextureCoord.x - texelSize.x, vTextureCoord.y)); // mid left\n vec4 c22 = texture2D(uSampler, vTextureCoord); // mid center\n vec4 c23 = texture2D(uSampler, vec2(vTextureCoord.x + texelSize.x, vTextureCoord.y)); // mid right\n\n vec4 c31 = texture2D(uSampler, vec2(vTextureCoord.x - texelSize.x, vTextureCoord.y + texelSize.y)); // bottom left\n vec4 c32 = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y + texelSize.y)); // bottom center\n vec4 c33 = texture2D(uSampler, vTextureCoord + texelSize); // bottom right\n\n gl_FragColor =\n c11 * matrix[0] + c12 * matrix[1] + c13 * matrix[2] +\n c21 * matrix[3] + c22 * matrix[4] + c23 * matrix[5] +\n c31 * matrix[6] + c32 * matrix[7] + c33 * matrix[8];\n\n gl_FragColor.a = c22.a;\n}\n"),this.uniforms.texelSize=new Float32Array(2),this.uniforms.matrix=new Float32Array(9),void 0!==t&&(this.matrix=t),this.width=e,this.height=r}i&&(t.__proto__=i),(t.prototype=Object.create(i&&i.prototype)).constructor=t;var e={matrix:{configurable:!0},width:{configurable:!0},height:{configurable:!0}};return e.matrix.get=function(){return this.uniforms.matrix},e.matrix.set=function(t){var r=this;t.forEach(function(t,e){return r.uniforms.matrix[e]=t})},e.width.get=function(){return 1/this.uniforms.texelSize[0]},e.width.set=function(t){this.uniforms.texelSize[0]=1/t},e.height.get=function(){return 1/this.uniforms.texelSize[1]},e.height.set=function(t){this.uniforms.texelSize[1]=1/t},Object.defineProperties(t.prototype,e),t}(n.Filter),x=function(t){function e(){t.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n float lum = length(texture2D(uSampler, vTextureCoord.xy).rgb);\n\n gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n\n if (lum < 1.00)\n {\n if (mod(gl_FragCoord.x + gl_FragCoord.y, 10.0) == 0.0)\n {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n }\n }\n\n if (lum < 0.75)\n {\n if (mod(gl_FragCoord.x - gl_FragCoord.y, 10.0) == 0.0)\n {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n }\n }\n\n if (lum < 0.50)\n {\n if (mod(gl_FragCoord.x + gl_FragCoord.y - 5.0, 10.0) == 0.0)\n {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n }\n }\n\n if (lum < 0.3)\n {\n if (mod(gl_FragCoord.x - gl_FragCoord.y - 5.0, 10.0) == 0.0)\n {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n }\n }\n}\n")}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e}(n.Filter),w=function(e){function t(t){e.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec4 filterArea;\nuniform vec2 dimensions;\n\nconst float SQRT_2 = 1.414213;\n\nconst float light = 1.0;\n\nuniform float curvature;\nuniform float lineWidth;\nuniform float lineContrast;\nuniform bool verticalLine;\nuniform float noise;\nuniform float noiseSize;\n\nuniform float vignetting;\nuniform float vignettingAlpha;\nuniform float vignettingBlur;\n\nuniform float seed;\nuniform float time;\n\nfloat rand(vec2 co) {\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvoid main(void)\n{\n vec2 pixelCoord = vTextureCoord.xy * filterArea.xy;\n vec2 coord = pixelCoord / dimensions;\n\n vec2 dir = vec2(coord - vec2(0.5, 0.5));\n\n float _c = curvature > 0. ? curvature : 1.;\n float k = curvature > 0. ?(length(dir * dir) * 0.25 * _c * _c + 0.935 * _c) : 1.;\n vec2 uv = dir * k;\n\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n vec3 rgb = gl_FragColor.rgb;\n\n\n if (noise > 0.0 && noiseSize > 0.0)\n {\n pixelCoord.x = floor(pixelCoord.x / noiseSize);\n pixelCoord.y = floor(pixelCoord.y / noiseSize);\n float _noise = rand(pixelCoord * noiseSize * seed) - 0.5;\n rgb += _noise * noise;\n }\n\n if (lineWidth > 0.0) {\n float v = (verticalLine ? uv.x * dimensions.x : uv.y * dimensions.y) * min(1.0, 2.0 / lineWidth ) / _c;\n float j = 1. + cos(v * 1.2 - time) * 0.5 * lineContrast;\n rgb *= j;\n float segment = verticalLine ? mod((dir.x + .5) * dimensions.x, 4.) : mod((dir.y + .5) * dimensions.y, 4.);\n rgb *= 0.99 + ceil(segment) * 0.015;\n }\n\n if (vignetting > 0.0)\n {\n float outter = SQRT_2 - vignetting * SQRT_2;\n float darker = clamp((outter - length(dir) * SQRT_2) / ( 0.00001 + vignettingBlur * SQRT_2), 0.0, 1.0);\n rgb *= darker + (1.0 - darker) * (1.0 - vignettingAlpha);\n }\n\n gl_FragColor.rgb = rgb;\n}\n"),this.uniforms.dimensions=new Float32Array(2),this.time=0,this.seed=0,Object.assign(this,{curvature:1,lineWidth:1,lineContrast:.25,verticalLine:!1,noise:0,noiseSize:1,seed:0,vignetting:.3,vignettingAlpha:1,vignettingBlur:.3,time:0},t)}e&&(t.__proto__=e);var r={curvature:{configurable:!0},lineWidth:{configurable:!0},lineContrast:{configurable:!0},verticalLine:{configurable:!0},noise:{configurable:!0},noiseSize:{configurable:!0},vignetting:{configurable:!0},vignettingAlpha:{configurable:!0},vignettingBlur:{configurable:!0}};return((t.prototype=Object.create(e&&e.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.dimensions[0]=e.filterFrame.width,this.uniforms.dimensions[1]=e.filterFrame.height,this.uniforms.seed=this.seed,this.uniforms.time=this.time,t.applyFilter(this,e,r,i)},r.curvature.set=function(t){this.uniforms.curvature=t},r.curvature.get=function(){return this.uniforms.curvature},r.lineWidth.set=function(t){this.uniforms.lineWidth=t},r.lineWidth.get=function(){return this.uniforms.lineWidth},r.lineContrast.set=function(t){this.uniforms.lineContrast=t},r.lineContrast.get=function(){return this.uniforms.lineContrast},r.verticalLine.set=function(t){this.uniforms.verticalLine=t},r.verticalLine.get=function(){return this.uniforms.verticalLine},r.noise.set=function(t){this.uniforms.noise=t},r.noise.get=function(){return this.uniforms.noise},r.noiseSize.set=function(t){this.uniforms.noiseSize=t},r.noiseSize.get=function(){return this.uniforms.noiseSize},r.vignetting.set=function(t){this.uniforms.vignetting=t},r.vignetting.get=function(){return this.uniforms.vignetting},r.vignettingAlpha.set=function(t){this.uniforms.vignettingAlpha=t},r.vignettingAlpha.get=function(){return this.uniforms.vignettingAlpha},r.vignettingBlur.set=function(t){this.uniforms.vignettingBlur=t},r.vignettingBlur.get=function(){return this.uniforms.vignettingBlur},Object.defineProperties(t.prototype,r),t}(n.Filter),T=function(r){function t(t,e){void 0===t&&(t=1),void 0===e&&(e=5),r.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform vec4 filterArea;\nuniform sampler2D uSampler;\n\nuniform float angle;\nuniform float scale;\n\nfloat pattern()\n{\n float s = sin(angle), c = cos(angle);\n vec2 tex = vTextureCoord * filterArea.xy;\n vec2 point = vec2(\n c * tex.x - s * tex.y,\n s * tex.x + c * tex.y\n ) * scale;\n return (sin(point.x) * sin(point.y)) * 4.0;\n}\n\nvoid main()\n{\n vec4 color = texture2D(uSampler, vTextureCoord);\n float average = (color.r + color.g + color.b) / 3.0;\n gl_FragColor = vec4(vec3(average * 10.0 - 5.0 + pattern()), color.a);\n}\n"),this.scale=t,this.angle=e}r&&(t.__proto__=r),(t.prototype=Object.create(r&&r.prototype)).constructor=t;var e={scale:{configurable:!0},angle:{configurable:!0}};return e.scale.get=function(){return this.uniforms.scale},e.scale.set=function(t){this.uniforms.scale=t},e.angle.get=function(){return this.uniforms.angle},e.angle.set=function(t){this.uniforms.angle=t},Object.defineProperties(t.prototype,e),t}(n.Filter),k=function(c){function t(t){t&&t.constructor!==Object&&(console.warn("DropShadowFilter now uses options instead of (rotation, distance, blur, color, alpha)"),t={rotation:t},void 0!==arguments[1]&&(t.distance=arguments[1]),void 0!==arguments[2]&&(t.blur=arguments[2]),void 0!==arguments[3]&&(t.color=arguments[3]),void 0!==arguments[4]&&(t.alpha=arguments[4])),t=Object.assign({rotation:45,distance:5,color:0,alpha:.5,shadowOnly:!1,kernels:null,blur:2,quality:3,pixelSize:1,resolution:p.settings.RESOLUTION},t),c.call(this);var e=t.kernels,r=t.blur,i=t.quality,n=t.pixelSize,o=t.resolution;this._tintFilter=new c("attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform float alpha;\nuniform vec3 color;\n\nuniform vec2 shift;\nuniform vec4 inputSize;\n\nvoid main(void){\n vec4 sample = texture2D(uSampler, vTextureCoord - shift * inputSize.zw);\n\n // Un-premultiply alpha before applying the color\n if (sample.a > 0.0) {\n sample.rgb /= sample.a;\n }\n\n // Premultiply alpha again\n sample.rgb = color.rgb * sample.a;\n\n // alpha user alpha\n sample *= alpha;\n\n gl_FragColor = sample;\n}"),this._tintFilter.uniforms.color=new Float32Array(4),this._tintFilter.uniforms.shift=new f.Point,this._tintFilter.resolution=o,this._blurFilter=e?new d(e):new d(r,i),this.pixelSize=n,this.resolution=o;var a=t.shadowOnly,s=t.rotation,l=t.distance,u=t.alpha,h=t.color;this.shadowOnly=a,this.rotation=s,this.distance=l,this.alpha=u,this.color=h,this._updatePadding()}c&&(t.__proto__=c);var e={resolution:{configurable:!0},distance:{configurable:!0},rotation:{configurable:!0},alpha:{configurable:!0},color:{configurable:!0},kernels:{configurable:!0},blur:{configurable:!0},quality:{configurable:!0},pixelSize:{configurable:!0}};return((t.prototype=Object.create(c&&c.prototype)).constructor=t).prototype.apply=function(t,e,r,i){var n=t.getFilterTexture();this._tintFilter.apply(t,e,n,!0),this._blurFilter.apply(t,n,r,i),!0!==this.shadowOnly&&t.applyFilter(this,e,r,!1),t.returnFilterTexture(n)},t.prototype._updatePadding=function(){this.padding=this.distance+2*this.blur},t.prototype._updateShift=function(){this._tintFilter.uniforms.shift.set(this.distance*Math.cos(this.angle),this.distance*Math.sin(this.angle))},e.resolution.get=function(){return this._resolution},e.resolution.set=function(t){this._resolution=t,this._tintFilter&&(this._tintFilter.resolution=t),this._blurFilter&&(this._blurFilter.resolution=t)},e.distance.get=function(){return this._distance},e.distance.set=function(t){this._distance=t,this._updatePadding(),this._updateShift()},e.rotation.get=function(){return this.angle/f.DEG_TO_RAD},e.rotation.set=function(t){this.angle=t*f.DEG_TO_RAD,this._updateShift()},e.alpha.get=function(){return this._tintFilter.uniforms.alpha},e.alpha.set=function(t){this._tintFilter.uniforms.alpha=t},e.color.get=function(){return l.rgb2hex(this._tintFilter.uniforms.color)},e.color.set=function(t){l.hex2rgb(t,this._tintFilter.uniforms.color)},e.kernels.get=function(){return this._blurFilter.kernels},e.kernels.set=function(t){this._blurFilter.kernels=t},e.blur.get=function(){return this._blurFilter.blur},e.blur.set=function(t){this._blurFilter.blur=t,this._updatePadding()},e.quality.get=function(){return this._blurFilter.quality},e.quality.set=function(t){this._blurFilter.quality=t},e.pixelSize.get=function(){return this._blurFilter.pixelSize},e.pixelSize.set=function(t){this._blurFilter.pixelSize=t},Object.defineProperties(t.prototype,e),t}(n.Filter),S=function(e){function t(t){void 0===t&&(t=5),e.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float strength;\nuniform vec4 filterArea;\n\n\nvoid main(void)\n{\n\tvec2 onePixel = vec2(1.0 / filterArea);\n\n\tvec4 color;\n\n\tcolor.rgb = vec3(0.5);\n\n\tcolor -= texture2D(uSampler, vTextureCoord - onePixel) * strength;\n\tcolor += texture2D(uSampler, vTextureCoord + onePixel) * strength;\n\n\tcolor.rgb = vec3((color.r + color.g + color.b) / 3.0);\n\n\tfloat alpha = texture2D(uSampler, vTextureCoord).a;\n\n\tgl_FragColor = vec4(color.rgb * alpha, alpha);\n}\n"),this.strength=t}e&&(t.__proto__=e),(t.prototype=Object.create(e&&e.prototype)).constructor=t;var r={strength:{configurable:!0}};return r.strength.get=function(){return this.uniforms.strength},r.strength.set=function(t){this.uniforms.strength=t},Object.defineProperties(t.prototype,r),t}(n.Filter),P=function(e){function t(t){void 0===t&&(t={}),e.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","// precision highp float;\n\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec4 filterArea;\nuniform vec4 filterClamp;\nuniform vec2 dimensions;\nuniform float aspect;\n\nuniform sampler2D displacementMap;\nuniform float offset;\nuniform float sinDir;\nuniform float cosDir;\nuniform int fillMode;\n\nuniform float seed;\nuniform vec2 red;\nuniform vec2 green;\nuniform vec2 blue;\n\nconst int TRANSPARENT = 0;\nconst int ORIGINAL = 1;\nconst int LOOP = 2;\nconst int CLAMP = 3;\nconst int MIRROR = 4;\n\nvoid main(void)\n{\n vec2 coord = (vTextureCoord * filterArea.xy) / dimensions;\n\n if (coord.x > 1.0 || coord.y > 1.0) {\n return;\n }\n\n float cx = coord.x - 0.5;\n float cy = (coord.y - 0.5) * aspect;\n float ny = (-sinDir * cx + cosDir * cy) / aspect + 0.5;\n\n // displacementMap: repeat\n // ny = ny > 1.0 ? ny - 1.0 : (ny < 0.0 ? 1.0 + ny : ny);\n\n // displacementMap: mirror\n ny = ny > 1.0 ? 2.0 - ny : (ny < 0.0 ? -ny : ny);\n\n vec4 dc = texture2D(displacementMap, vec2(0.5, ny));\n\n float displacement = (dc.r - dc.g) * (offset / filterArea.x);\n\n coord = vTextureCoord + vec2(cosDir * displacement, sinDir * displacement * aspect);\n\n if (fillMode == CLAMP) {\n coord = clamp(coord, filterClamp.xy, filterClamp.zw);\n } else {\n if( coord.x > filterClamp.z ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.x -= filterClamp.z;\n } else if (fillMode == MIRROR) {\n coord.x = filterClamp.z * 2.0 - coord.x;\n }\n } else if( coord.x < filterClamp.x ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.x += filterClamp.z;\n } else if (fillMode == MIRROR) {\n coord.x *= -filterClamp.z;\n }\n }\n\n if( coord.y > filterClamp.w ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.y -= filterClamp.w;\n } else if (fillMode == MIRROR) {\n coord.y = filterClamp.w * 2.0 - coord.y;\n }\n } else if( coord.y < filterClamp.y ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.y += filterClamp.w;\n } else if (fillMode == MIRROR) {\n coord.y *= -filterClamp.w;\n }\n }\n }\n\n gl_FragColor.r = texture2D(uSampler, coord + red * (1.0 - seed * 0.4) / filterArea.xy).r;\n gl_FragColor.g = texture2D(uSampler, coord + green * (1.0 - seed * 0.3) / filterArea.xy).g;\n gl_FragColor.b = texture2D(uSampler, coord + blue * (1.0 - seed * 0.2) / filterArea.xy).b;\n gl_FragColor.a = texture2D(uSampler, coord).a;\n}\n"),this.uniforms.dimensions=new Float32Array(2),t=Object.assign({slices:5,offset:100,direction:0,fillMode:0,average:!1,seed:0,red:[0,0],green:[0,0],blue:[0,0],minSize:8,sampleSize:512},t),this.direction=t.direction,this.red=t.red,this.green=t.green,this.blue=t.blue,this.offset=t.offset,this.fillMode=t.fillMode,this.average=t.average,this.seed=t.seed,this.minSize=t.minSize,this.sampleSize=t.sampleSize,this._canvas=document.createElement("canvas"),this._canvas.width=4,this._canvas.height=this.sampleSize,this.texture=n.Texture.from(this._canvas,{scaleMode:s.SCALE_MODES.NEAREST}),this._slices=0,this.slices=t.slices}e&&(t.__proto__=e);var r={sizes:{configurable:!0},offsets:{configurable:!0},slices:{configurable:!0},direction:{configurable:!0},red:{configurable:!0},green:{configurable:!0},blue:{configurable:!0}};return((t.prototype=Object.create(e&&e.prototype)).constructor=t).prototype.apply=function(t,e,r,i){var n=e.filterFrame.width,o=e.filterFrame.height;this.uniforms.dimensions[0]=n,this.uniforms.dimensions[1]=o,this.uniforms.aspect=o/n,this.uniforms.seed=this.seed,this.uniforms.offset=this.offset,this.uniforms.fillMode=this.fillMode,t.applyFilter(this,e,r,i)},t.prototype._randomizeSizes=function(){var t=this._sizes,e=this._slices-1,r=this.sampleSize,i=Math.min(this.minSize/r,.9/this._slices);if(this.average){for(var n=this._slices,o=1,a=0;a>0,i=t[e];t[e]=t[r],t[r]=i}},t.prototype._randomizeOffsets=function(){for(var t=0;t>0,e,1+a>>0),n+=a}r.baseTexture.update(),this.uniforms.displacementMap=r},r.sizes.set=function(t){for(var e=Math.min(this._slices,t.length),r=0;rthis._maxColors)throw"Length of replacements ("+i+") exceeds the maximum colors length ("+this._maxColors+")";e[3*i]=-1;for(var n=0;n 0.5) then: 1 - 2 * (1 - dst) * (1 - src)\n return vec3((dst.x <= 0.5) ? (2.0 * src.x * dst.x) : (1.0 - 2.0 * (1.0 - dst.x) * (1.0 - src.x)),\n (dst.y <= 0.5) ? (2.0 * src.y * dst.y) : (1.0 - 2.0 * (1.0 - dst.y) * (1.0 - src.y)),\n (dst.z <= 0.5) ? (2.0 * src.z * dst.z) : (1.0 - 2.0 * (1.0 - dst.z) * (1.0 - src.z)));\n}\n\n\nvoid main()\n{\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n vec3 color = gl_FragColor.rgb;\n\n if (sepia > 0.0)\n {\n float gray = (color.x + color.y + color.z) / 3.0;\n vec3 grayscale = vec3(gray);\n\n color = Overlay(SEPIA_RGB, grayscale);\n\n color = grayscale + sepia * (color - grayscale);\n }\n\n vec2 coord = vTextureCoord * filterArea.xy / dimensions.xy;\n\n if (vignetting > 0.0)\n {\n float outter = SQRT_2 - vignetting * SQRT_2;\n vec2 dir = vec2(vec2(0.5, 0.5) - coord);\n dir.y *= dimensions.y / dimensions.x;\n float darker = clamp((outter - length(dir) * SQRT_2) / ( 0.00001 + vignettingBlur * SQRT_2), 0.0, 1.0);\n color.rgb *= darker + (1.0 - darker) * (1.0 - vignettingAlpha);\n }\n\n if (scratchDensity > seed && scratch != 0.0)\n {\n float phase = seed * 256.0;\n float s = mod(floor(phase), 2.0);\n float dist = 1.0 / scratchDensity;\n float d = distance(coord, vec2(seed * dist, abs(s - seed * dist)));\n if (d < seed * 0.6 + 0.4)\n {\n highp float period = scratchDensity * 10.0;\n\n float xx = coord.x * period + phase;\n float aa = abs(mod(xx, 0.5) * 4.0);\n float bb = mod(floor(xx / 0.5), 2.0);\n float yy = (1.0 - bb) * aa + bb * (2.0 - aa);\n\n float kk = 2.0 * period;\n float dw = scratchWidth / dimensions.x * (0.75 + seed);\n float dh = dw * kk;\n\n float tine = (yy - (2.0 - dh));\n\n if (tine > 0.0) {\n float _sign = sign(scratch);\n\n tine = s * tine / period + scratch + 0.1;\n tine = clamp(tine + 1.0, 0.5 + _sign * 0.5, 1.5 + _sign * 0.5);\n\n color.rgb *= tine;\n }\n }\n }\n\n if (noise > 0.0 && noiseSize > 0.0)\n {\n vec2 pixelCoord = vTextureCoord.xy * filterArea.xy;\n pixelCoord.x = floor(pixelCoord.x / noiseSize);\n pixelCoord.y = floor(pixelCoord.y / noiseSize);\n // vec2 d = pixelCoord * noiseSize * vec2(1024.0 + seed * 512.0, 1024.0 - seed * 512.0);\n // float _noise = snoise(d) * 0.5;\n float _noise = rand(pixelCoord * noiseSize * seed) - 0.5;\n color += _noise * noise;\n }\n\n gl_FragColor.rgb = color;\n}\n"),this.uniforms.dimensions=new Float32Array(2),"number"==typeof t?(this.seed=t,t=null):this.seed=e,Object.assign(this,{sepia:.3,noise:.3,noiseSize:1,scratch:.5,scratchDensity:.3,scratchWidth:1,vignetting:.3,vignettingAlpha:1,vignettingBlur:.3},t)}r&&(t.__proto__=r);var e={sepia:{configurable:!0},noise:{configurable:!0},noiseSize:{configurable:!0},scratch:{configurable:!0},scratchDensity:{configurable:!0},scratchWidth:{configurable:!0},vignetting:{configurable:!0},vignettingAlpha:{configurable:!0},vignettingBlur:{configurable:!0}};return((t.prototype=Object.create(r&&r.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.dimensions[0]=e.filterFrame.width,this.uniforms.dimensions[1]=e.filterFrame.height,this.uniforms.seed=this.seed,t.applyFilter(this,e,r,i)},e.sepia.set=function(t){this.uniforms.sepia=t},e.sepia.get=function(){return this.uniforms.sepia},e.noise.set=function(t){this.uniforms.noise=t},e.noise.get=function(){return this.uniforms.noise},e.noiseSize.set=function(t){this.uniforms.noiseSize=t},e.noiseSize.get=function(){return this.uniforms.noiseSize},e.scratch.set=function(t){this.uniforms.scratch=t},e.scratch.get=function(){return this.uniforms.scratch},e.scratchDensity.set=function(t){this.uniforms.scratchDensity=t},e.scratchDensity.get=function(){return this.uniforms.scratchDensity},e.scratchWidth.set=function(t){this.uniforms.scratchWidth=t},e.scratchWidth.get=function(){return this.uniforms.scratchWidth},e.vignetting.set=function(t){this.uniforms.vignetting=t},e.vignetting.get=function(){return this.uniforms.vignetting},e.vignettingAlpha.set=function(t){this.uniforms.vignettingAlpha=t},e.vignettingAlpha.get=function(){return this.uniforms.vignettingAlpha},e.vignettingBlur.set=function(t){this.uniforms.vignettingBlur=t},e.vignettingBlur.get=function(){return this.uniforms.vignettingBlur},Object.defineProperties(t.prototype,e),t}(n.Filter),M=function(o){function a(t,e,r){void 0===t&&(t=1),void 0===e&&(e=0),void 0===r&&(r=.1);var i=Math.max(r*a.MAX_SAMPLES,a.MIN_SAMPLES),n=(2*Math.PI/i).toFixed(7);o.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec2 thickness;\nuniform vec4 outlineColor;\nuniform vec4 filterClamp;\n\nconst float DOUBLE_PI = 3.14159265358979323846264 * 2.;\n\nvoid main(void) {\n vec4 ownColor = texture2D(uSampler, vTextureCoord);\n vec4 curColor;\n float maxAlpha = 0.;\n vec2 displaced;\n for (float angle = 0.; angle <= DOUBLE_PI; angle += ${angleStep}) {\n displaced.x = vTextureCoord.x + thickness.x * cos(angle);\n displaced.y = vTextureCoord.y + thickness.y * sin(angle);\n curColor = texture2D(uSampler, clamp(displaced, filterClamp.xy, filterClamp.zw));\n maxAlpha = max(maxAlpha, curColor.a);\n }\n float resultAlpha = max(maxAlpha, ownColor.a);\n gl_FragColor = vec4((ownColor.rgb + outlineColor.rgb * (1. - ownColor.a)) * resultAlpha, resultAlpha);\n}\n".replace(/\$\{angleStep\}/,n)),this.uniforms.thickness=new Float32Array([0,0]),this.thickness=t,this.uniforms.outlineColor=new Float32Array([0,0,0,1]),this.color=e,this.quality=r}o&&(a.__proto__=o);var t={color:{configurable:!0}};return((a.prototype=Object.create(o&&o.prototype)).constructor=a).prototype.apply=function(t,e,r,i){this.uniforms.thickness[0]=this.thickness/e._frame.width,this.uniforms.thickness[1]=this.thickness/e._frame.height,t.applyFilter(this,e,r,i)},t.color.get=function(){return l.rgb2hex(this.uniforms.outlineColor)},t.color.set=function(t){l.hex2rgb(t,this.uniforms.outlineColor)},Object.defineProperties(a.prototype,t),a}(n.Filter);M.MIN_SAMPLES=1,M.MAX_SAMPLES=100;var D=function(e){function t(t){void 0===t&&(t=10),e.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform vec2 size;\nuniform sampler2D uSampler;\n\nuniform vec4 filterArea;\n\nvec2 mapCoord( vec2 coord )\n{\n coord *= filterArea.xy;\n coord += filterArea.zw;\n\n return coord;\n}\n\nvec2 unmapCoord( vec2 coord )\n{\n coord -= filterArea.zw;\n coord /= filterArea.xy;\n\n return coord;\n}\n\nvec2 pixelate(vec2 coord, vec2 size)\n{\n\treturn floor( coord / size ) * size;\n}\n\nvoid main(void)\n{\n vec2 coord = mapCoord(vTextureCoord);\n\n coord = pixelate(coord, size);\n\n coord = unmapCoord(coord);\n\n gl_FragColor = texture2D(uSampler, coord);\n}\n"),this.size=t}e&&(t.__proto__=e),(t.prototype=Object.create(e&&e.prototype)).constructor=t;var r={size:{configurable:!0}};return r.size.get=function(){return this.uniforms.size},r.size.set=function(t){"number"==typeof t&&(t=[t,t]),this.uniforms.size=t},Object.defineProperties(t.prototype,r),t}(n.Filter),R=function(n){function t(t,e,r,i){void 0===t&&(t=0),void 0===e&&(e=[0,0]),void 0===r&&(r=5),void 0===i&&(i=-1),n.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec4 filterArea;\n\nuniform float uRadian;\nuniform vec2 uCenter;\nuniform float uRadius;\nuniform int uKernelSize;\n\nconst int MAX_KERNEL_SIZE = 2048;\n\nvoid main(void)\n{\n vec4 color = texture2D(uSampler, vTextureCoord);\n\n if (uKernelSize == 0)\n {\n gl_FragColor = color;\n return;\n }\n\n float aspect = filterArea.y / filterArea.x;\n vec2 center = uCenter.xy / filterArea.xy;\n float gradient = uRadius / filterArea.x * 0.3;\n float radius = uRadius / filterArea.x - gradient * 0.5;\n int k = uKernelSize - 1;\n\n vec2 coord = vTextureCoord;\n vec2 dir = vec2(center - coord);\n float dist = length(vec2(dir.x, dir.y * aspect));\n\n float radianStep = uRadian;\n if (radius >= 0.0 && dist > radius) {\n float delta = dist - radius;\n float gap = gradient;\n float scale = 1.0 - abs(delta / gap);\n if (scale <= 0.0) {\n gl_FragColor = color;\n return;\n }\n radianStep *= scale;\n }\n radianStep /= float(k);\n\n float s = sin(radianStep);\n float c = cos(radianStep);\n mat2 rotationMatrix = mat2(vec2(c, -s), vec2(s, c));\n\n for(int i = 0; i < MAX_KERNEL_SIZE - 1; i++) {\n if (i == k) {\n break;\n }\n\n coord -= center;\n coord.y *= aspect;\n coord = rotationMatrix * coord;\n coord.y /= aspect;\n coord += center;\n\n vec4 sample = texture2D(uSampler, coord);\n\n // switch to pre-multiplied alpha to correctly blur transparent images\n // sample.rgb *= sample.a;\n\n color += sample;\n }\n\n gl_FragColor = color / float(uKernelSize);\n}\n"),this._angle=0,this.angle=t,this.center=e,this.kernelSize=r,this.radius=i}n&&(t.__proto__=n);var e={angle:{configurable:!0},center:{configurable:!0},radius:{configurable:!0}};return((t.prototype=Object.create(n&&n.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.uKernelSize=0!==this._angle?this.kernelSize:0,t.applyFilter(this,e,r,i)},e.angle.set=function(t){this._angle=t,this.uniforms.uRadian=t*Math.PI/180},e.angle.get=function(){return this._angle},e.center.get=function(){return this.uniforms.uCenter},e.center.set=function(t){this.uniforms.uCenter=t},e.radius.get=function(){return this.uniforms.uRadius},e.radius.set=function(t){(t<0||t===1/0)&&(t=-1),this.uniforms.uRadius=t},Object.defineProperties(t.prototype,e),t}(n.Filter),z=function(e){function t(t){e.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec4 filterArea;\nuniform vec4 filterClamp;\nuniform vec2 dimensions;\n\nuniform bool mirror;\nuniform float boundary;\nuniform vec2 amplitude;\nuniform vec2 waveLength;\nuniform vec2 alpha;\nuniform float time;\n\nfloat rand(vec2 co) {\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvoid main(void)\n{\n vec2 pixelCoord = vTextureCoord.xy * filterArea.xy;\n vec2 coord = pixelCoord / dimensions;\n\n if (coord.y < boundary) {\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n return;\n }\n\n float k = (coord.y - boundary) / (1. - boundary + 0.0001);\n float areaY = boundary * dimensions.y / filterArea.y;\n float v = areaY + areaY - vTextureCoord.y;\n float y = mirror ? v : vTextureCoord.y;\n\n float _amplitude = ((amplitude.y - amplitude.x) * k + amplitude.x ) / filterArea.x;\n float _waveLength = ((waveLength.y - waveLength.x) * k + waveLength.x) / filterArea.y;\n float _alpha = (alpha.y - alpha.x) * k + alpha.x;\n\n float x = vTextureCoord.x + cos(v * 6.28 / _waveLength - time) * _amplitude;\n x = clamp(x, filterClamp.x, filterClamp.z);\n\n vec4 color = texture2D(uSampler, vec2(x, y));\n\n gl_FragColor = color * _alpha;\n}\n"),this.uniforms.amplitude=new Float32Array(2),this.uniforms.waveLength=new Float32Array(2),this.uniforms.alpha=new Float32Array(2),this.uniforms.dimensions=new Float32Array(2),Object.assign(this,{mirror:!0,boundary:.5,amplitude:[0,20],waveLength:[30,100],alpha:[1,1],time:0},t)}e&&(t.__proto__=e);var r={mirror:{configurable:!0},boundary:{configurable:!0},amplitude:{configurable:!0},waveLength:{configurable:!0},alpha:{configurable:!0}};return((t.prototype=Object.create(e&&e.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.dimensions[0]=e.filterFrame.width,this.uniforms.dimensions[1]=e.filterFrame.height,this.uniforms.time=this.time,t.applyFilter(this,e,r,i)},r.mirror.set=function(t){this.uniforms.mirror=t},r.mirror.get=function(){return this.uniforms.mirror},r.boundary.set=function(t){this.uniforms.boundary=t},r.boundary.get=function(){return this.uniforms.boundary},r.amplitude.set=function(t){this.uniforms.amplitude[0]=t[0],this.uniforms.amplitude[1]=t[1]},r.amplitude.get=function(){return this.uniforms.amplitude},r.waveLength.set=function(t){this.uniforms.waveLength[0]=t[0],this.uniforms.waveLength[1]=t[1]},r.waveLength.get=function(){return this.uniforms.waveLength},r.alpha.set=function(t){this.uniforms.alpha[0]=t[0],this.uniforms.alpha[1]=t[1]},r.alpha.get=function(){return this.uniforms.alpha},Object.defineProperties(t.prototype,r),t}(n.Filter),F=function(i){function t(t,e,r){void 0===t&&(t=[-10,0]),void 0===e&&(e=[0,10]),void 0===r&&(r=[0,0]),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 filterArea;\nuniform vec2 red;\nuniform vec2 green;\nuniform vec2 blue;\n\nvoid main(void)\n{\n gl_FragColor.r = texture2D(uSampler, vTextureCoord + red/filterArea.xy).r;\n gl_FragColor.g = texture2D(uSampler, vTextureCoord + green/filterArea.xy).g;\n gl_FragColor.b = texture2D(uSampler, vTextureCoord + blue/filterArea.xy).b;\n gl_FragColor.a = texture2D(uSampler, vTextureCoord).a;\n}\n"),this.red=t,this.green=e,this.blue=r}i&&(t.__proto__=i),(t.prototype=Object.create(i&&i.prototype)).constructor=t;var e={red:{configurable:!0},green:{configurable:!0},blue:{configurable:!0}};return e.red.get=function(){return this.uniforms.red},e.red.set=function(t){this.uniforms.red=t},e.green.get=function(){return this.uniforms.green},e.green.set=function(t){this.uniforms.green=t},e.blue.get=function(){return this.uniforms.blue},e.blue.set=function(t){this.uniforms.blue=t},Object.defineProperties(t.prototype,e),t}(n.Filter),L=function(i){function t(t,e,r){void 0===t&&(t=[0,0]),void 0===e&&(e={}),void 0===r&&(r=0),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec4 filterArea;\nuniform vec4 filterClamp;\n\nuniform vec2 center;\n\nuniform float amplitude;\nuniform float wavelength;\n// uniform float power;\nuniform float brightness;\nuniform float speed;\nuniform float radius;\n\nuniform float time;\n\nconst float PI = 3.14159;\n\nvoid main()\n{\n float halfWavelength = wavelength * 0.5 / filterArea.x;\n float maxRadius = radius / filterArea.x;\n float currentRadius = time * speed / filterArea.x;\n\n float fade = 1.0;\n\n if (maxRadius > 0.0) {\n if (currentRadius > maxRadius) {\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n return;\n }\n fade = 1.0 - pow(currentRadius / maxRadius, 2.0);\n }\n\n vec2 dir = vec2(vTextureCoord - center / filterArea.xy);\n dir.y *= filterArea.y / filterArea.x;\n float dist = length(dir);\n\n if (dist <= 0.0 || dist < currentRadius - halfWavelength || dist > currentRadius + halfWavelength) {\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n return;\n }\n\n vec2 diffUV = normalize(dir);\n\n float diff = (dist - currentRadius) / halfWavelength;\n\n float p = 1.0 - pow(abs(diff), 2.0);\n\n // float powDiff = diff * pow(p, 2.0) * ( amplitude * fade );\n float powDiff = 1.25 * sin(diff * PI) * p * ( amplitude * fade );\n\n vec2 offset = diffUV * powDiff / filterArea.xy;\n\n // Do clamp :\n vec2 coord = vTextureCoord + offset;\n vec2 clampedCoord = clamp(coord, filterClamp.xy, filterClamp.zw);\n vec4 color = texture2D(uSampler, clampedCoord);\n if (coord != clampedCoord) {\n color *= max(0.0, 1.0 - length(coord - clampedCoord));\n }\n\n // No clamp :\n // gl_FragColor = texture2D(uSampler, vTextureCoord + offset);\n\n color.rgb *= 1.0 + (brightness - 1.0) * p * fade;\n\n gl_FragColor = color;\n}\n"),this.center=t,Array.isArray(e)&&(console.warn("Deprecated Warning: ShockwaveFilter params Array has been changed to options Object."),e={}),e=Object.assign({amplitude:30,wavelength:160,brightness:1,speed:500,radius:-1},e),this.amplitude=e.amplitude,this.wavelength=e.wavelength,this.brightness=e.brightness,this.speed=e.speed,this.radius=e.radius,this.time=r}i&&(t.__proto__=i);var e={center:{configurable:!0},amplitude:{configurable:!0},wavelength:{configurable:!0},brightness:{configurable:!0},speed:{configurable:!0},radius:{configurable:!0}};return((t.prototype=Object.create(i&&i.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.time=this.time,t.applyFilter(this,e,r,i)},e.center.get=function(){return this.uniforms.center},e.center.set=function(t){this.uniforms.center=t},e.amplitude.get=function(){return this.uniforms.amplitude},e.amplitude.set=function(t){this.uniforms.amplitude=t},e.wavelength.get=function(){return this.uniforms.wavelength},e.wavelength.set=function(t){this.uniforms.wavelength=t},e.brightness.get=function(){return this.uniforms.brightness},e.brightness.set=function(t){this.uniforms.brightness=t},e.speed.get=function(){return this.uniforms.speed},e.speed.set=function(t){this.uniforms.speed=t},e.radius.get=function(){return this.uniforms.radius},e.radius.set=function(t){this.uniforms.radius=t},Object.defineProperties(t.prototype,e),t}(n.Filter),j=function(i){function t(t,e,r){void 0===e&&(e=0),void 0===r&&(r=1),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform sampler2D uLightmap;\nuniform vec4 filterArea;\nuniform vec2 dimensions;\nuniform vec4 ambientColor;\nvoid main() {\n vec4 diffuseColor = texture2D(uSampler, vTextureCoord);\n vec2 lightCoord = (vTextureCoord * filterArea.xy) / dimensions;\n vec4 light = texture2D(uLightmap, lightCoord);\n vec3 ambient = ambientColor.rgb * ambientColor.a;\n vec3 intensity = ambient + light.rgb;\n vec3 finalColor = diffuseColor.rgb * intensity;\n gl_FragColor = vec4(finalColor, diffuseColor.a);\n}\n"),this.uniforms.dimensions=new Float32Array(2),this.uniforms.ambientColor=new Float32Array([0,0,0,r]),this.texture=t,this.color=e}i&&(t.__proto__=i);var e={texture:{configurable:!0},color:{configurable:!0},alpha:{configurable:!0}};return((t.prototype=Object.create(i&&i.prototype)).constructor=t).prototype.apply=function(t,e,r,i){this.uniforms.dimensions[0]=e.filterFrame.width,this.uniforms.dimensions[1]=e.filterFrame.height,t.applyFilter(this,e,r,i)},e.texture.get=function(){return this.uniforms.uLightmap},e.texture.set=function(t){this.uniforms.uLightmap=t},e.color.set=function(t){var e=this.uniforms.ambientColor;"number"==typeof t?(l.hex2rgb(t,e),this._color=t):(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],this._color=l.rgb2hex(e))},e.color.get=function(){return this._color},e.alpha.get=function(){return this.uniforms.ambientColor[3]},e.alpha.set=function(t){this.uniforms.ambientColor[3]=t},Object.defineProperties(t.prototype,e),t}(n.Filter),N=function(n){function t(t,e,r,i){void 0===t&&(t=100),void 0===e&&(e=600),void 0===r&&(r=null),void 0===i&&(i=null),n.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float blur;\nuniform float gradientBlur;\nuniform vec2 start;\nuniform vec2 end;\nuniform vec2 delta;\nuniform vec2 texSize;\n\nfloat random(vec3 scale, float seed)\n{\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n}\n\nvoid main(void)\n{\n vec4 color = vec4(0.0);\n float total = 0.0;\n\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vTextureCoord * texSize - start, normal)) / gradientBlur) * blur;\n\n for (float t = -30.0; t <= 30.0; t++)\n {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 sample = texture2D(uSampler, vTextureCoord + delta / texSize * percent * radius);\n sample.rgb *= sample.a;\n color += sample * weight;\n total += weight;\n }\n\n color /= total;\n color.rgb /= color.a + 0.00001;\n\n gl_FragColor = color;\n}\n"),this.uniforms.blur=t,this.uniforms.gradientBlur=e,this.uniforms.start=r||new f.Point(0,window.innerHeight/2),this.uniforms.end=i||new f.Point(600,window.innerHeight/2),this.uniforms.delta=new f.Point(30,30),this.uniforms.texSize=new f.Point(window.innerWidth,window.innerHeight),this.updateDelta()}n&&(t.__proto__=n);var e={blur:{configurable:!0},gradientBlur:{configurable:!0},start:{configurable:!0},end:{configurable:!0}};return((t.prototype=Object.create(n&&n.prototype)).constructor=t).prototype.updateDelta=function(){this.uniforms.delta.x=0,this.uniforms.delta.y=0},e.blur.get=function(){return this.uniforms.blur},e.blur.set=function(t){this.uniforms.blur=t},e.gradientBlur.get=function(){return this.uniforms.gradientBlur},e.gradientBlur.set=function(t){this.uniforms.gradientBlur=t},e.start.get=function(){return this.uniforms.start},e.start.set=function(t){this.uniforms.start=t,this.updateDelta()},e.end.get=function(){return this.uniforms.end},e.end.set=function(t){this.uniforms.end=t,this.updateDelta()},Object.defineProperties(t.prototype,e),t}(n.Filter),B=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),((e.prototype=Object.create(t&&t.prototype)).constructor=e).prototype.updateDelta=function(){var t=this.uniforms.end.x-this.uniforms.start.x,e=this.uniforms.end.y-this.uniforms.start.y,r=Math.sqrt(t*t+e*e);this.uniforms.delta.x=t/r,this.uniforms.delta.y=e/r},e}(N),U=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),((e.prototype=Object.create(t&&t.prototype)).constructor=e).prototype.updateDelta=function(){var t=this.uniforms.end.x-this.uniforms.start.x,e=this.uniforms.end.y-this.uniforms.start.y,r=Math.sqrt(t*t+e*e);this.uniforms.delta.x=-e/r,this.uniforms.delta.y=t/r},e}(N),X=function(n){function t(t,e,r,i){void 0===t&&(t=100),void 0===e&&(e=600),void 0===r&&(r=null),void 0===i&&(i=null),n.call(this),this.tiltShiftXFilter=new B(t,e,r,i),this.tiltShiftYFilter=new U(t,e,r,i)}n&&(t.__proto__=n);var e={blur:{configurable:!0},gradientBlur:{configurable:!0},start:{configurable:!0},end:{configurable:!0}};return((t.prototype=Object.create(n&&n.prototype)).constructor=t).prototype.apply=function(t,e,r){var i=t.getFilterTexture();this.tiltShiftXFilter.apply(t,e,i),this.tiltShiftYFilter.apply(t,i,r),t.returnFilterTexture(i)},e.blur.get=function(){return this.tiltShiftXFilter.blur},e.blur.set=function(t){this.tiltShiftXFilter.blur=this.tiltShiftYFilter.blur=t},e.gradientBlur.get=function(){return this.tiltShiftXFilter.gradientBlur},e.gradientBlur.set=function(t){this.tiltShiftXFilter.gradientBlur=this.tiltShiftYFilter.gradientBlur=t},e.start.get=function(){return this.tiltShiftXFilter.start},e.start.set=function(t){this.tiltShiftXFilter.start=this.tiltShiftYFilter.start=t},e.end.get=function(){return this.tiltShiftXFilter.end},e.end.set=function(t){this.tiltShiftXFilter.end=this.tiltShiftYFilter.end=t},Object.defineProperties(t.prototype,e),t}(n.Filter),H=function(i){function t(t,e,r){void 0===t&&(t=200),void 0===e&&(e=4),void 0===r&&(r=20),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float radius;\nuniform float angle;\nuniform vec2 offset;\nuniform vec4 filterArea;\n\nvec2 mapCoord( vec2 coord )\n{\n coord *= filterArea.xy;\n coord += filterArea.zw;\n\n return coord;\n}\n\nvec2 unmapCoord( vec2 coord )\n{\n coord -= filterArea.zw;\n coord /= filterArea.xy;\n\n return coord;\n}\n\nvec2 twist(vec2 coord)\n{\n coord -= offset;\n\n float dist = length(coord);\n\n if (dist < radius)\n {\n float ratioDist = (radius - dist) / radius;\n float angleMod = ratioDist * ratioDist * angle;\n float s = sin(angleMod);\n float c = cos(angleMod);\n coord = vec2(coord.x * c - coord.y * s, coord.x * s + coord.y * c);\n }\n\n coord += offset;\n\n return coord;\n}\n\nvoid main(void)\n{\n\n vec2 coord = mapCoord(vTextureCoord);\n\n coord = twist(coord);\n\n coord = unmapCoord(coord);\n\n gl_FragColor = texture2D(uSampler, coord );\n\n}\n"),this.radius=t,this.angle=e,this.padding=r}i&&(t.__proto__=i),(t.prototype=Object.create(i&&i.prototype)).constructor=t;var e={offset:{configurable:!0},radius:{configurable:!0},angle:{configurable:!0}};return e.offset.get=function(){return this.uniforms.offset},e.offset.set=function(t){this.uniforms.offset=t},e.radius.get=function(){return this.uniforms.radius},e.radius.set=function(t){this.uniforms.radius=t},e.angle.get=function(){return this.uniforms.angle},e.angle.set=function(t){this.uniforms.angle=t},Object.defineProperties(t.prototype,e),t}(n.Filter),W=function(n){function t(t,e,r,i){void 0===t&&(t=.1),void 0===e&&(e=[0,0]),void 0===r&&(r=0),void 0===i&&(i=-1),n.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec4 filterArea;\n\nuniform vec2 uCenter;\nuniform float uStrength;\nuniform float uInnerRadius;\nuniform float uRadius;\n\nconst float MAX_KERNEL_SIZE = 32.0;\n\n// author: http://byteblacksmith.com/improvements-to-the-canonical-one-liner-glsl-rand-for-opengl-es-2-0/\nhighp float rand(vec2 co, float seed) {\n const highp float a = 12.9898, b = 78.233, c = 43758.5453;\n highp float dt = dot(co + seed, vec2(a, b)), sn = mod(dt, 3.14159);\n return fract(sin(sn) * c + seed);\n}\n\nvoid main() {\n\n float minGradient = uInnerRadius * 0.3;\n float innerRadius = (uInnerRadius + minGradient * 0.5) / filterArea.x;\n\n float gradient = uRadius * 0.3;\n float radius = (uRadius - gradient * 0.5) / filterArea.x;\n\n float countLimit = MAX_KERNEL_SIZE;\n\n vec2 dir = vec2(uCenter.xy / filterArea.xy - vTextureCoord);\n float dist = length(vec2(dir.x, dir.y * filterArea.y / filterArea.x));\n\n float strength = uStrength;\n\n float delta = 0.0;\n float gap;\n if (dist < innerRadius) {\n delta = innerRadius - dist;\n gap = minGradient;\n } else if (radius >= 0.0 && dist > radius) { // radius < 0 means it's infinity\n delta = dist - radius;\n gap = gradient;\n }\n\n if (delta > 0.0) {\n float normalCount = gap / filterArea.x;\n delta = (normalCount - delta) / normalCount;\n countLimit *= delta;\n strength *= delta;\n if (countLimit < 1.0)\n {\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n return;\n }\n }\n\n // randomize the lookup values to hide the fixed number of samples\n float offset = rand(vTextureCoord, 0.0);\n\n float total = 0.0;\n vec4 color = vec4(0.0);\n\n dir *= strength;\n\n for (float t = 0.0; t < MAX_KERNEL_SIZE; t++) {\n float percent = (t + offset) / MAX_KERNEL_SIZE;\n float weight = 4.0 * (percent - percent * percent);\n vec2 p = vTextureCoord + dir * percent;\n vec4 sample = texture2D(uSampler, p);\n\n // switch to pre-multiplied alpha to correctly blur transparent images\n // sample.rgb *= sample.a;\n\n color += sample * weight;\n total += weight;\n\n if (t > countLimit){\n break;\n }\n }\n\n color /= total;\n // switch back from pre-multiplied alpha\n // color.rgb /= color.a + 0.00001;\n\n gl_FragColor = color;\n}\n"),this.center=e,this.strength=t,this.innerRadius=r,this.radius=i}n&&(t.__proto__=n),(t.prototype=Object.create(n&&n.prototype)).constructor=t;var e={center:{configurable:!0},strength:{configurable:!0},innerRadius:{configurable:!0},radius:{configurable:!0}};return e.center.get=function(){return this.uniforms.uCenter},e.center.set=function(t){this.uniforms.uCenter=t},e.strength.get=function(){return this.uniforms.uStrength},e.strength.set=function(t){this.uniforms.uStrength=t},e.innerRadius.get=function(){return this.uniforms.uInnerRadius},e.innerRadius.set=function(t){this.uniforms.uInnerRadius=t},e.radius.get=function(){return this.uniforms.uRadius},e.radius.set=function(t){(t<0||t===1/0)&&(t=-1),this.uniforms.uRadius=t},Object.defineProperties(t.prototype,e),t}(n.Filter);return t.AdjustmentFilter=e,t.AdvancedBloomFilter=i,t.AsciiFilter=o,t.BevelFilter=a,t.BloomFilter=g,t.BulgePinchFilter=v,t.CRTFilter=w,t.ColorMapFilter=_,t.ColorReplaceFilter=y,t.ConvolutionFilter=b,t.CrossHatchFilter=x,t.DotFilter=T,t.DropShadowFilter=k,t.EmbossFilter=S,t.GlitchFilter=P,t.GlowFilter=E,t.GodrayFilter=C,t.KawaseBlurFilter=d,t.MotionBlurFilter=A,t.MultiColorReplaceFilter=I,t.OldFilmFilter=O,t.OutlineFilter=M,t.PixelateFilter=D,t.RGBSplitFilter=F,t.RadialBlurFilter=R,t.ReflectionFilter=z,t.ShockwaveFilter=L,t.SimpleLightmapFilter=j,t.TiltShiftAxisFilter=N,t.TiltShiftFilter=X,t.TiltShiftXFilter=B,t.TiltShiftYFilter=U,t.TwistFilter=H,t.ZoomBlurFilter=W,t}({},PIXI,PIXI,PIXI,PIXI.utils,PIXI,PIXI.filters,PIXI.filters),pixi_projection,pixi_projection;Object.assign(PIXI.filters,__filters),this.PIXI=this.PIXI||{},function(p,v){"use strict";var e,f,d=function(){function f(t,e,r){this.value=t,this.time=e,this.next=null,this.isStepped=!1,this.ease=r?"function"==typeof r?r:p.ParticleUtils.generateEase(r):null}return f.createList=function(t){if("list"in t){var e=t.list,r=void 0,i=void 0,n=e[0],o=n.value,a=n.time;if(i=r=new f("string"==typeof o?p.ParticleUtils.hexToRGB(o):o,a,t.ease),2a.time;)n=a,a=t[++o];l=(l-n.time)/(a.time-n.time);var u=f.hexToRGB(n.value),h=f.hexToRGB(a.value),c={r:(h.r-u.r)*l+u.r,g:(h.g-u.g)*l+u.g,b:(h.b-u.b)*l+u.b};i.next=new d(c,s/e),i=i.next}return r};var i=function(t,e){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)};function n(t,e){function r(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}var o=function(){function t(t){void 0===t&&(t=!1),this.current=null,this.next=null,this.isColor=!!t,this.interpolate=null,this.ease=null}return t.prototype.reset=function(t){this.current=t,this.next=t.next,this.next&&1<=this.next.time?this.interpolate=this.isColor?a:r:t.isStepped?this.interpolate=this.isColor?c:u:this.interpolate=this.isColor?l:s,this.ease=this.current.ease},t}();function r(t){return this.ease&&(t=this.ease(t)),(this.next.value-this.current.value)*t+this.current.value}function a(t){this.ease&&(t=this.ease(t));var e=this.current.value,r=this.next.value,i=(r.r-e.r)*t+e.r,n=(r.g-e.g)*t+e.g,o=(r.b-e.b)*t+e.b;return p.ParticleUtils.combineRGBComponents(i,n,o)}function s(t){for(this.ease&&(t=this.ease(t));t>this.next.time;)this.current=this.next,this.next=this.next.next;return t=(t-this.current.time)/(this.next.time-this.current.time),(this.next.value-this.current.value)*t+this.current.value}function l(t){for(this.ease&&(t=this.ease(t));t>this.next.time;)this.current=this.next,this.next=this.next.next;t=(t-this.current.time)/(this.next.time-this.current.time);var e=this.current.value,r=this.next.value,i=(r.r-e.r)*t+e.r,n=(r.g-e.g)*t+e.g,o=(r.b-e.b)*t+e.b;return p.ParticleUtils.combineRGBComponents(i,n,o)}function u(t){for(this.ease&&(t=this.ease(t));this.next&&t>this.next.time;)this.current=this.next,this.next=this.next.next;return this.current.value}function c(t){for(this.ease&&(t=this.ease(t));this.next&&t>this.next.time;)this.current=this.next,this.next=this.next.next;var e=this.current.value;return p.ParticleUtils.combineRGBComponents(e.r,e.g,e.b)}var m,g=function(r){function i(t){var e=r.call(this)||this;return e.emitter=t,e.anchor.x=e.anchor.y=.5,e.velocity=new v.Point,e.rotationSpeed=0,e.rotationAcceleration=0,e.maxLife=0,e.age=0,e.ease=null,e.extraData=null,e.alphaList=new o,e.speedList=new o,e.speedMultiplier=1,e.acceleration=new v.Point,e.maxSpeed=NaN,e.scaleList=new o,e.scaleMultiplier=1,e.colorList=new o(!0),e._doAlpha=!1,e._doScale=!1,e._doSpeed=!1,e._doAcceleration=!1,e._doColor=!1,e._doNormalMovement=!1,e._oneOverLife=0,e.next=null,e.prev=null,e.init=e.init,e.Particle_init=i.prototype.init,e.update=e.update,e.Particle_update=i.prototype.update,e.Sprite_destroy=r.prototype.destroy,e.Particle_destroy=i.prototype.destroy,e.applyArt=e.applyArt,e.kill=e.kill,e}return n(i,r),i.prototype.init=function(){this.age=0,this.velocity.x=this.speedList.current.value*this.speedMultiplier,this.velocity.y=0,p.ParticleUtils.rotatePoint(this.rotation,this.velocity),this.noRotation?this.rotation=0:this.rotation*=p.ParticleUtils.DEG_TO_RADS,this.rotationSpeed*=p.ParticleUtils.DEG_TO_RADS,this.rotationAcceleration*=p.ParticleUtils.DEG_TO_RADS,this.alpha=this.alphaList.current.value,this.scale.x=this.scale.y=this.scaleList.current.value,this._doAlpha=!!this.alphaList.current.next,this._doSpeed=!!this.speedList.current.next,this._doScale=!!this.scaleList.current.next,this._doColor=!!this.colorList.current.next,this._doAcceleration=0!==this.acceleration.x||0!==this.acceleration.y,this._doNormalMovement=this._doSpeed||0!==this.speedList.current.value||this._doAcceleration,this._oneOverLife=1/this.maxLife;var t=this.colorList.current.value;this.tint=p.ParticleUtils.combineRGBComponents(t.r,t.g,t.b),this.visible=!0},i.prototype.applyArt=function(t){this.texture=t||v.Texture.EMPTY},i.prototype.update=function(t){if(this.age+=t,this.age>=this.maxLife||this.age<0)return this.kill(),-1;var e=this.age*this._oneOverLife;if(this.ease&&(e=4==this.ease.length?this.ease(e,0,1,1):this.ease(e)),this._doAlpha&&(this.alpha=this.alphaList.interpolate(e)),this._doScale){var r=this.scaleList.interpolate(e)*this.scaleMultiplier;this.scale.x=this.scale.y=r}if(this._doNormalMovement){var i=void 0,n=void 0;if(this._doSpeed){var o=this.speedList.interpolate(e)*this.speedMultiplier;p.ParticleUtils.normalize(this.velocity),p.ParticleUtils.scaleBy(this.velocity,o),i=this.velocity.x*t,n=this.velocity.y*t}else if(this._doAcceleration){var a=this.velocity.x,s=this.velocity.y;if(this.velocity.x+=this.acceleration.x*t,this.velocity.y+=this.acceleration.y*t,this.maxSpeed){var l=p.ParticleUtils.length(this.velocity);l>this.maxSpeed&&p.ParticleUtils.scaleBy(this.velocity,this.maxSpeed/l)}i=(a+this.velocity.x)/2*t,n=(s+this.velocity.y)/2*t}else i=this.velocity.x*t,n=this.velocity.y*t;this.position.x+=i,this.position.y+=n}if(this._doColor&&(this.tint=this.colorList.interpolate(e)),0!==this.rotationAcceleration){var u=this.rotationSpeed+this.rotationAcceleration*t;this.rotation+=(this.rotationSpeed+u)/2*t,this.rotationSpeed=u}else 0!==this.rotationSpeed?this.rotation+=this.rotationSpeed*t:this.acceleration&&!this.noRotation&&(this.rotation=Math.atan2(this.velocity.y,this.velocity.x));return e},i.prototype.kill=function(){this.emitter.recycle(this)},i.prototype.destroy=function(){this.parent&&this.parent.removeChild(this),this.Sprite_destroy(),this.emitter=this.velocity=this.colorList=this.scaleList=this.alphaList=this.speedList=this.ease=this.next=this.prev=null},i.parseArt=function(t){var e;for(e=t.length;0<=e;--e)"string"==typeof t[e]&&(t[e]=h(t[e]));if(p.ParticleUtils.verbose)for(e=t.length-1;0=this.maxParticles)this._spawnTimer+=this._frequency;else{var l=void 0;if(l=this.minLifetime==this.maxLifetime?this.minLifetime:Math.random()*(this.maxLifetime-this.minLifetime)+this.minLifetime,-this._spawnTimer=this.spawnChance)){var p=void 0;if(this._poolFirst?(p=this._poolFirst,this._poolFirst=this._poolFirst.next,p.next=null):p=new this.particleConstructor(this),1=this.particleImages.length)&&(this._currentImageIndex=0)):p.applyArt(this.particleImages[Math.floor(Math.random()*this.particleImages.length)]):p.applyArt(this.particleImages[0]),p.alphaList.reset(this.startAlpha),1!=this.minimumSpeedMultiplier&&(p.speedMultiplier=Math.random()*(1-this.minimumSpeedMultiplier)+this.minimumSpeedMultiplier),p.speedList.reset(this.startSpeed),p.acceleration.x=this.acceleration.x,p.acceleration.y=this.acceleration.y,p.maxSpeed=this.maxSpeed,1!=this.minimumScaleMultiplier&&(p.scaleMultiplier=Math.random()*(1-this.minimumScaleMultiplier)+this.minimumScaleMultiplier),p.scaleList.reset(this.startScale),p.colorList.reset(this.startColor),this.minRotationSpeed==this.maxRotationSpeed?p.rotationSpeed=this.minRotationSpeed:p.rotationSpeed=Math.random()*(this.maxRotationSpeed-this.minRotationSpeed)+this.minRotationSpeed,p.rotationAcceleration=this.rotationAcceleration,p.noRotation=this.noRotation,p.maxLife=l,p.blendMode=this.particleBlendMode,p.ease=this.customEase,p.extraData=this.extraData,this.applyAdditionalProperties(p),this._spawnFunc(p,u,h,e),p.init(),p.update(-this._spawnTimer),p.parent){var d=this._parent.children;if(d[0]==p)d.shift();else if(d[d.length-1]==p)d.pop();else{var m=d.indexOf(p);d.splice(m,1)}this.addAtBack?d.unshift(p):d.push(p)}else this.addAtBack?this._parent.addChildAt(p,0):this._parent.addChild(p);this._activeParticlesLast?((this._activeParticlesLast.next=p).prev=this._activeParticlesLast,this._activeParticlesLast=p):this._activeParticlesLast=this._activeParticlesFirst=p,++this.particleCount}}this._spawnTimer+=this._frequency}}if(this._posChanged&&(this._prevEmitterPos.x=a,this._prevEmitterPos.y=s,this._prevPosIsValid=!0,this._posChanged=!1),!this._emit&&!this._activeParticlesFirst){if(this._completeCallback){var g=this._completeCallback;this._completeCallback=null,g()}this._destroyWhenComplete&&this.destroy()}}},t.prototype.applyAdditionalProperties=function(t){},t.prototype._spawnPoint=function(t,e,r){this.minStartRotation==this.maxStartRotation?t.rotation=this.minStartRotation+this.rotation:t.rotation=Math.random()*(this.maxStartRotation-this.minStartRotation)+this.minStartRotation+this.rotation,t.position.x=e,t.position.y=r},t.prototype._spawnRect=function(t,e,r){this.minStartRotation==this.maxStartRotation?t.rotation=this.minStartRotation+this.rotation:t.rotation=Math.random()*(this.maxStartRotation-this.minStartRotation)+this.minStartRotation+this.rotation,b.x=Math.random()*this.spawnRect.width+this.spawnRect.x,b.y=Math.random()*this.spawnRect.height+this.spawnRect.y,0!==this.rotation&&p.ParticleUtils.rotatePoint(this.rotation,b),t.position.x=e+b.x,t.position.y=r+b.y},t.prototype._spawnCircle=function(t,e,r){this.minStartRotation==this.maxStartRotation?t.rotation=this.minStartRotation+this.rotation:t.rotation=Math.random()*(this.maxStartRotation-this.minStartRotation)+this.minStartRotation+this.rotation,b.x=Math.random()*this.spawnCircle.radius,b.y=0,p.ParticleUtils.rotatePoint(360*Math.random(),b),b.x+=this.spawnCircle.x,b.y+=this.spawnCircle.y,0!==this.rotation&&p.ParticleUtils.rotatePoint(this.rotation,b),t.position.x=e+b.x,t.position.y=r+b.y},t.prototype._spawnRing=function(t,e,r){var i=this.spawnCircle;this.minStartRotation==this.maxStartRotation?t.rotation=this.minStartRotation+this.rotation:t.rotation=Math.random()*(this.maxStartRotation-this.minStartRotation)+this.minStartRotation+this.rotation,i.minRadius!==i.radius?b.x=Math.random()*(i.radius-i.minRadius)+i.minRadius:b.x=i.radius,b.y=0;var n=360*Math.random();t.rotation+=n,p.ParticleUtils.rotatePoint(n,b),b.x+=this.spawnCircle.x,b.y+=this.spawnCircle.y,0!==this.rotation&&p.ParticleUtils.rotatePoint(this.rotation,b),t.position.x=e+b.x,t.position.y=r+b.y},t.prototype._spawnPolygonalChain=function(t,e,r){this.minStartRotation==this.maxStartRotation?t.rotation=this.minStartRotation+this.rotation:t.rotation=Math.random()*(this.maxStartRotation-this.minStartRotation)+this.minStartRotation+this.rotation,this.spawnPolygonalChain.getRandomPoint(b),0!==this.rotation&&p.ParticleUtils.rotatePoint(this.rotation,b),t.position.x=e+b.x,t.position.y=r+b.y},t.prototype._spawnBurst=function(t,e,r,i){0===this.particleSpacing?t.rotation=360*Math.random():t.rotation=this.angleStart+this.particleSpacing*i+this.rotation,t.position.x=e,t.position.y=r},t.prototype.cleanup=function(){var t,e;for(t=this._activeParticlesFirst;t;t=e)e=t.next,this.recycle(t),t.parent&&t.parent.removeChild(t);this._activeParticlesFirst=this._activeParticlesLast=null,this.particleCount=0},t.prototype.destroy=function(){var t;this.autoUpdate=!1,this.cleanup();for(var e=this._poolFirst;e;e=t)t=e.next,e.destroy();this._poolFirst=this._parent=this.particleImages=this.spawnPos=this.ownerPos=this.startColor=this.startScale=this.startAlpha=this.startSpeed=this.customEase=this._completeCallback=null},t}(),w=new v.Point,T=["pow","sqrt","abs","floor","round","ceil","E","PI","sin","cos","tan","asin","acos","atan","atan2","log"],k=new RegExp(["[01234567890\\.\\*\\-\\+\\/\\(\\)x ,]"].concat(T).join("|"),"g"),S=function(r){function t(t){var e=r.call(this,t)||this;return e.path=null,e.initialRotation=0,e.initialPosition=new v.Point,e.movement=0,e}return n(t,r),t.prototype.init=function(){this.initialRotation=this.rotation,this.Particle_init(),this.path=this.extraData.path,this._doNormalMovement=!this.path,this.movement=0,this.initialPosition.x=this.position.x,this.initialPosition.y=this.position.y},t.prototype.update=function(t){var e=this.Particle_update(t);if(0<=e&&this.path){var r=this.speedList.interpolate(e)*this.speedMultiplier;this.movement+=r*t,w.x=this.movement,w.y=this.path(this.movement),p.ParticleUtils.rotatePoint(this.initialRotation,w),this.position.x=this.initialPosition.x+w.x,this.position.y=this.initialPosition.y+w.y}return e},t.prototype.destroy=function(){this.Particle_destroy(),this.path=this.initialPosition=null},t.parseArt=function(t){return g.parseArt(t)},t.parseData=function(t){var e={};if(t&&t.path)try{e.path=function(t){for(var e=t.match(k),r=e.length-1;0<=r;--r)0<=T.indexOf(e[r])&&(e[r]="Math."+e[r]);return t=e.join(""),new Function("x","return "+t+";")}(t.path)}catch(t){p.ParticleUtils.verbose&&console.error("PathParticle: error in parsing path expression"),e.path=null}else p.ParticleUtils.verbose&&console.error("PathParticle requires a path string in extraData!"),e.path=null;return e},t}(g),P=function(r){function t(t){var e=r.call(this,t)||this;return e.textures=null,e.duration=0,e.framerate=0,e.elapsed=0,e.loop=!1,e}return n(t,r),t.prototype.init=function(){this.Particle_init(),this.elapsed=0,this.framerate<0&&(this.duration=this.maxLife,this.framerate=this.textures.length/this.duration)},t.prototype.applyArt=function(t){this.textures=t.textures,this.framerate=t.framerate,this.duration=t.duration,this.loop=t.loop},t.prototype.update=function(t){var e=this.Particle_update(t);if(0<=e){this.elapsed+=t,this.elapsed>this.duration&&(this.loop?this.elapsed=this.elapsed%this.duration:this.elapsed=this.duration-1e-6);var r=this.elapsed*this.framerate+1e-7|0;this.texture=this.textures[r]||v.Texture.EMPTY}return e},t.prototype.destroy=function(){this.Particle_destroy(),this.textures=null},t.parseArt=function(t){for(var e,r,i,n,o,a=[],s=0;se[s]&&(i=e[s]),oe[s+1]&&(n=e[s+1]),af[u]){l=c[s];c[s]=c[u],c[u]=l;var h=f[s];f[s]=f[u],f[u]=h}if(e[0]=c[0].x,e[1]=c[0].y,e[2]=c[1].x,e[3]=c[1].y,e[4]=c[2].x,e[5]=c[2].y,e[6]=c[3].x,e[7]=c[3].y,(c[3].x-c[2].x)*(c[1].y-c[2].y)-(c[1].x-c[2].x)*(c[3].y-c[2].y)<0)return e[4]=c[3].x,void(e[5]=c[3].y)}},t}();t.Surface=e}(pixi_projection||(pixi_projection={})),function(t){var k=new PIXI.Matrix,n=new PIXI.Rectangle,S=new PIXI.Point,e=function(e){function t(){var t=e.call(this)||this;return t.distortion=new PIXI.Point,t}return __extends(t,e),t.prototype.clear=function(){this.distortion.set(0,0)},t.prototype.apply=function(t,e){e=e||new PIXI.Point;var r=this.distortion,i=t.x*t.y;return e.x=t.x+r.x*i,e.y=t.y+r.y*i,e},t.prototype.applyInverse=function(t,e){e=e||new PIXI.Point;var r=t.x,i=t.y,n=this.distortion.x,o=this.distortion.y;if(0==n)e.x=r,e.y=i/(1+o*r);else if(0==o)e.y=i,e.x=r/(1+n*i);else{var a=.5*(i*n-r*o+1)/o,s=a*a+r/o;if(s<=1e-5)return void e.set(NaN,NaN);e.x=0 vFrame.z ||\n pixels.y < vFrame.y || pixels.y > vFrame.w) {\n uv.x = vTrans1.x * surface2.x + vTrans1.y * surface2.y + vTrans1.z;\n uv.y = vTrans2.x * surface2.x + vTrans2.y * surface2.y + vTrans2.z;\n pixels = uv * samplerSize[0];\n \n if (pixels.x < vFrame.x || pixels.x > vFrame.z ||\n pixels.y < vFrame.y || pixels.y > vFrame.w) {\n discard;\n }\n}\n\nvec4 edge;\nedge.xy = clamp(pixels - vFrame.xy + 0.5, vec2(0.0, 0.0), vec2(1.0, 1.0));\nedge.zw = clamp(vFrame.zw - pixels + 0.5, vec2(0.0, 0.0), vec2(1.0, 1.0));\n\nfloat alpha = 1.0; //edge.x * edge.y * edge.z * edge.w;\nvec4 rColor = vColor * alpha;\n\nfloat textureId = floor(vTextureId+0.5);\n%forloop%\ngl_FragColor = color * rColor;\n}",geometryClass:r.Batch3dGeometry,vertexSize:7},t),i=e.vertex,n=e.fragment,o=e.vertexSize,a=e.geometryClass;return function(r){function t(t){var e=r.call(this,t)||this;return e.defUniforms={worldTransform:new Float32Array([1,0,0,0,1,0,0,0,1]),distortion:new Float32Array([0,0])},e.shaderGenerator=new PIXI.BatchShaderGenerator(i,n),e.geometryClass=a,e.vertexSize=o,e}return __extends(t,r),t.prototype.getUniforms=function(t){var e=t.proj;this._shader;return null!==e.surface?e.uniforms:null!==e._activeProjection?e._activeProjection.uniforms:this.defUniforms},t.prototype.packGeometry=function(t,e,r,i,n,o){for(var a=n/this.vertexSize,s=(t.uvs,t.indices),l=t.vertexData,u=t._texture._frame,h=t.aTrans,c=Math.min(t.worldAlpha,1),f=c<1&&t._texture.baseTexture.premultiplyAlpha?d(t._tintRGB,c):t._tintRGB+(255*c<<24),p=0;p=o.TRANSFORM_STEP.PROJ?(i||this.displayObjectUpdateTransform(),this.proj.affine?this.transform.worldTransform.applyInverse(t,r):this.proj.world.applyInverse(t,r)):(this.parent?r=this.parent.worldTransform.applyInverse(t,r):r.copyFrom(t),n===o.TRANSFORM_STEP.NONE?r:this.transform.localTransform.applyInverse(r,r))},Object.defineProperty(t.prototype,"worldTransform",{get:function(){return this.proj.affine?this.transform.worldTransform:this.proj.world},enumerable:!0,configurable:!0}),t}(PIXI.Container);o.Container2d=t,o.container2dToLocal=t.prototype.toLocal}(pixi_projection||(pixi_projection={})),function(t){var l,e,v=PIXI.Point,r=[1,0,0,0,1,0,0,0,1];(e=l=t.AFFINE||(t.AFFINE={}))[e.NONE=0]="NONE",e[e.FREE=1]="FREE",e[e.AXIS_X=2]="AXIS_X",e[e.AXIS_Y=3]="AXIS_Y",e[e.POINT=4]="POINT",e[e.AXIS_XR=5]="AXIS_XR";var i=function(){function t(t){this.floatArray=null,this.mat3=new Float64Array(t||r)}return Object.defineProperty(t.prototype,"a",{get:function(){return this.mat3[0]/this.mat3[8]},set:function(t){this.mat3[0]=t*this.mat3[8]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"b",{get:function(){return this.mat3[1]/this.mat3[8]},set:function(t){this.mat3[1]=t*this.mat3[8]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"c",{get:function(){return this.mat3[3]/this.mat3[8]},set:function(t){this.mat3[3]=t*this.mat3[8]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"d",{get:function(){return this.mat3[4]/this.mat3[8]},set:function(t){this.mat3[4]=t*this.mat3[8]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"tx",{get:function(){return this.mat3[6]/this.mat3[8]},set:function(t){this.mat3[6]=t*this.mat3[8]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"ty",{get:function(){return this.mat3[7]/this.mat3[8]},set:function(t){this.mat3[7]=t*this.mat3[8]},enumerable:!0,configurable:!0}),t.prototype.set=function(t,e,r,i,n,o){var a=this.mat3;return a[0]=t,a[1]=e,a[2]=0,a[3]=r,a[4]=i,a[5]=0,a[6]=n,a[7]=o,a[8]=1,this},t.prototype.toArray=function(t,e){this.floatArray||(this.floatArray=new Float32Array(9));var r=e||this.floatArray,i=this.mat3;return t?(r[0]=i[0],r[1]=i[1],r[2]=i[2],r[3]=i[3],r[4]=i[4],r[5]=i[5],r[6]=i[6],r[7]=i[7]):(r[0]=i[0],r[1]=i[3],r[2]=i[6],r[3]=i[1],r[4]=i[4],r[5]=i[7],r[6]=i[2],r[7]=i[5]),r[8]=i[8],r},t.prototype.apply=function(t,e){e=e||new PIXI.Point;var r=this.mat3,i=t.x,n=t.y,o=1/(r[2]*i+r[5]*n+r[8]);return e.x=o*(r[0]*i+r[3]*n+r[6]),e.y=o*(r[1]*i+r[4]*n+r[7]),e},t.prototype.translate=function(t,e){var r=this.mat3;return r[0]+=t*r[2],r[1]+=e*r[2],r[3]+=t*r[5],r[4]+=e*r[5],r[6]+=t*r[8],r[7]+=e*r[8],this},t.prototype.scale=function(t,e){var r=this.mat3;return r[0]*=t,r[1]*=e,r[3]*=t,r[4]*=e,r[6]*=t,r[7]*=e,this},t.prototype.scaleAndTranslate=function(t,e,r,i){var n=this.mat3;n[0]=t*n[0]+r*n[2],n[1]=e*n[1]+i*n[2],n[3]=t*n[3]+r*n[5],n[4]=e*n[4]+i*n[5],n[6]=t*n[6]+r*n[8],n[7]=e*n[7]+i*n[8]},t.prototype.applyInverse=function(t,e){e=e||new v;var r=this.mat3,i=t.x,n=t.y,o=r[0],a=r[3],s=r[6],l=r[1],u=r[4],h=r[7],c=r[2],f=r[5],p=r[8],d=(p*u-h*f)*i+(-p*a+s*f)*n+(h*a-s*u),m=(-p*l+h*c)*i+(p*o-s*c)*n+(-h*o+s*l),g=(f*l-u*c)*i+(-f*o+a*c)*n+(u*o-a*l);return e.x=d/g,e.y=m/g,e},t.prototype.invert=function(){var t=this.mat3,e=t[0],r=t[1],i=t[2],n=t[3],o=t[4],a=t[5],s=t[6],l=t[7],u=t[8],h=u*o-a*l,c=-u*n+a*s,f=l*n-o*s,p=e*h+r*c+i*f;return p&&(p=1/p,t[0]=h*p,t[1]=(-u*r+i*l)*p,t[2]=(a*r-i*o)*p,t[3]=c*p,t[4]=(u*e-i*s)*p,t[5]=(-a*e+i*n)*p,t[6]=f*p,t[7]=(-l*e+r*s)*p,t[8]=(o*e-r*n)*p),this},t.prototype.identity=function(){var t=this.mat3;return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,this},t.prototype.clone=function(){return new t(this.mat3)},t.prototype.copyTo2dOr3d=function(t){var e=this.mat3,r=t.mat3;return r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[4]=e[4],r[5]=e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],t},t.prototype.copyTo=function(t,e,r){var i=this.mat3,n=1/i[8],o=i[6]*n,a=i[7]*n;if(t.a=(i[0]-i[2]*o)*n,t.b=(i[1]-i[2]*a)*n,t.c=(i[3]-i[5]*o)*n,t.d=(i[4]-i[5]*a)*n,t.tx=o,t.ty=a,2<=e){var s=t.a*t.d-t.b*t.c;r||(s=Math.abs(s)),e===l.POINT?(s=0>0,0!==f._cycle&&f._cycle===f._totalTime/a&&m<=t&&f._cycle--,f._time=f._totalTime-f._cycle*a,f._yoyo&&0!=(1&f._cycle)&&(f._time=v-f._time,(c=f._yoyoEase||f.vars.yoyoEase)&&(f._yoyoEase||(!0!==c||f._initted?f._yoyoEase=c=!0===c?f._ease:c instanceof Ease?c:Ease.map[c]:(c=f.vars.ease,f._yoyoEase=c=c?c instanceof Ease?c:"function"==typeof c?new Ease(c,f.vars.easeParams):Ease.map[c]||y.defaultEase:y.defaultEase)),f.ratio=c?1-c.getRatio((v-f._time)/v):0)),f._time>v?f._time=v:f._time<0&&(f._time=0)),f._easeType&&!c?(s=f._time/v,(1===(l=f._easeType)||3===l&&.5<=s)&&(s=1-s),3===l&&(s*=2),1===(u=f._easePower)?s*=s:2===u?s*=s*s:3===u?s*=s*s*s:4===u&&(s*=s*s*s*s),f.ratio=1===l?1-s:2===l?s:f._time/v<.5?s/2:1-s/2):c||(f.ratio=f._ease.getRatio(f._time/v))),d!==f._time||r||g!==f._cycle){if(!f._initted){if(f._init(),!f._initted||f._gc)return;if(!r&&f._firstPT&&(!1!==f.vars.lazy&&f._duration||f.vars.lazy&&!f._duration))return f._time=d,f._totalTime=m,f._rawPrevTime=_,f._cycle=g,x.lazyTweens.push(f),void(f._lazy=[t,e]);!f._time||i||c?i&&this._ease._calcEnd&&!c&&(f.ratio=f._ease.getRatio(0===f._time?0:1)):f.ratio=f._ease.getRatio(f._time/v)}for(!1!==f._lazy&&(f._lazy=!1),f._active||!f._paused&&f._time!==d&&0<=t&&(f._active=!0),0===m&&(2===f._initted&&0t._startTime;l._timeline;)u&&l._timeline.smoothChildTiming?l.totalTime(l._totalTime,!0):l._gc&&l._enabled(!0,!1),l=l._timeline;return h},r.remove=function(t){if(t instanceof c){this._remove(t,!1);var e=t._timeline=t.vars.useFrames?c._rootFramesTimeline:c._rootTimeline;return t._startTime=(t._paused?t._pauseTime:e._time)-(t._reversed?t.totalDuration()-t._totalTime:t._totalTime)/t._timeScale,this}if(t instanceof Array||t&&t.push&&p(t)){for(var r=t.length;-1<--r;)this.remove(t[r]);return this}return"string"==typeof t?this.removeLabel(t):this.kill(null,t)},r._remove=function(t,e){return f.prototype._remove.call(this,t,e),this._last?this._time>this.duration()&&(this._time=this._duration,this._totalTime=this._totalDuration):this._time=this._totalTime=this._duration=this._totalDuration=0,this},r.append=function(t,e){return this.add(t,this._parseTimeOrLabel(null,e,!0,t))},r.insert=r.insertMultiple=function(t,e,r,i){return this.add(t,e||0,r,i)},r.appendMultiple=function(t,e,r,i){return this.add(t,this._parseTimeOrLabel(null,e,!0,t),r,i)},r.addLabel=function(t,e){return this._labels[t]=this._parseTimeOrLabel(e),this},r.addPause=function(t,e,r,i){var n=d.delayedCall(0,o,r,i||this);return n.vars.onComplete=n.vars.onReverseComplete=e,n.data="isPause",this._hasPause=!0,this.add(n,t)},r.removeLabel=function(t){return delete this._labels[t],this},r.getLabelTime=function(t){return null!=this._labels[t]?this._labels[t]:-1},r._parseTimeOrLabel=function(t,e,r,i){var n,o;if(i instanceof c&&i.timeline===this)this.remove(i);else if(i&&(i instanceof Array||i.push&&p(i)))for(o=i.length;-1<--o;)i[o]instanceof c&&i[o].timeline===this&&this.remove(i[o]);if(n="number"!=typeof t||e?99999999999=t&&!l;)i._duration||"isPause"===i.data&&0c._time;)l.render(l._reversed?l.totalDuration()-(t-l._startTime)*l._timeScale:(t-l._startTime)*l._timeScale,e,r),l=l._prev;l=null,c.pause(),c._pauseTime=h}i._reversed?i.render((i._dirty?i.totalDuration():i._totalDuration)-(t-i._startTime)*i._timeScale,e,r):i.render((t-i._startTime)*i._timeScale,e,r)}i=o}c._onUpdate&&(e||(v.length&&_(),c._callback("onUpdate"))),a&&(c._gc||d!==c._startTime&&m===c._timeScale||(0===c._time||p>=c.totalDuration())&&(n&&(v.length&&_(),c._timeline.autoRemoveChildren&&c._enabled(!1,!1),c._active=!1),!e&&c.vars[a]&&c._callback(a)))}},r._hasPausedChild=function(){for(var t=this._first;t;){if(t._paused||t instanceof m&&t._hasPausedChild())return!0;t=t._next}return!1},r.getChildren=function(t,e,r,i){i=i||-9999999999;for(var n=[],o=this._first,a=0;o;)o._startTime=r&&(n._startTime+=t),n=n._next;if(e)for(i in o)o[i]>=r&&(o[i]+=t);return this._uncache(!0)},r._kill=function(t,e){if(!t&&!e)return this._enabled(!1,!1);for(var r=e?this.getTweensOf(e):this.getChildren(!0,!0,!1),i=r.length,n=!1;-1<--i;)r[i]._kill(t,e)&&(n=!0);return n},r.clear=function(t){var e=this.getChildren(!1,!0,!0),r=e.length;for(this._time=this._totalTime=0;-1<--r;)e[r]._enabled(!1,!1);return!1!==t&&(this._labels={}),this._uncache(!0)},r.invalidate=function(){for(var t=this._first;t;)t.invalidate(),t=t._next;return c.prototype.invalidate.call(this)},r._enabled=function(t,e){if(t===this._gc)for(var r=this._first;r;)r._enabled(t,!0),r=r._next;return f.prototype._enabled.call(this,t,e)},r.totalTime=function(t,e,r){this._forcingPlayhead=!0;var i=c.prototype.totalTime.apply(this,arguments);return this._forcingPlayhead=!1,i},r.duration=function(t){return arguments.length?(0!==this.duration()&&0!==t&&this.timeScale(this._duration/t),this):(this._dirty&&this.totalDuration(),this._duration)},r.totalDuration=function(t){if(arguments.length)return t&&this.totalDuration()?this.timeScale(this._totalDuration/t):this;if(this._dirty){for(var e,r,i=0,n=this,o=n._last,a=999999999999;o;)e=o._prev,o._dirty&&o.totalDuration(),o._startTime>a&&n._sortChildren&&!o._paused&&!n._calculatingDuration?(n._calculatingDuration=1,n.add(o,o._startTime-o._delay),n._calculatingDuration=0):a=o._startTime,o._startTime<0&&!o._paused&&(i-=o._startTime,n._timeline.smoothChildTiming&&(n._startTime+=o._startTime/n._timeScale,n._time-=o._startTime,n._totalTime-=o._startTime,n._rawPrevTime-=o._startTime),n.shiftChildren(-o._startTime,!1,-9999999999),a=0),i<(r=o._startTime+o._totalDuration/o._timeScale)&&(i=r),o=e;n._duration=n._totalDuration=i,n._dirty=!1}return this._totalDuration},r.paused=function(t){if(!1===t&&this._paused)for(var e=this._first;e;)e._startTime===this._time&&"isPause"===e.data&&(e._rawPrevTime=0),e=e._next;return c.prototype.paused.apply(this,arguments)},r.usesFrames=function(){for(var t=this._timeline;t._timeline;)t=t._timeline;return t===c._rootFramesTimeline},r.rawTime=function(t){return t&&(this._paused||this._repeat&&0>0,f._cycle&&f._cycle===f._totalTime/l&&g<=t&&f._cycle--,f._time=f._totalTime-f._cycle*l,f._yoyo&&1&f._cycle&&(f._time=m-f._time),f._time>m?t=(f._time=m)+1e-4:f._time<0?f._time=t=0:t=f._time));if(f._hasPause&&!f._forcingPlayhead&&!e){if(p<(t=f._time)||f._repeat&&x!==f._cycle)for(i=f._first;i&&i._startTime<=t&&!u;)i._duration||"isPause"!==i.data||i.ratio||0===i._startTime&&0===f._rawPrevTime||(u=i),i=i._next;else for(i=f._last;i&&i._startTime>=t&&!u;)i._duration||"isPause"===i.data&&0f._time;)u.render(u._reversed?u.totalDuration()-(t-u._startTime)*u._timeScale:(t-u._startTime)*u._timeScale,e,r),u=u._prev;u=null,f.pause(),f._pauseTime=c}i._reversed?i.render((i._dirty?i.totalDuration():i._totalDuration)-(t-i._startTime)*i._timeScale,e,r):i.render((t-i._startTime)*i._timeScale,e,r)}i=o}f._onUpdate&&(e||(A.length&&I(),f._callback("onUpdate"))),a&&(f._locked||f._gc||v!==f._startTime&&_===f._timeScale||(0===f._time||d>=f.totalDuration())&&(n&&(A.length&&I(),f._timeline.autoRemoveChildren&&f._enabled(!1,!1),f._active=!1),!e&&f.vars[a]&&f._callback(a)))}else g!==f._totalTime&&f._onUpdate&&(e||f._callback("onUpdate"))},n.getActive=function(t,e,r){var i,n,o=[],a=this.getChildren(t||null==t,e||null==t,!!r),s=0,l=a.length;for(i=0;it)return r[e].name;return null},n.getLabelBefore=function(t){null==t&&(t=this._time);for(var e=this.getLabelsArray(),r=e.length;-1<--r;)if(e[r].time>0||6)-1,c=[],f=[];for(r in t)d(t[r],a,e);for(n=a.length,i=0;i>0]=f,s[o]=u,l=0,f=[]);return{length:u,lengths:s,segments:c}}(this._beziers,this._timeRes);this._length=f.length,this._lengths=f.lengths,this._segments=f.segments,this._l1=this._li=this._s1=this._si=0,this._l2=this._lengths[0],this._curSeg=this._segments[0],this._s2=this._curSeg[0],this._prec=1/this._curSeg.length}if(c=this._autoRotate)for(this._initialRotations=[],c[0]instanceof Array||(this._autoRotate=c=[c]),o=c.length;-1<--o;){for(a=0;a<3;a++)i=c[o][a],this._func[i]="function"==typeof t[i]&&t[i.indexOf("set")||"function"!=typeof t["get"+i.substr(3)]?i:"get"+i.substr(3)];i=c[o][2],this._initialRotations[o]=(this._func[i]?this._func[i].call(this._target):this._target[i])||0,this._overwriteProps.push(i)}return this._startRatio=r.vars.runBackwards?1:0,!0},set:function(t){var e,r,i,n,o,a,s,l,u,h,c,f=this._segCount,p=this._func,d=this._target,m=t!==this._startRatio;if(this._timeRes){if(u=this._lengths,h=this._curSeg,c=t*this._length,i=this._li,c>this._l2&&i=c;);0===i&&cthis._s2&&i=c;);0===i&&c>0)*(1/f))*f;for(r=1-a,i=this._props.length;-1<--i;)n=this._props[i],s=(a*a*(o=this._beziers[n][e]).da+3*r*(a*o.ca+r*o.ba))*a+o.a,this._mod[n]&&(s=this._mod[n](s,d)),p[n]?d[n](s):d[n]=s;if(this._autoRotate){var g,v,_,y,b,x,w,T=this._autoRotate;for(i=T.length;-1<--i;)n=T[i][2],x=T[i][3]||0,w=!0===T[i][4]?1:k,o=this._beziers[T[i][0]],g=this._beziers[T[i][1]],o&&g&&(o=o[e],g=g[e],v=o.a+(o.b-o.a)*a,v+=((y=o.b+(o.c-o.b)*a)-v)*a,y+=(o.c+(o.d-o.c)*a-y)*a,_=g.a+(g.b-g.a)*a,_+=((b=g.b+(g.c-g.b)*a)-_)*a,b+=(g.c+(g.d-g.c)*a-b)*a,s=m?Math.atan2(b-_,y-v)*w+x:this._initialRotations[i],this._mod[n]&&(s=this._mod[n](s,d)),p[n]?d[n](s):d[n]=s)}}}),t=g.prototype,g.bezierThrough=p,g.cubicToQuadratic=S,g._autoCSS=!0,g.quadraticToCubic=function(t,e,r){return new _(t,(2*e+t)/3,(2*e+r)/3,r)},g._cssRegister=function(){var t=r.CSSPlugin;if(t){var e=t._internals,p=e._parseToProxy,d=e._setPluginRatio,m=e.CSSPropTween;e._registerComplexSpecialProp("bezier",{parser:function(t,e,r,i,n,o){e instanceof Array&&(e={values:e}),o=new g;var a,s,l,u=e.values,h=u.length-1,c=[],f={};if(h<0)return n;for(a=0;a<=h;a++)l=p(t,u[a],i,n,o,h!==a),c[a]=l.end;for(s in e)f[s]=e[s];return f.values=c,(n=new m(t,"bezier",0,0,l.pt,2)).data=l,n.plugin=o,n.setRatio=d,0===f.autoRotate&&(f.autoRotate=!0),!f.autoRotate||f.autoRotate instanceof Array||(a=!0===f.autoRotate?0:Number(f.autoRotate),f.autoRotate=null!=l.end.left?[["left","top","rotation",a,!1]]:null!=l.end.x&&[["x","y","rotation",a,!1]]),f.autoRotate&&(i._transform||i._enableTransforms(!1),l.autoRotate=i._target._gsTransform,l.proxy.rotation=l.autoRotate.rotation||0,i._overwriteProps.push("rotation")),o._onInitTween(l.proxy,f,i._tween),n}})}},t._mod=function(t){for(var e,r=this._overwriteProps,i=r.length;-1<--i;)(e=t[r[i]])&&"function"==typeof e&&(this._mod[r[i]]=e)},t._kill=function(t){var e,r,i=this._props;for(e in this._beziers)if(e in t)for(delete this._beziers[e],delete this._func[e],r=i.length;-1<--r;)i[r]===e&&i.splice(r,1);if(i=this._autoRotate)for(r=i.length;-1<--r;)t[i[r][2]]&&i.splice(r,1);return this._super._kill.call(this,t)},_gsScope._gsDefine("plugins.CSSPlugin",["plugins.TweenPlugin","TweenLite"],function(o,B){var d,k,S,m,U=function(){o.call(this,"css"),this._overwriteProps.length=0,this.setRatio=U.prototype.setRatio},u=_gsScope._gsDefine.globals,g={},t=U.prototype=new o("css");(t.constructor=U).version="2.1.3",U.API=2,U.defaultTransformPerspective=0,U.defaultSkewType="compensated",U.defaultSmoothOrigin=!0,t="px",U.suffixMap={top:t,right:t,bottom:t,left:t,width:t,height:t,fontSize:t,padding:t,margin:t,perspective:t,lineHeight:""};var E,v,_,L,y,P,C,A,e,r,I=/(?:\-|\.|\b)(\d|\.|e\-)+/g,O=/(?:\d|\-\d|\.\d|\-\.\d|\+=\d|\-=\d|\+=.\d|\-=\.\d)+/g,b=/(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b)/gi,n=/(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b),?/gi,h=/(?![+-]?\d*\.?\d+|[+-]|e[+-]\d+)[^0-9]/g,M=/(?:\d|\-|\+|=|#|\.)*/g,D=/opacity *= *([^)]*)/i,x=/opacity:([^;]*)/i,a=/alpha\(opacity *=.+?\)/i,w=/^(rgb|hsl)/,s=/([A-Z])/g,l=/-([a-z])/gi,T=/(^(?:url\(\"|url\())|(?:(\"\))$|\)$)/gi,c=function(t,e){return e.toUpperCase()},p=/(?:Left|Right|Width)/i,f=/(M11|M12|M21|M22)=[\d\-\.e]+/gi,R=/progid\:DXImageTransform\.Microsoft\.Matrix\(.+?\)/i,z=/,(?=[^\)]*(?:\(|$))/gi,F=/[\s,\(]/i,j=Math.PI/180,X=180/Math.PI,N={},i={style:{}},H=_gsScope.document||{createElement:function(){return i}},W=function(t,e){var r=H.createElementNS?H.createElementNS(e||"http://www.w3.org/1999/xhtml",t):H.createElement(t);return r.style?r:H.createElement(t)},q=W("div"),G=W("img"),V=U._internals={_specialProps:g},Y=(_gsScope.navigator||{}).userAgent||"",Z=(e=Y.indexOf("Android"),r=W("a"),_=-1!==Y.indexOf("Safari")&&-1===Y.indexOf("Chrome")&&(-1===e||3>16,t>>8&255,255&t];else{if(","===t.charAt(t.length-1)&&(t=t.substr(0,t.length-1)),mt[t])r=mt[t];else if("#"===t.charAt(0))4===t.length&&(t="#"+(i=t.charAt(1))+i+(n=t.charAt(2))+n+(o=t.charAt(3))+o),r=[(t=parseInt(t.substr(1),16))>>16,t>>8&255,255&t];else if("hsl"===t.substr(0,3))if(r=f=t.match(I),e){if(-1!==t.indexOf("="))return t.match(O)}else a=Number(r[0])%360/360,s=Number(r[1])/100,i=2*(l=Number(r[2])/100)-(n=l<=.5?l*(s+1):l+s-l*s),3i--)for(;++ii--)for(;++i>0];return i.parse(t,a,n,o)}},wt=(V._setPluginRatio=function(t){this.plugin.setRatio(t);for(var e,r,i,n,o,a=this.data,s=a.proxy,l=a.firstMPT;l;)e=s[l.v],l.r?e=l.r(e):e<1e-6&&-1e-6s.length?l.length:s.length,a=0;ao.pr;)a=a._next;(o._prev=a?a._prev:l)?o._prev._next=o:s=o,(o._next=a)?a._prev=o:l=o,o=u}this._firstPT=s}return!0},t.parse=function(t,e,r,i){var n,o,a,s,l,u,h,c,f,p,d=t.style;for(n in e){if(u=e[n],o=g[n],"function"!=typeof u||o&&o.allowFunc||(u=u(A,C)),o)r=o.parse(t,u,n,this,r,i,e);else{if("--"===n.substr(0,2)){this._tween._propLookup[n]=this._addTween.call(this._tween,t.style,"setProperty",rt(t).getPropertyValue(n)+"",u+"",n,!1,n);continue}l=it(t,n,S)+"",f="string"==typeof u,"color"===n||"fill"===n||"stroke"===n||-1!==n.indexOf("Color")||f&&w.test(u)?(f||(u=(3<(u=vt(u)).length?"rgba(":"rgb(")+u.join(",")+")"),r=St(d,n,l,u,!0,"transparent",r,0,i)):f&&F.test(u)?r=St(d,n,l,u,!0,null,r,0,i):(h=(a=parseFloat(l))||0===a?l.substr((a+"").length):"",""!==l&&"auto"!==l||(h="width"===n||"height"===n?(a=ht(t,n,S),"px"):"left"===n||"top"===n?(a=ot(t,n,S),"px"):(a="opacity"!==n?0:1,"")),""===(c=(p=f&&"="===u.charAt(1))?(s=parseInt(u.charAt(0)+"1",10),u=u.substr(2),s*=parseFloat(u),u.replace(M,"")):(s=parseFloat(u),f?u.replace(M,""):""))&&(c=n in k?k[n]:h),u=s||0===s?(p?s+a:s)+c:e[n],h!==c&&(""===c&&"lineHeight"!==n||(s||0===s)&&a&&(a=nt(t,n,a,h),"%"===c?(a/=nt(t,n,100,"%")/100,!0!==e.strictUnits&&(l=a+"%")):"em"===c||"rem"===c||"vw"===c||"vh"===c?a/=nt(t,n,1,c):"px"!==c&&(s=nt(t,n,s,c),c="px"),p&&(s||0===s)&&(u=s+a+c))),p&&(s+=a),!a&&0!==a||!s&&0!==s?void 0!==d[n]&&(u||u+""!="NaN"&&null!=u)?(r=new Tt(d,n,s||a||0,0,r,-1,n,!1,0,l,u)).xs0="none"!==u||"display"!==n&&-1===n.indexOf("Style")?u:l:K("invalid "+n+" tween value: "+e[n]):(r=new Tt(d,n,a,s-a,r,0,n,!1!==E&&("px"===c||"zIndex"===n),0,l,u)).xs0=c)}i&&r&&!r.plugin&&(r.plugin=i)}return r},t.setRatio=function(t){var e,r,i,n=this._firstPT;if(1!==t||this._tween._time!==this._tween._duration&&0!==this._tween._time)if(t||this._tween._time!==this._tween._duration&&0!==this._tween._time||-1e-6===this._tween._rawPrevTime)for(;n;){if(e=n.c*t+n.s,n.r?e=n.r(e):e<1e-6&&-1e-6this._p3?this._calcEnd?1===t?0:1-(t=(t-this._p3)/this._p1)*t:e+(t-e)*(t=(t-this._p3)/this._p1)*t*t*t:this._calcEnd?1:e},d.ease=new d(.7,.7),m.config=d.config=function(t,e,r){return new d(t,e,r)},(m=(r=l("easing.SteppedEase",function(t,e){t=t||1,this._p1=1/t,this._p2=t+(e?0:1),this._p3=e?1:0},!0)).prototype=new g).constructor=r,m.getRatio=function(t){return t<0?t=0:1<=t&&(t=.999999999),((this._p2*t|0)+this._p3)*this._p1},m.config=r.config=function(t,e){return new r(t,e)},(m=(i=l("easing.ExpoScaleEase",function(t,e,r){this._p1=Math.log(e/t),this._p2=e-t,this._p3=t,this._ease=r},!0)).prototype=new g).constructor=i,m.getRatio=function(t){return this._ease&&(t=this._ease.getRatio(t)),(this._p3*Math.exp(this._p1*t)-this._p3)/this._p2},m.config=i.config=function(t,e,r){return new i(t,e,r)},(m=(e=l("easing.RoughEase",function(t){for(var e,r,i,n,o,a,s=(t=t||{}).taper||"none",l=[],u=0,h=0|(t.points||20),c=h,f=!1!==t.randomize,p=!0===t.clamp,d=t.template instanceof g?t.template:null,m="number"==typeof t.strength?.4*t.strength:.4;-1<--c;)e=f?Math.random():1/h*c,r=d?d.getRatio(e):e,i="none"===s?m:"out"===s?(n=1-e)*n*m:"in"===s?e*e*m:e<.5?(n=2*e)*n*.5*m:(n=2*(1-e))*n*.5*m,f?r+=Math.random()*i-.5*i:c%2?r+=.5*i:r-=.5*i,p&&(1e.t){for(;e.next&&t>=e.t;)e=e.next;e=e.prev}else for(;e.prev&&t<=e.t;)e=e.prev;return(this._prev=e).v+(t-e.t)/e.gap*e.c},m.config=function(t){return new e(t)},e.ease=new e,c("Bounce",u("BounceOut",function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375}),u("BounceIn",function(t){return(t=1-t)<1/2.75?1-7.5625*t*t:t<2/2.75?1-(7.5625*(t-=1.5/2.75)*t+.75):t<2.5/2.75?1-(7.5625*(t-=2.25/2.75)*t+.9375):1-(7.5625*(t-=2.625/2.75)*t+.984375)}),u("BounceInOut",function(t){var e=t<.5;return(t=e?1-2*t:2*t-1)<1/2.75?t*=7.5625*t:t=t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375,e?.5*(1-t):.5*t+.5})),c("Circ",u("CircOut",function(t){return Math.sqrt(1-(t-=1)*t)}),u("CircIn",function(t){return-(Math.sqrt(1-t*t)-1)}),u("CircInOut",function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)})),c("Elastic",(t=function(t,e,r){var i=l("easing."+t,function(t,e){this._p1=1<=t?t:1,this._p2=(e||r)/(t<1?t:1),this._p3=this._p2/a*(Math.asin(1/this._p1)||0),this._p2=a/this._p2},!0),n=i.prototype=new g;return n.constructor=i,n.getRatio=e,n.config=function(t,e){return new i(t,e)},i})("ElasticOut",function(t){return this._p1*Math.pow(2,-10*t)*Math.sin((t-this._p3)*this._p2)+1},.3),t("ElasticIn",function(t){return-this._p1*Math.pow(2,10*(t-=1))*Math.sin((t-this._p3)*this._p2)},.3),t("ElasticInOut",function(t){return(t*=2)<1?this._p1*Math.pow(2,10*(t-=1))*Math.sin((t-this._p3)*this._p2)*-.5:this._p1*Math.pow(2,-10*(t-=1))*Math.sin((t-this._p3)*this._p2)*.5+1},.45)),c("Expo",u("ExpoOut",function(t){return 1-Math.pow(2,-10*t)}),u("ExpoIn",function(t){return Math.pow(2,10*(t-1))-.001}),u("ExpoInOut",function(t){return(t*=2)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*(t-1)))})),c("Sine",u("SineOut",function(t){return Math.sin(t*s)}),u("SineIn",function(t){return 1-Math.cos(t*s)}),u("SineInOut",function(t){return-.5*(Math.cos(Math.PI*t)-1)})),l("easing.EaseLookup",{find:function(t){return g.map[t]}},!0),h(n.SlowMo,"SlowMo","ease,"),h(e,"RoughEase","ease,"),h(r,"SteppedEase","ease,"),p},!0)}),_gsScope._gsDefine&&_gsScope._gsQueue.pop()(),function(f,p){"use strict";var d={},i=f.document,m=f.GreenSockGlobals=f.GreenSockGlobals||f,t=m[p];if(t)return"undefined"!=typeof module&&module.exports&&(module.exports=t);var e,r,n,g,v,o,a,_=function(t){var e,r=t.split("."),i=m;for(e=0;e=r&&tthis._duration?this._duration:t,e)):this._time},n.totalTime=function(t,e,r){if(v||g.wake(),!arguments.length)return this._totalTime;if(this._timeline){if(t<0&&!r&&(t+=this.totalDuration()),this._timeline.smoothChildTiming){this._dirty&&this.totalDuration();var i=this._totalDuration,n=this._timeline;if(io;)n=n._prev;return n?(t._next=n._next,n._next=t):(t._next=this._first,this._first=t),t._next?t._next._prev=t:this._last=t,t._prev=n,this._recent=t,this._timeline&&this._uncache(!0),this},n._remove=function(t,e){return t.timeline===this&&(e||t._enabled(!1,!0),t._prev?t._prev._next=t._next:this._first===t&&(this._first=t._next),t._next?t._next._prev=t._prev:this._last===t&&(this._last=t._prev),t._next=t._prev=t.timeline=null,t===this._recent&&(this._recent=this._last),this._timeline&&this._uncache(!0)),this},n.render=function(t,e,r){var i,n=this._first;for(this._totalTime=this._time=this._rawPrevTime=t;n;)i=n._next,(n._active||t>=n._startTime&&!n._paused&&!n._gc)&&(n._reversed?n.render((n._dirty?n.totalDuration():n._totalDuration)-(t-n._startTime)*n._timeScale,e,r):n.render((t-n._startTime)*n._timeScale,e,r)),n=i},n.rawTime=function(){return v||g.wake(),this._totalTime};var z=k("TweenLite",function(t,e,r){if(M.call(this,e,r),this.render=z.prototype.render,null==t)throw"Cannot tween a null target.";this.target=t="string"!=typeof t?t:z.selector(t)||t;var i,n,o,a=t.jquery||t.length&&t!==f&&t[0]&&(t[0]===f||t[0].nodeType&&t[0].style&&!t.nodeType),s=this.vars.overwrite;if(this._overwrite=s=null==s?J[z.defaultOverwrite]:"number"==typeof s?s>>0:J[s],(a||t instanceof Array||t.push&&x(t))&&"number"!=typeof t[0])for(this._targets=o=l(t),this._propLookup=[],this._siblings=[],i=0;i=$){for(r in $=g.frame+(parseInt(z.autoSleep,10)||120),V){for(t=(e=V[r].tweens).length;-1<--t;)e[t]._gc&&e.splice(t,1);0===e.length&&delete V[r]}if((!(r=Q._first)||r._paused)&&z.autoSleep&&!K._first&&1===g._listeners.tick.length){for(;r&&r._paused;)r=r._next;r||g.sleep()}}},g.addEventListener("tick",M._updateRoot);var et=function(t,e,r){var i,n,o=t._gsTweenID;if(V[o||(t._gsTweenID=o="t"+Y++)]||(V[o]={target:t,tweens:[]}),e&&((i=V[o].tweens)[n=i.length]=e,r))for(;-1<--n;)i[n]===e&&i.splice(n,1);return V[o].tweens},rt=function(t,e,r,i){var n,o,a=t.vars.onOverwrite;return a&&(n=a(t,e,r,i)),(a=z.onOverwrite)&&(o=a(t,e,r,i)),!1!==n&&!1!==o},it=function(t,e,r,i,n){var o,a,s,l;if(1===i||4<=i){for(l=n.length,o=0;oh&&((p||!s._initted)&&h-s._startTime<=2e-8||(c[f++]=s)));for(o=f;-1<--o;)if(l=(s=c[o])._firstPT,2===i&&s._kill(r,t,e)&&(a=!0),2!==i||!s._firstPT&&s._initted&&l){if(2!==i&&!rt(s,e))continue;s._enabled(!1,!1)&&(a=!0)}return a},nt=function(t,e,r){for(var i=t._timeline,n=i._timeScale,o=t._startTime;i._timeline;){if(o+=i._startTime,n*=i._timeScale,i._paused)return-100;i=i._timeline}return e<(o/=n)?o-e:r&&o===e||!t._initted&&o-e<2e-8?y:(o+=t.totalDuration()/t._timeScale/n)>e+y?0:o-e-y};n._init=function(){var t,e,r,i,n,o,a=this.vars,s=this._overwrittenProps,l=this._duration,u=!!a.immediateRender,h=a.ease,c=this._startAt;if(a.startAt){for(i in c&&(c.render(-1,!0),c.kill()),n={},a.startAt)n[i]=a.startAt[i];if(n.data="isStart",n.overwrite=!1,n.immediateRender=!0,n.lazy=u&&!1!==a.lazy,n.startAt=n.delay=null,n.onUpdate=a.onUpdate,n.onUpdateParams=a.onUpdateParams,n.onUpdateScope=a.onUpdateScope||a.callbackScope||this,this._startAt=z.to(this.target||{},0,n),u)if(0s.pr;)i=i._next;(s._prev=i?i._prev:o)?s._prev._next=s:n=s,(s._next=i)?i._prev=s:o=s,s=a}s=e._firstPT=n}for(;s;)s.pg&&"function"==typeof s.t[t]&&s.t[t]()&&(r=!0),s=s._next;return r},ot.activate=function(t){for(var e=t.length;-1<--e;)t[e].API===ot.API&&(G[(new t[e])._propName]=t[e]);return!0},s.plugin=function(t){if(!(t&&t.propName&&t.init&&t.API))throw"illegal plugin definition.";var e,r=t.propName,i=t.priority||0,n=t.overwriteProps,o={init:"_onInitTween",set:"setRatio",kill:"_kill",round:"_mod",mod:"_mod",initAll:"_onInitAllProps"},a=k("plugins."+r.charAt(0).toUpperCase()+r.substr(1)+"Plugin",function(){ot.call(this,r,i),this._overwriteProps=n||[]},!0===t.global),s=a.prototype=new ot(r);for(e in(s.constructor=a).API=t.API,o)"function"==typeof t[e]&&(s[o[e]]=t[e]);return a.version=t.version,ot.activate([a]),a},e=f._gsQueue){for(r=0;r>0,f._cycle&&f._cycle===f._totalTime/l&&g<=t&&f._cycle--,f._time=f._totalTime-f._cycle*l,f._yoyo&&1&f._cycle&&(f._time=m-f._time),f._time>m?t=(f._time=m)+1e-4:f._time<0?f._time=t=0:t=f._time));if(f._hasPause&&!f._forcingPlayhead&&!e){if(p<(t=f._time)||f._repeat&&x!==f._cycle)for(i=f._first;i&&i._startTime<=t&&!u;)i._duration||"isPause"!==i.data||i.ratio||0===i._startTime&&0===f._rawPrevTime||(u=i),i=i._next;else for(i=f._last;i&&i._startTime>=t&&!u;)i._duration||"isPause"===i.data&&0f._time;)u.render(u._reversed?u.totalDuration()-(t-u._startTime)*u._timeScale:(t-u._startTime)*u._timeScale,e,r),u=u._prev;u=null,f.pause(),f._pauseTime=c}i._reversed?i.render((i._dirty?i.totalDuration():i._totalDuration)-(t-i._startTime)*i._timeScale,e,r):i.render((t-i._startTime)*i._timeScale,e,r)}i=o}f._onUpdate&&(e||(A.length&&I(),f._callback("onUpdate"))),a&&(f._locked||f._gc||v!==f._startTime&&_===f._timeScale||(0===f._time||d>=f.totalDuration())&&(n&&(A.length&&I(),f._timeline.autoRemoveChildren&&f._enabled(!1,!1),f._active=!1),!e&&f.vars[a]&&f._callback(a)))}else g!==f._totalTime&&f._onUpdate&&(e||f._callback("onUpdate"))},n.getActive=function(t,e,r){var i,n,o=[],a=this.getChildren(t||null==t,e||null==t,!!r),s=0,l=a.length;for(i=0;it)return r[e].name;return null},n.getLabelBefore=function(t){null==t&&(t=this._time);for(var e=this.getLabelsArray(),r=e.length;-1<--r;)if(e[r].timet._startTime;l._timeline;)u&&l._timeline.smoothChildTiming?l.totalTime(l._totalTime,!0):l._gc&&l._enabled(!0,!1),l=l._timeline;return h},r.remove=function(t){if(t instanceof c){this._remove(t,!1);var e=t._timeline=t.vars.useFrames?c._rootFramesTimeline:c._rootTimeline;return t._startTime=(t._paused?t._pauseTime:e._time)-(t._reversed?t.totalDuration()-t._totalTime:t._totalTime)/t._timeScale,this}if(t instanceof Array||t&&t.push&&p(t)){for(var r=t.length;-1<--r;)this.remove(t[r]);return this}return"string"==typeof t?this.removeLabel(t):this.kill(null,t)},r._remove=function(t,e){return f.prototype._remove.call(this,t,e),this._last?this._time>this.duration()&&(this._time=this._duration,this._totalTime=this._totalDuration):this._time=this._totalTime=this._duration=this._totalDuration=0,this},r.append=function(t,e){return this.add(t,this._parseTimeOrLabel(null,e,!0,t))},r.insert=r.insertMultiple=function(t,e,r,i){return this.add(t,e||0,r,i)},r.appendMultiple=function(t,e,r,i){return this.add(t,this._parseTimeOrLabel(null,e,!0,t),r,i)},r.addLabel=function(t,e){return this._labels[t]=this._parseTimeOrLabel(e),this},r.addPause=function(t,e,r,i){var n=d.delayedCall(0,o,r,i||this);return n.vars.onComplete=n.vars.onReverseComplete=e,n.data="isPause",this._hasPause=!0,this.add(n,t)},r.removeLabel=function(t){return delete this._labels[t],this},r.getLabelTime=function(t){return null!=this._labels[t]?this._labels[t]:-1},r._parseTimeOrLabel=function(t,e,r,i){var n,o;if(i instanceof c&&i.timeline===this)this.remove(i);else if(i&&(i instanceof Array||i.push&&p(i)))for(o=i.length;-1<--o;)i[o]instanceof c&&i[o].timeline===this&&this.remove(i[o]);if(n="number"!=typeof t||e?99999999999=t&&!l;)i._duration||"isPause"===i.data&&0c._time;)l.render(l._reversed?l.totalDuration()-(t-l._startTime)*l._timeScale:(t-l._startTime)*l._timeScale,e,r),l=l._prev;l=null,c.pause(),c._pauseTime=h}i._reversed?i.render((i._dirty?i.totalDuration():i._totalDuration)-(t-i._startTime)*i._timeScale,e,r):i.render((t-i._startTime)*i._timeScale,e,r)}i=o}c._onUpdate&&(e||(v.length&&_(),c._callback("onUpdate"))),a&&(c._gc||d!==c._startTime&&m===c._timeScale||(0===c._time||p>=c.totalDuration())&&(n&&(v.length&&_(),c._timeline.autoRemoveChildren&&c._enabled(!1,!1),c._active=!1),!e&&c.vars[a]&&c._callback(a)))}},r._hasPausedChild=function(){for(var t=this._first;t;){if(t._paused||t instanceof m&&t._hasPausedChild())return!0;t=t._next}return!1},r.getChildren=function(t,e,r,i){i=i||-9999999999;for(var n=[],o=this._first,a=0;o;)o._startTime=r&&(n._startTime+=t),n=n._next;if(e)for(i in o)o[i]>=r&&(o[i]+=t);return this._uncache(!0)},r._kill=function(t,e){if(!t&&!e)return this._enabled(!1,!1);for(var r=e?this.getTweensOf(e):this.getChildren(!0,!0,!1),i=r.length,n=!1;-1<--i;)r[i]._kill(t,e)&&(n=!0);return n},r.clear=function(t){var e=this.getChildren(!1,!0,!0),r=e.length;for(this._time=this._totalTime=0;-1<--r;)e[r]._enabled(!1,!1);return!1!==t&&(this._labels={}),this._uncache(!0)},r.invalidate=function(){for(var t=this._first;t;)t.invalidate(),t=t._next;return c.prototype.invalidate.call(this)},r._enabled=function(t,e){if(t===this._gc)for(var r=this._first;r;)r._enabled(t,!0),r=r._next;return f.prototype._enabled.call(this,t,e)},r.totalTime=function(t,e,r){this._forcingPlayhead=!0;var i=c.prototype.totalTime.apply(this,arguments);return this._forcingPlayhead=!1,i},r.duration=function(t){return arguments.length?(0!==this.duration()&&0!==t&&this.timeScale(this._duration/t),this):(this._dirty&&this.totalDuration(),this._duration)},r.totalDuration=function(t){if(arguments.length)return t&&this.totalDuration()?this.timeScale(this._totalDuration/t):this;if(this._dirty){for(var e,r,i=0,n=this,o=n._last,a=999999999999;o;)e=o._prev,o._dirty&&o.totalDuration(),o._startTime>a&&n._sortChildren&&!o._paused&&!n._calculatingDuration?(n._calculatingDuration=1,n.add(o,o._startTime-o._delay),n._calculatingDuration=0):a=o._startTime,o._startTime<0&&!o._paused&&(i-=o._startTime,n._timeline.smoothChildTiming&&(n._startTime+=o._startTime/n._timeScale,n._time-=o._startTime,n._totalTime-=o._startTime,n._rawPrevTime-=o._startTime),n.shiftChildren(-o._startTime,!1,-9999999999),a=0),i<(r=o._startTime+o._totalDuration/o._timeScale)&&(i=r),o=e;n._duration=n._totalDuration=i,n._dirty=!1}return this._totalDuration},r.paused=function(t){if(!1===t&&this._paused)for(var e=this._first;e;)e._startTime===this._time&&"isPause"===e.data&&(e._rawPrevTime=0),e=e._next;return c.prototype.paused.apply(this,arguments)},r.usesFrames=function(){for(var t=this._timeline;t._timeline;)t=t._timeline;return t===c._rootFramesTimeline},r.rawTime=function(t){return t&&(this._paused||this._repeat&&0+~]|"+F+")"+F+"*"),W=new RegExp("="+F+"*([^\\]'\"]*?)"+F+"*\\]","g"),q=new RegExp(N),G=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+j),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+F+"*(even|odd|(([+-]|)(\\d*)n|)"+F+"*(?:([+-]|)"+F+"*(\\d+)|))"+F+"*\\)|)","i"),bool:new RegExp("^(?:"+z+")$","i"),needsContext:new RegExp("^"+F+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+F+"*((?:-\\d)?\\d*)"+F+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,K=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Q=/[+~]/,$=new RegExp("\\\\([\\da-f]{1,6}"+F+"?|("+F+")|.)","ig"),tt=function(t,e,r){var i="0x"+e-65536;return i!=i||r?e:i<0?String.fromCharCode(65536+i):String.fromCharCode(i>>10|55296,1023&i|56320)},et=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,rt=function(t,e){return e?"\0"===t?"ďż˝":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},it=function(){w()},nt=_t(function(t){return!0===t.disabled&&("form"in t||"label"in t)},{dir:"parentNode",next:"legend"});try{M.apply(e=D.call(_.childNodes),_.childNodes),e[_.childNodes.length].nodeType}catch(t){M={apply:e.length?function(t,e){O.apply(t,D.call(e))}:function(t,e){for(var r=t.length,i=0;t[r++]=e[i++];);t.length=r-1}}}function ot(t,e,r,i){var n,o,a,s,l,u,h,c=e&&e.ownerDocument,f=e?e.nodeType:9;if(r=r||[],"string"!=typeof t||!t||1!==f&&9!==f&&11!==f)return r;if(!i&&((e?e.ownerDocument||e:_)!==T&&w(e),e=e||T,k)){if(11!==f&&(l=K.exec(t)))if(n=l[1]){if(9===f){if(!(a=e.getElementById(n)))return r;if(a.id===n)return r.push(a),r}else if(c&&(a=c.getElementById(n))&&v(e,a)&&a.id===n)return r.push(a),r}else{if(l[2])return M.apply(r,e.getElementsByTagName(t)),r;if((n=l[3])&&p.getElementsByClassName&&e.getElementsByClassName)return M.apply(r,e.getElementsByClassName(n)),r}if(p.qsa&&!E[t+" "]&&(!g||!g.test(t))){if(1!==f)c=e,h=t;else if("object"!==e.nodeName.toLowerCase()){for((s=e.getAttribute("id"))?s=s.replace(et,rt):e.setAttribute("id",s=S),o=(u=d(t)).length;o--;)u[o]="#"+s+" "+vt(u[o]);h=u.join(","),c=Q.test(t)&&mt(e.parentNode)||e}if(h)try{return M.apply(r,c.querySelectorAll(h)),r}catch(t){}finally{s===S&&e.removeAttribute("id")}}}return m(t.replace(U,"$1"),e,r,i)}function at(){var i=[];return function t(e,r){return i.push(e+" ")>b.cacheLength&&delete t[i.shift()],t[e+" "]=r}}function st(t){return t[S]=!0,t}function lt(t){var e=T.createElement("fieldset");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function ut(t,e){for(var r=t.split("|"),i=r.length;i--;)b.attrHandle[r[i]]=e}function ht(t,e){var r=e&&t,i=r&&1===t.nodeType&&1===e.nodeType&&t.sourceIndex-e.sourceIndex;if(i)return i;if(r)for(;r=r.nextSibling;)if(r===e)return-1;return t?1:-1}function ct(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function ft(r){return function(t){var e=t.nodeName.toLowerCase();return("input"===e||"button"===e)&&t.type===r}}function pt(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&nt(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function dt(a){return st(function(o){return o=+o,st(function(t,e){for(var r,i=a([],t.length,o),n=i.length;n--;)t[r=i[n]]&&(t[r]=!(e[r]=t[r]))})})}function mt(t){return t&&void 0!==t.getElementsByTagName&&t}for(t in p=ot.support={},n=ot.isXML=function(t){var e=t&&(t.ownerDocument||t).documentElement;return!!e&&"HTML"!==e.nodeName},w=ot.setDocument=function(t){var e,r,i=t?t.ownerDocument||t:_;return i!==T&&9===i.nodeType&&i.documentElement&&(a=(T=i).documentElement,k=!n(T),_!==T&&(r=T.defaultView)&&r.top!==r&&(r.addEventListener?r.addEventListener("unload",it,!1):r.attachEvent&&r.attachEvent("onunload",it)),p.attributes=lt(function(t){return t.className="i",!t.getAttribute("className")}),p.getElementsByTagName=lt(function(t){return t.appendChild(T.createComment("")),!t.getElementsByTagName("*").length}),p.getElementsByClassName=J.test(T.getElementsByClassName),p.getById=lt(function(t){return a.appendChild(t).id=S,!T.getElementsByName||!T.getElementsByName(S).length}),p.getById?(b.filter.ID=function(t){var e=t.replace($,tt);return function(t){return t.getAttribute("id")===e}},b.find.ID=function(t,e){if(void 0!==e.getElementById&&k){var r=e.getElementById(t);return r?[r]:[]}}):(b.filter.ID=function(t){var r=t.replace($,tt);return function(t){var e=void 0!==t.getAttributeNode&&t.getAttributeNode("id");return e&&e.value===r}},b.find.ID=function(t,e){if(void 0!==e.getElementById&&k){var r,i,n,o=e.getElementById(t);if(o){if((r=o.getAttributeNode("id"))&&r.value===t)return[o];for(n=e.getElementsByName(t),i=0;o=n[i++];)if((r=o.getAttributeNode("id"))&&r.value===t)return[o]}return[]}}),b.find.TAG=p.getElementsByTagName?function(t,e){return void 0!==e.getElementsByTagName?e.getElementsByTagName(t):p.qsa?e.querySelectorAll(t):void 0}:function(t,e){var r,i=[],n=0,o=e.getElementsByTagName(t);if("*"!==t)return o;for(;r=o[n++];)1===r.nodeType&&i.push(r);return i},b.find.CLASS=p.getElementsByClassName&&function(t,e){if(void 0!==e.getElementsByClassName&&k)return e.getElementsByClassName(t)},s=[],g=[],(p.qsa=J.test(T.querySelectorAll))&&(lt(function(t){a.appendChild(t).innerHTML="",t.querySelectorAll("[msallowcapture^='']").length&&g.push("[*^$]="+F+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||g.push("\\["+F+"*(?:value|"+z+")"),t.querySelectorAll("[id~="+S+"-]").length||g.push("~="),t.querySelectorAll(":checked").length||g.push(":checked"),t.querySelectorAll("a#"+S+"+*").length||g.push(".#.+[+~]")}),lt(function(t){t.innerHTML="";var e=T.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&g.push("name"+F+"*[*^$|!~]?="),2!==t.querySelectorAll(":enabled").length&&g.push(":enabled",":disabled"),a.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&g.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),g.push(",.*:")})),(p.matchesSelector=J.test(h=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&<(function(t){p.disconnectedMatch=h.call(t,"*"),h.call(t,"[s!='']:x"),s.push("!=",N)}),g=g.length&&new RegExp(g.join("|")),s=s.length&&new RegExp(s.join("|")),e=J.test(a.compareDocumentPosition),v=e||J.test(a.contains)?function(t,e){var r=9===t.nodeType?t.documentElement:t,i=e&&e.parentNode;return t===i||!(!i||1!==i.nodeType||!(r.contains?r.contains(i):t.compareDocumentPosition&&16&t.compareDocumentPosition(i)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},C=e?function(t,e){if(t===e)return u=!0,0;var r=!t.compareDocumentPosition-!e.compareDocumentPosition;return r||(1&(r=(t.ownerDocument||t)===(e.ownerDocument||e)?t.compareDocumentPosition(e):1)||!p.sortDetached&&e.compareDocumentPosition(t)===r?t===T||t.ownerDocument===_&&v(_,t)?-1:e===T||e.ownerDocument===_&&v(_,e)?1:l?R(l,t)-R(l,e):0:4&r?-1:1)}:function(t,e){if(t===e)return u=!0,0;var r,i=0,n=t.parentNode,o=e.parentNode,a=[t],s=[e];if(!n||!o)return t===T?-1:e===T?1:n?-1:o?1:l?R(l,t)-R(l,e):0;if(n===o)return ht(t,e);for(r=t;r=r.parentNode;)a.unshift(r);for(r=e;r=r.parentNode;)s.unshift(r);for(;a[i]===s[i];)i++;return i?ht(a[i],s[i]):a[i]===_?-1:s[i]===_?1:0}),T},ot.matches=function(t,e){return ot(t,null,null,e)},ot.matchesSelector=function(t,e){if((t.ownerDocument||t)!==T&&w(t),e=e.replace(W,"='$1']"),p.matchesSelector&&k&&!E[e+" "]&&(!s||!s.test(e))&&(!g||!g.test(e)))try{var r=h.call(t,e);if(r||p.disconnectedMatch||t.document&&11!==t.document.nodeType)return r}catch(t){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace($,tt),t[3]=(t[3]||t[4]||t[5]||"").replace($,tt),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||ot.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&ot.error(t[0]),t},PSEUDO:function(t){var e,r=!t[6]&&t[2];return V.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":r&&q.test(r)&&(e=d(r,!0))&&(e=r.indexOf(")",r.length-e)-r.length)&&(t[0]=t[0].slice(0,e),t[2]=r.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace($,tt).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=f[t+" "];return e||(e=new RegExp("(^|"+F+")"+t+"("+F+"|$)"))&&f(t,function(t){return e.test("string"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute("class")||"")})},ATTR:function(r,i,n){return function(t){var e=ot.attr(t,r);return null==e?"!="===i:!i||(e+="","="===i?e===n:"!="===i?e!==n:"^="===i?n&&0===e.indexOf(n):"*="===i?n&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function A(t,r,i){return _(r)?S.grep(t,function(t,e){return!!r.call(t,e,t)!==i}):r.nodeType?S.grep(t,function(t){return t===r!==i}):"string"!=typeof r?S.grep(t,function(t){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(t,e,r){var i,n;if(!t)return this;if(r=r||I,"string"!=typeof t)return t.nodeType?(this[0]=t,this.length=1,this):_(t)?void 0!==r.ready?r.ready(t):t(S):S.makeArray(t,this);if(!(i="<"===t[0]&&">"===t[t.length-1]&&3<=t.length?[null,t,null]:O.exec(t))||!i[1]&&e)return!e||e.jquery?(e||r).find(t):this.constructor(e).find(t);if(i[1]){if(e=e instanceof S?e[0]:e,S.merge(this,S.parseHTML(i[1],e&&e.nodeType?e.ownerDocument||e:k,!0)),C.test(i[1])&&S.isPlainObject(e))for(i in e)_(this[i])?this[i](e[i]):this.attr(i,e[i]);return this}return(n=k.getElementById(i[2]))&&(this[0]=n,this.length=1),this}).prototype=S.fn,I=S(k);var M=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};function R(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}S.fn.extend({has:function(t){var e=S(t,this),r=e.length;return this.filter(function(){for(var t=0;t\x20\t\r\n\f]+)/i,ht=/^$|^module$|\/(?:java|ecma)script/i,ct={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ft(t,e){var r;return r=void 0!==t.getElementsByTagName?t.getElementsByTagName(e||"*"):void 0!==t.querySelectorAll?t.querySelectorAll(e||"*"):[],void 0===e||e&&E(t,e)?S.merge([t],r):r}function pt(t,e){for(var r=0,i=t.length;rx",v.noCloneChecked=!!dt.cloneNode(!0).lastChild.defaultValue;var _t=k.documentElement,yt=/^key/,bt=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,xt=/^([^.]*)(?:\.(.+)|)/;function wt(){return!0}function Tt(){return!1}function kt(){try{return k.activeElement}catch(t){}}function St(t,e,r,i,n,o){var a,s;if("object"==typeof e){for(s in"string"!=typeof r&&(i=i||r,r=void 0),e)St(t,s,r,i,e[s],o);return t}if(null==i&&null==n?(n=r,i=r=void 0):null==n&&("string"==typeof r?(n=i,i=void 0):(n=i,i=r,r=void 0)),!1===n)n=Tt;else if(!n)return t;return 1===o&&(a=n,(n=function(t){return S().off(t),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),t.each(function(){S.event.add(this,e,n,i,r)})}S.event={global:{},add:function(e,t,r,i,n){var o,a,s,l,u,h,c,f,p,d,m,g=Z.get(e);if(g)for(r.handler&&(r=(o=r).handler,n=o.selector),n&&S.find.matchesSelector(_t,n),r.guid||(r.guid=S.guid++),(l=g.events)||(l=g.events={}),(a=g.handle)||(a=g.handle=function(t){return void 0!==S&&S.event.triggered!==t.type?S.event.dispatch.apply(e,arguments):void 0}),u=(t=(t||"").match(z)||[""]).length;u--;)p=m=(s=xt.exec(t[u])||[])[1],d=(s[2]||"").split(".").sort(),p&&(c=S.event.special[p]||{},p=(n?c.delegateType:c.bindType)||p,c=S.event.special[p]||{},h=S.extend({type:p,origType:m,data:i,handler:r,guid:r.guid,selector:n,needsContext:n&&S.expr.match.needsContext.test(n),namespace:d.join(".")},o),(f=l[p])||((f=l[p]=[]).delegateCount=0,c.setup&&!1!==c.setup.call(e,i,d,a)||e.addEventListener&&e.addEventListener(p,a)),c.add&&(c.add.call(e,h),h.handler.guid||(h.handler.guid=r.guid)),n?f.splice(f.delegateCount++,0,h):f.push(h),S.event.global[p]=!0)},remove:function(t,e,r,i,n){var o,a,s,l,u,h,c,f,p,d,m,g=Z.hasData(t)&&Z.get(t);if(g&&(l=g.events)){for(u=(e=(e||"").match(z)||[""]).length;u--;)if(p=m=(s=xt.exec(e[u])||[])[1],d=(s[2]||"").split(".").sort(),p){for(c=S.event.special[p]||{},f=l[p=(i?c.delegateType:c.bindType)||p]||[],s=s[2]&&new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=f.length;o--;)h=f[o],!n&&m!==h.origType||r&&r.guid!==h.guid||s&&!s.test(h.namespace)||i&&i!==h.selector&&("**"!==i||!h.selector)||(f.splice(o,1),h.selector&&f.delegateCount--,c.remove&&c.remove.call(t,h));a&&!f.length&&(c.teardown&&!1!==c.teardown.call(t,d,g.handle)||S.removeEvent(t,p,g.handle),delete l[p])}else for(p in l)S.event.remove(t,p+e[u],r,i,!0);S.isEmptyObject(l)&&Z.remove(t,"handle events")}},dispatch:function(t){var e,r,i,n,o,a,s=S.event.fix(t),l=new Array(arguments.length),u=(Z.get(this,"events")||{})[s.type]||[],h=S.event.special[s.type]||{};for(l[0]=s,e=1;e\x20\t\r\n\f]*)[^>]*)\/>/gi,Et=/\s*$/g;function It(t,e){return E(t,"table")&&E(11!==e.nodeType?e:e.firstChild,"tr")&&S(t).children("tbody")[0]||t}function Ot(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function Mt(t){return"true/"===(t.type||"").slice(0,5)?t.type=t.type.slice(5):t.removeAttribute("type"),t}function Dt(t,e){var r,i,n,o,a,s,l,u;if(1===e.nodeType){if(Z.hasData(t)&&(o=Z.access(t),a=Z.set(e,o),u=o.events))for(n in delete a.handle,a.events={},u)for(r=0,i=u[n].length;r")},clone:function(t,e,r){var i,n,o,a,s,l,u,h=t.cloneNode(!0),c=S.contains(t.ownerDocument,t);if(!(v.noCloneChecked||1!==t.nodeType&&11!==t.nodeType||S.isXMLDoc(t)))for(a=ft(h),i=0,n=(o=ft(t)).length;i").prop({charset:r.scriptCharset,src:r.url}).on("load error",n=function(t){i.remove(),n=null,t&&e("error"===t.type?404:200,t.type)}),k.head.appendChild(i[0])},abort:function(){n&&n()}}});var Xe,He=[],We=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var t=He.pop()||S.expando+"_"+be++;return this[t]=!0,t}}),S.ajaxPrefilter("json jsonp",function(t,e,r){var i,n,o,a=!1!==t.jsonp&&(We.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&We.test(t.data)&&"data");if(a||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=_(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,a?t[a]=t[a].replace(We,"$1"+i):!1!==t.jsonp&&(t.url+=(xe.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return o||S.error(i+" was not called"),o[0]},t.dataTypes[0]="json",n=T[i],T[i]=function(){o=arguments},r.always(function(){void 0===n?S(T).removeProp(i):T[i]=n,t[i]&&(t.jsonpCallback=e.jsonpCallback,He.push(i)),o&&_(n)&&n(o[0]),o=n=void 0}),"script"}),v.createHTMLDocument=((Xe=k.implementation.createHTMLDocument("").body).innerHTML="
",2===Xe.childNodes.length),S.parseHTML=function(t,e,r){return"string"!=typeof t?[]:("boolean"==typeof e&&(r=e,e=!1),e||(v.createHTMLDocument?((i=(e=k.implementation.createHTMLDocument("")).createElement("base")).href=k.location.href,e.head.appendChild(i)):e=k),o=!r&&[],(n=C.exec(t))?[e.createElement(n[1])]:(n=vt([t],e,o),o&&o.length&&S(o).remove(),S.merge([],n.childNodes)));var i,n,o},S.fn.load=function(t,e,r){var i,n,o,a=this,s=t.indexOf(" ");return-1").append(S.parseHTML(t)).find(i):t)}).always(r&&function(t,e){a.each(function(){r.apply(this,o||[t.responseText,e,t])})}),this},S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(t,e){S.fn[e]=function(t){return this.on(e,t)}}),S.expr.pseudos.animated=function(e){return S.grep(S.timers,function(t){return e===t.elem}).length},S.offset={setOffset:function(t,e,r){var i,n,o,a,s,l,u=S.css(t,"position"),h=S(t),c={};"static"===u&&(t.style.position="relative"),s=h.offset(),o=S.css(t,"top"),l=S.css(t,"left"),n=("absolute"===u||"fixed"===u)&&-1<(o+l).indexOf("auto")?(a=(i=h.position()).top,i.left):(a=parseFloat(o)||0,parseFloat(l)||0),_(e)&&(e=e.call(t,r,S.extend({},s))),null!=e.top&&(c.top=e.top-s.top+a),null!=e.left&&(c.left=e.left-s.left+n),"using"in e?e.using.call(t,c):h.css(c)}},S.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){S.offset.setOffset(this,e,t)});var t,r,i=this[0];return i?i.getClientRects().length?(t=i.getBoundingClientRect(),r=i.ownerDocument.defaultView,{top:t.top+r.pageYOffset,left:t.left+r.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var t,e,r,i=this[0],n={top:0,left:0};if("fixed"===S.css(i,"position"))e=i.getBoundingClientRect();else{for(e=this.offset(),r=i.ownerDocument,t=i.offsetParent||r.documentElement;t&&(t===r.body||t===r.documentElement)&&"static"===S.css(t,"position");)t=t.parentNode;t&&t!==i&&1===t.nodeType&&((n=S(t).offset()).top+=S.css(t,"borderTopWidth",!0),n.left+=S.css(t,"borderLeftWidth",!0))}return{top:e.top-n.top-S.css(i,"marginTop",!0),left:e.left-n.left-S.css(i,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent;t&&"static"===S.css(t,"position");)t=t.offsetParent;return t||_t})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var o="pageYOffset"===n;S.fn[e]=function(t){return X(this,function(t,e,r){var i;if(y(t)?i=t:9===t.nodeType&&(i=t.defaultView),void 0===r)return i?i[n]:t[e];i?i.scrollTo(o?i.pageXOffset:r,o?r:i.pageYOffset):t[e]=r},e,t,arguments.length)}}),S.each(["top","left"],function(t,r){S.cssHooks[r]=Bt(v.pixelPosition,function(t,e){if(e)return e=Nt(t,r),Ft.test(e)?S(t).position()[r]+"px":e})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(i,o){S.fn[o]=function(t,e){var r=arguments.length&&(i||"boolean"!=typeof t),n=i||(!0===t||!0===e?"margin":"border");return X(this,function(t,e,r){var i;return y(t)?0===o.indexOf("outer")?t["inner"+a]:t.document.documentElement["client"+a]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+a],i["scroll"+a],t.body["offset"+a],i["offset"+a],i["client"+a])):void 0===r?S.css(t,e,n):S.style(t,e,r,n)},s,r?t:void 0,r)}})}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(t,r){S.fn[r]=function(t,e){return 0>>0,i=(r*=i)>>>0,i+=4294967296*(r-=i)}return 2.3283064365386963e-10*(i>>>0)}}();e.next=function(){var t=2091639*e.s0+2.3283064365386963e-10*e.c;return e.s0=e.s1,e.s1=e.s2,e.s2=t-(e.c=0|t)},e.c=1,e.s0=r(" "),e.s1=r(" "),e.s2=r(" "),e.s0-=r(t),e.s0<0&&(e.s0+=1),e.s1-=r(t),e.s1<0&&(e.s1+=1),e.s2-=r(t),e.s2<0&&(e.s2+=1),r=null}function a(t,e){return e.c=t.c,e.s0=t.s0,e.s1=t.s1,e.s2=t.s2,e}function i(t,e){var r=new o(t),i=e&&e.state,n=r.next;return n.int32=function(){return 4294967296*r.next()|0},n.double=function(){return n()+11102230246251565e-32*(2097152*n()|0)},n.quick=n,i&&("object"==typeof i&&a(i,r),n.state=function(){return a(r,{})}),n}e&&e.exports?e.exports=i:r&&r.amd?r(function(){return i}):this.alea=i}(0,"object"==typeof e&&e,"function"==typeof define&&define)},{}],16:[function(t,e,r){!function(t,e,r){function o(t){var n=this,e="";n.next=function(){var t=n.b,e=n.c,r=n.d,i=n.a;return t=t<<25^t>>>7^e,e=e-r|0,r=r<<24^r>>>8^i,i=i-t|0,n.b=t=t<<20^t>>>12^e,n.c=e=e-r|0,n.d=r<<16^e>>>16^i,n.a=i-t|0},n.a=0,n.b=0,n.c=-1640531527,n.d=1367130551,t===Math.floor(t)?(n.a=t/4294967296|0,n.b=0|t):e+=t;for(var r=0;r>>0)/4294967296};return n.double=function(){do{var t=((r.next()>>>11)+(r.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},n.int32=r.next,n.quick=n,i&&("object"==typeof i&&a(i,r),n.state=function(){return a(r,{})}),n}e&&e.exports?e.exports=i:r&&r.amd?r(function(){return i}):this.tychei=i}(0,"object"==typeof e&&e,"function"==typeof define&&define)},{}],17:[function(t,e,r){!function(t,e,r){function o(t){var e=this,r="";e.x=0,e.y=0,e.z=0,e.w=0,e.next=function(){var t=e.x^e.x<<11;return e.x=e.y,e.y=e.z,e.z=e.w,e.w^=e.w>>>19^t^t>>>8},t===(0|t)?e.x=t:r+=t;for(var i=0;i>>0)/4294967296};return n.double=function(){do{var t=((r.next()>>>11)+(r.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},n.int32=r.next,n.quick=n,i&&("object"==typeof i&&a(i,r),n.state=function(){return a(r,{})}),n}e&&e.exports?e.exports=i:r&&r.amd?r(function(){return i}):this.xor128=i}(0,"object"==typeof e&&e,"function"==typeof define&&define)},{}],18:[function(t,e,r){!function(t,e,r){function o(t){var o=this;o.next=function(){var t,e,r=o.w,i=o.X,n=o.i;return o.w=r=r+1640531527|0,e=i[n+34&127],t=i[n=n+1&127],e^=e<<13,t^=t<<17,e^=e>>>15,t^=t>>>12,e=i[n]=e^t,o.i=n,e+(r^r>>>16)|0},function(t,e){var r,i,n,o,a,s=[],l=128;for(e===(0|e)?(i=e,e=null):(e+="\0",i=0,l=Math.max(l,e.length)),n=0,o=-32;o>>15,i^=i<<4,i^=i>>>13,0<=o&&(a=a+1640531527|0,n=0==(r=s[127&o]^=i+a)?n+1:0);for(128<=n&&(s[127&(e&&e.length||0)]=-1),n=127,o=512;0>>15,r^=r>>>12,s[n]=i^r;t.w=a,t.X=s,t.i=n}(o,t)}function a(t,e){return e.i=t.i,e.w=t.w,e.X=t.X.slice(),e}function i(t,e){null==t&&(t=+new Date);var r=new o(t),i=e&&e.state,n=function(){return(r.next()>>>0)/4294967296};return n.double=function(){do{var t=((r.next()>>>11)+(r.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},n.int32=r.next,n.quick=n,i&&(i.X&&a(i,r),n.state=function(){return a(r,{})}),n}e&&e.exports?e.exports=i:r&&r.amd?r(function(){return i}):this.xor4096=i}(0,"object"==typeof e&&e,"function"==typeof define&&define)},{}],19:[function(t,e,r){!function(t,e,r){function o(t){var n=this;n.next=function(){var t,e,r=n.x,i=n.i;return t=r[i],e=(t^=t>>>7)^t<<24,e^=(t=r[i+1&7])^t>>>10,e^=(t=r[i+3&7])^t>>>3,e^=(t=r[i+4&7])^t<<7,t=r[i+7&7],e^=(t^=t<<13)^t<<9,r[i]=e,n.i=i+1&7,e},function(t,e){var r,i=[];if(e===(0|e))i[0]=e;else for(e=""+e,r=0;r>>0)/4294967296};return n.double=function(){do{var t=((r.next()>>>11)+(r.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},n.int32=r.next,n.quick=n,i&&(i.x&&a(i,r),n.state=function(){return a(r,{})}),n}e&&e.exports?e.exports=i:r&&r.amd?r(function(){return i}):this.xorshift7=i}(0,"object"==typeof e&&e,"function"==typeof define&&define)},{}],20:[function(t,e,r){!function(t,e,r){function o(t){var e=this,r="";e.next=function(){var t=e.x^e.x>>>2;return e.x=e.y,e.y=e.z,e.z=e.w,e.w=e.v,(e.d=e.d+362437|0)+(e.v=e.v^e.v<<4^t^t<<1)|0},e.x=0,e.y=0,e.z=0,e.w=0,t===((e.v=0)|t)?e.x=t:r+=t;for(var i=0;i>>4),e.next()}function a(t,e){return e.x=t.x,e.y=t.y,e.z=t.z,e.w=t.w,e.v=t.v,e.d=t.d,e}function i(t,e){var r=new o(t),i=e&&e.state,n=function(){return(r.next()>>>0)/4294967296};return n.double=function(){do{var t=((r.next()>>>11)+(r.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},n.int32=r.next,n.quick=n,i&&("object"==typeof i&&a(i,r),n.state=function(){return a(r,{})}),n}e&&e.exports?e.exports=i:r&&r.amd?r(function(){return i}):this.xorwow=i}(0,"object"==typeof e&&e,"function"==typeof define&&define)},{}],21:[function(e,r,t){!function(s,l){var u,h=this,c=256,f=6,p="random",d=l.pow(c,f),m=l.pow(2,52),g=2*m,v=c-1;function t(t,e,r){var i=[],n=b(function t(e,r){var i,n=[],o=typeof e;if(r&&"object"==o)for(i in e)try{n.push(t(e[i],r-1))}catch(t){}return n.length?n:"string"==o?e:e+"\0"}((e=1==e?{entropy:!0}:e||{}).entropy?[t,x(s)]:null==t?function(){try{var t;return u&&(t=u.randomBytes)?t=t(c):(t=new Uint8Array(c),(h.crypto||h.msCrypto).getRandomValues(t)),x(t)}catch(t){var e=h.navigator,r=e&&e.plugins;return[+new Date,h,r,h.screen,x(s)]}}():t,3),i),o=new _(i),a=function(){for(var t=o.g(f),e=d,r=0;t>>=1;return(t+r)/e};return a.int32=function(){return 0|o.g(4)},a.quick=function(){return o.g(4)/4294967296},a.double=a,b(x(o.S),s),(e.pass||r||function(t,e,r,i){return i&&(i.S&&y(i,o),t.state=function(){return y(o,{})}),r?(l[p]=t,e):t})(a,n,"global"in e?e.global:this==l,e.state)}function _(t){var e,r=t.length,a=this,i=0,n=a.i=a.j=0,o=a.S=[];for(r||(t=[r++]);iMath.PI?c-r:r}function g(t){return t-c*Math.floor(t/c)}e.exports={UP:o,DOWN:a,LEFT:s,RIGHT:0,NORTH:l,SOUTH:u,WEST:h,EAST:0,PI_2:c,PI_QUARTER:f,PI_HALF:p,toDegrees:function(t){return t*i},toRadians:function(t){return t*n},isAngleBetween:function(t,e,r){if(((r-e)%c+c)%c>=Math.PI){var i=e;e=r,r=i}return e<=r?e<=t&&t<=r:e<=t||t<=r},differenceAnglesSign:d,differenceAngles:m,shortestAngle:function(t,e){return m(e,t)*d(e,t)+t},normalize:g,angleTwoPoints:function(){return 4===arguments.length?Math.atan2(arguments[3]-arguments[1],arguments[2]-arguments[0]):Math.atan2(arguments[1].y-arguments[0].y,arguments[1].x-arguments[0].x)},distanceTwoPoints:function(){return 2===arguments.length?Math.sqrt(Math.pow(arguments[1].x-arguments[0].x,2)+Math.pow(arguments[1].y-arguments[0].y,2)):Math.sqrt(Math.pow(arguments[2]-arguments[0],2)+Math.pow(arguments[3]-arguments[1],2))},distanceTwoPointsSquared:function(){return 2===arguments.length?Math.pow(arguments[1].x-arguments[0].x,2)+Math.pow(arguments[1].y-arguments[0].y,2):Math.pow(arguments[2]-arguments[0],2)+Math.pow(arguments[3]-arguments[1],2)},closestAngle:function(t){var e=m(t,s),r=m(t,0),i=m(t,o),n=m(t,a);return e<=r&&e<=i&&e<=n?s:r<=i&&r<=n?0:i<=n?o:a},equals:function(t,e,r){return r?m(t,e)>16)+t*(r>>16)<<16|i*(e>>8&255)+t*(r>>8&255)<<8|i*(255&e)+t*(255&r)},random:function(t,e){function r(){return s.range(t,e)}var i=s.pick([{r:1,g:1,b:1},{r:1,g:1,b:0},{r:1,g:0,b:1},{r:0,g:1,b:1},{r:1,g:0,b:0},{r:0,g:1,b:0},{r:0,g:0,b:1}]);return t=t||0,e=e||255,this.rgbToHex(i.r?r():0,i.g?r():0,i.b?r():0)},randomHSL:function(t,e,r,i,n,o){var a={h:s.range(t,e),s:s.range(r,i,!0),l:s.range(n,o,!0)};return this.hslToHex(a)},randomGoldenRatioHSL:function(t,e,r){for(var i=s.get(1,!0),n=[],o=0;o=this.time?(this.parent.x=e.end,this.toX=null,this.parent.emit("bounce-x-end",this.parent)):this.parent.x=this.ease(e.time,e.start,e.delta,this.time),this.parent.dirty=!0}if(this.toY){var r=this.toY;r.time+=t,this.parent.emit("moved",{viewport:this.parent,type:"bounce-y"}),r.time>=this.time?(this.parent.y=r.end,this.toY=null,this.parent.emit("bounce-y-end",this.parent)):this.parent.y=this.ease(r.time,r.start,r.delta,this.time),this.parent.dirty=!0}}}},{key:"calcUnderflowX",value:function(){var t=void 0;switch(this.underflowX){case-1:t=0;break;case 1:t=this.parent.screenWidth-this.parent.screenWorldWidth;break;default:t=(this.parent.screenWidth-this.parent.screenWorldWidth)/2}return t}},{key:"calcUnderflowY",value:function(){var t=void 0;switch(this.underflowY){case-1:t=0;break;case 1:t=this.parent.screenHeight-this.parent.screenWorldHeight;break;default:t=(this.parent.screenHeight-this.parent.screenWorldHeight)/2}return t}},{key:"bounce",value:function(){if(!this.paused){var t=void 0,e=this.parent.plugins.decelerate;e&&(e.x||e.y)&&(e.x&&e.percentChangeX===e.friction||e.y&&e.percentChangeY===e.friction)&&(((t=this.parent.OOB()).left&&this.left||t.right&&this.right)&&(e.percentChangeX=this.friction),(t.top&&this.top||t.bottom&&this.bottom)&&(e.percentChangeY=this.friction));var r=this.parent.plugins.drag||{},i=this.parent.plugins.pinch||{};if(e=e||{},!(r.active||i.active||this.toX&&this.toY||e.x&&e.y)){var n=(t=t||this.parent.OOB()).cornerPoint;if(!this.toX&&!e.x){var o=null;t.left&&this.left?o=this.parent.screenWorldWidththis.maxWidth&&(this.parent.fitWidth(this.maxWidth),t=this.parent.worldScreenWidth,e=this.parent.worldScreenHeight,this.parent.emit("zoomed",{viewport:this.parent,type:"clamp-zoom"})),this.minHeight&&ethis.maxHeight&&(this.parent.fitHeight(this.maxHeight),this.parent.emit("zoomed",{viewport:this.parent,type:"clamp-zoom"}))}}}]),i}()},{"./plugin":9}],3:[function(t,e,r){"use strict";var n=function(){function i(t,e){for(var r=0;r(!0===this.right?this.parent.worldWidth:this.right)&&(this.parent.x=-(!0===this.right?this.parent.worldWidth:this.right)*this.parent.scale.x+this.parent.screenWidth,e=!(t.x=0));e&&this.parent.emit("moved",{viewport:this.parent,type:"clamp-x"})}if(null!==this.top||null!==this.bottom){var r=void 0;if(this.parent.screenWorldHeight(!0===this.bottom?this.parent.worldHeight:this.bottom)&&(this.parent.y=-(!0===this.bottom?this.parent.worldHeight:this.bottom)*this.parent.scale.y+this.parent.screenHeight,r=!(t.y=0));r&&this.parent.emit("moved",{viewport:this.parent,type:"clamp-y"})}}}}]),i}()},{"./plugin":9,"./utils":12}],4:[function(t,e,r){"use strict";var n=function(){function i(t,e){for(var r=0;r=t-100){var s=t-a.time;this.x=(this.parent.x-a.x)/s,this.y=(this.parent.y-a.y)/s,this.percentChangeX=this.percentChangeY=this.friction;break}}}catch(t){r=!0,i=t}finally{try{!e&&o.return&&o.return()}finally{if(r)throw i}}}}},{key:"activate",value:function(t){void 0!==(t=t||{}).x&&(this.x=t.x,this.percentChangeX=this.friction),void 0!==t.y&&(this.y=t.y,this.percentChangeY=this.friction)}},{key:"update",value:function(t){if(!this.paused){var e=void 0;this.x&&(this.parent.x+=this.x*t,this.x*=this.percentChangeX,Math.abs(this.x)this.parent.worldWidth&&(this.parent.x=-this.parent.worldWidth*this.parent.scale.x+this.parent.screenWidth,t.x=0);if("x"!==this.clampWheel)if(this.parent.screenWorldHeightthis.parent.worldHeight&&(this.parent.y=-this.parent.worldHeight*this.parent.scale.y+this.parent.screenHeight,t.y=0)}},{key:"active",get:function(){return this.moved}}]),i}()},{"./plugin":9,"./utils":12}],6:[function(t,e,r){"use strict";var i=function(){function i(t,e){for(var r=0;rthis.radius))return;var i=Math.atan2(this.target.y-t.y,this.target.x-t.x);e=this.target.x-Math.cos(i)*this.radius,r=this.target.y-Math.sin(i)*this.radius}if(this.speed){var n=e-t.x,o=r-t.y;if(n||o){var a=Math.atan2(r-t.y,e-t.x),s=Math.cos(a)*this.speed,l=Math.sin(a)*this.speed,u=Math.abs(s)>Math.abs(n)?e:t.x+s,h=Math.abs(l)>Math.abs(o)?r:t.y+l;this.parent.moveCenter(u,h),this.parent.emit("moved",{viewport:this.parent,type:"follow"})}}else this.parent.moveCenter(e,r),this.parent.emit("moved",{viewport:this.parent,type:"follow"})}}}]),n}()},{"./plugin":9}],7:[function(t,e,r){"use strict";var n=function(){function i(t,e){for(var r=0;r=this.radiusSquared){var n=Math.atan2(i.y-r,i.x-e);this.linear?(this.horizontal=Math.round(Math.cos(n))*this.speed*this.reverse*.06,this.vertical=Math.round(Math.sin(n))*this.speed*this.reverse*.06):(this.horizontal=Math.cos(n)*this.speed*this.reverse*.06,this.vertical=Math.sin(n)*this.speed*this.reverse*.06)}else this.horizontal&&this.decelerateHorizontal(),this.vertical&&this.decelerateVertical(),this.horizontal=this.vertical=0}else o.exists(this.left)&&ethis.right?this.horizontal=-1*this.reverse*this.speed*.06:(this.decelerateHorizontal(),this.horizontal=0),o.exists(this.top)&&rthis.bottom?this.vertical=-1*this.reverse*this.speed*.06:(this.decelerateVertical(),this.vertical=0)}}},{key:"decelerateHorizontal",value:function(){var t=this.parent.plugins.decelerate;this.horizontal&&t&&!this.noDecelerate&&t.activate({x:this.horizontal*this.speed*this.reverse/(1e3/60)})}},{key:"decelerateVertical",value:function(){var t=this.parent.plugins.decelerate;this.vertical&&t&&!this.noDecelerate&&t.activate({y:this.vertical*this.speed*this.reverse/(1e3/60)})}},{key:"up",value:function(){this.horizontal&&this.decelerateHorizontal(),this.vertical&&this.decelerateVertical(),this.horizontal=this.vertical=null}},{key:"update",value:function(){if(!this.paused&&(this.horizontal||this.vertical)){var t=this.parent.center;this.horizontal&&(t.x+=this.horizontal*this.speed),this.vertical&&(t.y+=this.vertical*this.speed),this.parent.moveCenter(t),this.parent.emit("moved",{viewport:this.parent,type:"mouse-edges"})}}}]),i}()},{"./plugin":9,"./utils":12}],8:[function(t,e,r){"use strict";var n=function(){function i(t,e){for(var r=0;r=this.time)this.parent.scale.set(this.x_scale,this.y_scale),this.removeOnComplete&&this.parent.removePlugin("snap-zoom"),this.parent.emit("snap-zoom-end",this.parent),this.snapping=null;else{var i=this.snapping;this.parent.scale.x=this.ease(i.time,i.startX,i.deltaX,this.time),this.parent.scale.y=this.ease(i.time,i.startY,i.deltaY,this.time)}var n=this.parent.plugins["clamp-zoom"];n&&n.clamp(),this.noMove||(this.center?this.parent.moveCenter(this.center):this.parent.moveCenter(e))}}else this.parent.scale.x===this.x_scale&&this.parent.scale.y===this.y_scale||this.createSnapping()}}},{key:"resume",value:function(){this.snapping=null,function t(e,r,i){null===e&&(e=Function.prototype);var n=Object.getOwnPropertyDescriptor(e,r);if(void 0===n){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,r,i)}if("value"in n)return n.value;var a=n.get;return void 0!==a?a.call(i):void 0}(i.prototype.__proto__||Object.getPrototypeOf(i.prototype),"resume",this).call(this)}}]),i}()},{"./plugin":9,"./utils":12}],11:[function(t,e,r){"use strict";var i=function(){function i(t,e){for(var r=0;rthis.time)r=!0,i=this.startX+this.deltaX,n=this.startY+this.deltaY;else{var o=this.ease(e.time,0,1,this.time);i=this.startX+this.deltaX*o,n=this.startY+this.deltaY*o}this.topLeft?this.parent.moveCorner(i,n):this.parent.moveCenter(i,n),this.parent.emit("moved",{viewport:this.parent,type:"snap"}),r&&(this.removeOnComplete&&this.parent.removePlugin("snap"),this.parent.emit("snap-end",this.parent),this.snapping=null)}else{var a=this.topLeft?this.parent.corner:this.parent.center;a.x===this.x&&a.y===this.y||this.snapStart()}}}]),o}()},{"./plugin":9,"./utils":12}],12:[function(t,e,r){"use strict";var i=t("penner");function n(t){return null!=t}e.exports={exists:n,defaults:function(t,e){return null!=t?t:e},ease:function(t,e){return n(t)?"function"==typeof t?t:"string"==typeof t?i[t]:void 0:i[e]}}},{penner:15}],13:[function(t,e,r){"use strict";var i=function(){function i(t,e){for(var r=0;r=this.threshold}},{key:"move",value:function(t){if(!this.pause){var e=!0,r=!1,i=void 0;try{for(var n,o=this.pluginsList[Symbol.iterator]();!(e=(n=o.next()).done);e=!0){n.value.move(t)}}catch(t){r=!0,i=t}finally{try{!e&&o.return&&o.return()}finally{if(r)throw i}}if(this.clickedAvailable){var a=t.data.global.x-this.last.x,s=t.data.global.y-this.last.y;(this.checkThreshold(a)||this.checkThreshold(s))&&(this.clickedAvailable=!1)}}}},{key:"up",value:function(t){if(!this.pause){if(t.data.originalEvent instanceof MouseEvent&&0==t.data.originalEvent.button&&(this.leftDown=!1),"mouse"!==t.data.pointerType)for(var e=0;ethis._worldWidth,t.top=this.top<0,t.bottom=this.bottom>this._worldHeight,t.cornerPoint={x:this._worldWidth*this.scale.x-this._screenWidth,y:this._worldHeight*this.scale.y-this._screenHeight},t}},{key:"countDownPointers",value:function(){return(this.leftDown?1:0)+this.touches.length}},{key:"getTouchPointers",value:function(){var t=[],e=this.trackedPointers;for(var r in e){var i=e[r];-1!==this.touches.indexOf(i.pointerId)&&t.push(i)}return t}},{key:"getPointers",value:function(){var t=[],e=this.trackedPointers;for(var r in e)t.push(e[r]);return t}},{key:"_reset",value:function(){this.plugins.bounce&&(this.plugins.bounce.reset(),this.plugins.bounce.bounce()),this.plugins.decelerate&&this.plugins.decelerate.reset(),this.plugins.snap&&this.plugins.snap.reset(),this.plugins.clamp&&this.plugins.clamp.update(),this.plugins["clamp-zoom"]&&this.plugins["clamp-zoom"].clamp(),this.dirty=!0}},{key:"removePlugin",value:function(t){this.plugins[t]&&(this.plugins[t]=null,this.emit(t+"-remove"),this.pluginsSort())}},{key:"pausePlugin",value:function(t){this.plugins[t]&&this.plugins[t].pause()}},{key:"resumePlugin",value:function(t){this.plugins[t]&&this.plugins[t].resume()}},{key:"pluginsSort",value:function(){var t=!0,e=!(this.pluginsList=[]),r=void 0;try{for(var i,n=g[Symbol.iterator]();!(t=(i=n.next()).done);t=!0){var o=i.value;this.plugins[o]&&this.pluginsList.push(this.plugins[o])}}catch(t){e=!0,r=t}finally{try{!t&&n.return&&n.return()}finally{if(e)throw r}}}},{key:"drag",value:function(t){return this.plugins.drag=new o(this,t),this.pluginsSort(),this}},{key:"clamp",value:function(t){return this.plugins.clamp=new s(this,t),this.pluginsSort(),this}},{key:"decelerate",value:function(t){return this.plugins.decelerate=new u(this,t),this.pluginsSort(),this}},{key:"bounce",value:function(t){return this.plugins.bounce=new h(this,t),this.pluginsSort(),this}},{key:"pinch",value:function(t){return this.plugins.pinch=new a(this,t),this.pluginsSort(),this}},{key:"snap",value:function(t,e,r){return this.plugins.snap=new c(this,t,e,r),this.pluginsSort(),this}},{key:"follow",value:function(t,e){return this.plugins.follow=new p(this,t,e),this.pluginsSort(),this}},{key:"wheel",value:function(t){return this.plugins.wheel=new d(this,t),this.pluginsSort(),this}},{key:"clampZoom",value:function(t){return this.plugins["clamp-zoom"]=new l(this,t),this.pluginsSort(),this}},{key:"mouseEdges",value:function(t){return this.plugins["mouse-edges"]=new m(this,t),this.pluginsSort(),this}},{key:"screenWidth",get:function(){return this._screenWidth},set:function(t){this._screenWidth=t}},{key:"screenHeight",get:function(){return this._screenHeight},set:function(t){this._screenHeight=t}},{key:"worldWidth",get:function(){return this._worldWidth?this._worldWidth:this.width},set:function(t){this._worldWidth=t,this.resizePlugins()}},{key:"worldHeight",get:function(){return this._worldHeight?this._worldHeight:this.height},set:function(t){this._worldHeight=t,this.resizePlugins()}},{key:"worldScreenWidth",get:function(){return this._screenWidth/this.scale.x}},{key:"worldScreenHeight",get:function(){return this._screenHeight/this.scale.y}},{key:"screenWorldWidth",get:function(){return this._worldWidth*this.scale.x}},{key:"screenWorldHeight",get:function(){return this._worldHeight*this.scale.y}},{key:"center",get:function(){return{x:this.worldScreenWidth/2-this.x/this.scale.x,y:this.worldScreenHeight/2-this.y/this.scale.y}},set:function(t){this.moveCenter(t)}},{key:"corner",get:function(){return{x:-this.x/this.scale.x,y:-this.y/this.scale.y}},set:function(t){this.moveCorner(t)}},{key:"right",get:function(){return-this.x/this.scale.x+this.worldScreenWidth},set:function(t){this.x=-t*this.scale.x+this.screenWidth,this._reset()}},{key:"left",get:function(){return-this.x/this.scale.x},set:function(t){this.x=-t*this.scale.x,this._reset()}},{key:"top",get:function(){return-this.y/this.scale.y},set:function(t){this.y=-t*this.scale.y,this._reset()}},{key:"bottom",get:function(){return-this.y/this.scale.y+this.worldScreenHeight},set:function(t){this.y=-t*this.scale.y+this.screenHeight,this._reset()}},{key:"dirty",get:function(){return this._dirty},set:function(t){this._dirty=t}},{key:"forceHitArea",get:function(){return this._forceHitArea},set:function(t){t?(this._forceHitArea=t,this.hitArea=t):(this._forceHitArea=!1,this.hitArea=new PIXI.Rectangle(0,0,this.worldWidth,this.worldHeight))}},{key:"pause",get:function(){return this._pause},set:function(t){(this._pause=t)&&(this.touches=[],this.leftDown=!1)}}]),r}();PIXI.extras.Viewport=v,e.exports=v},{"./bounce":1,"./clamp":3,"./clamp-zoom":2,"./decelerate":4,"./drag":5,"./follow":6,"./mouse-edges":7,"./pinch":8,"./snap":11,"./snap-zoom":10,"./utils":12,"./wheel":14}],14:[function(t,e,r){"use strict";var n=function(){function i(t,e){for(var r=0;re&&(r[i]=this.hyphenate(r[i]).join("­"));return r.join("")},e.prototype.hyphenate=function(t){var e,r,i,n,o,a,s,l,u,h=[],c=[],f=t.toLowerCase(),p=Math.max,d=this.trie,m=[""];if(this.exceptions.hasOwnProperty(f))return t.match(this.exceptions[f]).slice(1);if(-1!==t.indexOf("­"))return[t];for(e=(t="_"+t+"_").toLowerCase().split(""),r=t.split(""),s=e.length,i=0;ithis.leftMin&&i@~]/g,"\\$&").replace(/\n/g,"A")}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getCommonAncestor=function(e){var t=(1 /g,">").split(/\s+(?=(?:(?:[^"]*"){2})*[^"]*$)/);if(i.length<2)return f("",e,"",t);var n=[i.pop()];for(;1/g,"> ").trim()};var i,n=r(3),h=(i=n)&&i.__esModule?i:{default:i},c=r(0);function f(r,i,n,o){if(r.length&&(r+=" "),n.length&&(n=" "+n),/\[*\]/.test(i)){var e=i.replace(/=.*$/,"]"),a=""+r+e+n;if(g(document.querySelectorAll(a),o))i=e;else for(var s=document.querySelectorAll(""+r+e),t=function(){var t=s[l];if(o.some(function(e){return t.contains(e)})){var e=t.tagName.toLowerCase();return a=""+r+e+n,g(document.querySelectorAll(a),o)&&(i=e),"break"}},l=0,u=s.length;l/.test(i)){var h=i.replace(/>/,"");a=""+r+h+n;g(document.querySelectorAll(a),o)&&(i=h)}if(/:nth-child/.test(i)){var c=i.replace(/nth-child/g,"nth-of-type");a=""+r+c+n;g(document.querySelectorAll(a),o)&&(i=c)}if(/\.\S+\.\S+/.test(i)){for(var f=i.trim().split(".").slice(1).map(function(e){return"."+e}).sort(function(e,t){return e.length-t.length});f.length;){var p=i.replace(f.shift(),"").trim();if(!(a=(""+r+p+n).trim()).length||">"===a.charAt(0)||">"===a.charAt(a.length-1))break;g(document.querySelectorAll(a),o)&&(i=p)}if((f=i&&i.match(/\./g))&&2/.test(s):u=function(t){return function(e){return e(t.parent)&&t.parent}};break;case/^\./.test(s):var r=s.substr(1).split(".");l=function(e){var t=e.attribs.class;return t&&r.every(function(e){return-1)(\S)/g,"$1 $2").trim()),t=i.shift(),n=i.length;return t(this).filter(function(e){for(var t=0;t\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",r=o.console&&(o.console.warn||o.console.log);return r&&r.call(o.console,n,t),i.apply(this,arguments)}}a="function"!=typeof Object.assign?function(e){if(e===c||null===e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),r=1;rt[r]}):i.sort()),i}function A(e,t){for(var r,i,n=t[0].toUpperCase()+t.slice(1),o=0;of(u.y)?u.x:u.y,t.scale=a?function(e,t){return ie(t[0],t[1],J)/ie(e[0],e[1],J)}(a.pointers,i):1,t.rotation=a?function(e,t){return ne(t[1],t[0],J)+ne(e[1],e[0],J)}(a.pointers,i):0,t.maxPointers=r.prevInput?t.pointers.length>r.prevInput.maxPointers?t.pointers.length:r.prevInput.maxPointers:t.pointers.length,function(e,t){var r,i,n,o,a=e.lastInterval||t,s=t.timeStamp-a.timeStamp;if(t.eventType!=B&&(Lf(h.y)?h.x:h.y,o=re(l,u),e.lastInterval=t}else r=a.velocity,i=a.velocityX,n=a.velocityY,o=a.direction;t.velocity=r,t.velocityX=i,t.velocityY=n,t.direction=o}(r,t);var h=e.element;T(t.srcEvent.target,h)&&(h=t.srcEvent.target);t.target=h}(e,r),e.emit("hammer.input",r),e.recognize(r),e.session.prevInput=r}function $(e){for(var t=[],r=0;r=f(t)?e<0?X:H:t<0?W:q}function ie(e,t,r){r||(r=Z);var i=t[r[0]]-e[r[0]],n=t[r[1]]-e[r[1]];return Math.sqrt(i*i+n*n)}function ne(e,t,r){r||(r=Z);var i=t[r[0]]-e[r[0]],n=t[r[1]]-e[r[1]];return 180*Math.atan2(n,i)/Math.PI}K.prototype={handler:function(){},init:function(){this.evEl&&x(this.element,this.evEl,this.domHandler),this.evTarget&&x(this.target,this.evTarget,this.domHandler),this.evWin&&x(O(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&w(this.element,this.evEl,this.domHandler),this.evTarget&&w(this.target,this.evTarget,this.domHandler),this.evWin&&w(O(this.element),this.evWin,this.domHandler)}};var oe={mousedown:j,mousemove:2,mouseup:N},ae="mousedown",se="mousemove mouseup";function le(){this.evEl=ae,this.evWin=se,this.pressed=!1,K.apply(this,arguments)}v(le,K,{handler:function(e){var t=oe[e.type];t&j&&0===e.button&&(this.pressed=!0),2&t&&1!==e.which&&(t=N),this.pressed&&(t&N&&(this.pressed=!1),this.callback(this.manager,t,{pointers:[e],changedPointers:[e],pointerType:F,srcEvent:e}))}});var ue={pointerdown:j,pointermove:2,pointerup:N,pointercancel:B,pointerout:B},he={2:z,3:"pen",4:F,5:"kinect"},ce="pointerdown",fe="pointermove pointerup pointercancel";function pe(){this.evEl=ce,this.evWin=fe,K.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}o.MSPointerEvent&&!o.PointerEvent&&(ce="MSPointerDown",fe="MSPointerMove MSPointerUp MSPointerCancel"),v(pe,K,{handler:function(e){var t=this.store,r=!1,i=e.type.toLowerCase().replace("ms",""),n=ue[i],o=he[e.pointerType]||e.pointerType,a=o==z,s=P(t,e.pointerId,"pointerId");n&j&&(0===e.button||a)?s<0&&(t.push(e),s=t.length-1):n&(N|B)&&(r=!0),s<0||(t[s]=e,this.callback(this.manager,n,{pointers:t,changedPointers:[e],pointerType:o,srcEvent:e}),r&&t.splice(s,1))}});var de={touchstart:j,touchmove:2,touchend:N,touchcancel:B};function me(){this.evTarget="touchstart",this.evWin="touchstart touchmove touchend touchcancel",this.started=!1,K.apply(this,arguments)}v(me,K,{handler:function(e){var t=de[e.type];if(t===j&&(this.started=!0),this.started){var r=function(e,t){var r=E(e.touches),i=E(e.changedTouches);t&(N|B)&&(r=C(r.concat(i),"identifier",!0));return[r,i]}.call(this,e,t);t&(N|B)&&r[0].length-r[1].length==0&&(this.started=!1),this.callback(this.manager,t,{pointers:r[0],changedPointers:r[1],pointerType:z,srcEvent:e})}}});var ge={touchstart:j,touchmove:2,touchend:N,touchcancel:B},ve="touchstart touchmove touchend touchcancel";function _e(){this.evTarget=ve,this.targetIds={},K.apply(this,arguments)}v(_e,K,{handler:function(e){var t=ge[e.type],r=function(e,t){var r=E(e.touches),i=this.targetIds;if(t&(2|j)&&1===r.length)return i[r[0].identifier]=!0,[r,r];var n,o,a=E(e.changedTouches),s=[],l=this.target;if(o=r.filter(function(e){return T(e.target,l)}),t===j)for(n=0;nt.threshold&&n&t.direction},attrTest:function(e){return Fe.prototype.attrTest.call(this,e)&&(2&this.state||!(2&this.state)&&this.directionTest(e))},emit:function(e){this.pX=e.deltaX,this.pY=e.deltaY;var t=Re(e.direction);t&&(e.additionalEvent=this.options.event+t),this._super.emit.call(this,e)}}),v(je,Fe,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[Pe]},attrTest:function(e){return this._super.attrTest.call(this,e)&&(Math.abs(e.scale-1)>this.options.threshold||2&this.state)},emit:function(e){if(1!==e.scale){var t=e.scale<1?"in":"out";e.additionalEvent=this.options.event+t}this._super.emit.call(this,e)}}),v(Ne,Me,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return["auto"]},process:function(e){var t=this.options,r=e.pointers.length===t.pointers,i=e.distancet.time;if(this._input=e,!i||!r||e.eventType&(N|B)&&!n)this.reset();else if(e.eventType&j)this.reset(),this._timer=u(function(){this.state=8,this.tryEmit()},t.time,this);else if(e.eventType&N)return 8;return 32},reset:function(){clearTimeout(this._timer)},emit:function(e){8===this.state&&(e&&e.eventType&N?this.manager.emit(this.options.event+"up",e):(this._input.timeStamp=p(),this.manager.emit(this.options.event,this._input)))}}),v(Be,Fe,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[Pe]},attrTest:function(e){return this._super.attrTest.call(this,e)&&(Math.abs(e.rotation)>this.options.threshold||2&this.state)}}),v(Ue,Fe,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:G|V,pointers:1},getTouchAction:function(){return Le.prototype.getTouchAction.call(this)},attrTest:function(e){var t,r=this.options.direction;return r&(G|V)?t=e.overallVelocity:r&G?t=e.overallVelocityX:r&V&&(t=e.overallVelocityY),this._super.attrTest.call(this,e)&&r&e.offsetDirection&&e.distance>this.options.threshold&&e.maxPointers==this.options.pointers&&f(t)>this.options.velocity&&e.eventType&N},emit:function(e){var t=Re(e.offsetDirection);t&&this.manager.emit(this.options.event+t,e),this.manager.emit(this.options.event,e)}}),v(Xe,Me,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[Se]},process:function(e){var t=this.options,r=e.pointers.length===t.pointers,i=e.distance80*r){i=o=e[0],n=a=e[1];for(var d=r;do.x?n.x>a.x?n.x:a.x:o.x>a.x?o.x:a.x,h=n.y>o.y?n.y>a.y?n.y:a.y:o.y>a.y?o.y:a.y,c=C(s,l,t,r,i),f=C(u,h,t,r,i),p=e.prevZ,d=e.nextZ;p&&p.z>=c&&d&&d.z<=f;){if(p!==e.prev&&p!==e.next&&I(n.x,n.y,o.x,o.y,a.x,a.y,p.x,p.y)&&0<=O(p.prev,p,p.next))return!1;if(p=p.prevZ,d!==e.prev&&d!==e.next&&I(n.x,n.y,o.x,o.y,a.x,a.y,d.x,d.y)&&0<=O(d.prev,d,d.next))return!1;d=d.nextZ}for(;p&&p.z>=c;){if(p!==e.prev&&p!==e.next&&I(n.x,n.y,o.x,o.y,a.x,a.y,p.x,p.y)&&0<=O(p.prev,p,p.next))return!1;p=p.prevZ}for(;d&&d.z<=f;){if(d!==e.prev&&d!==e.next&&I(n.x,n.y,o.x,o.y,a.x,a.y,d.x,d.y)&&0<=O(d.prev,d,d.next))return!1;d=d.nextZ}return!0}function k(e,t,r){var i=e;do{var n=i.prev,o=i.next.next;!M(n,o)&&R(n,i,i.next,o)&&L(n,o)&&L(o,n)&&(t.push(n.i/r),t.push(i.i/r),t.push(o.i/r),B(i),B(i.next),i=e=o),i=i.next}while(i!==e);return y(i)}function S(e,t,r,i,n,o){var a,s,l=e;do{for(var u=l.next.next;u!==l.prev;){if(l.i!==u.i&&(s=u,(a=l).next.i!==s.i&&a.prev.i!==s.i&&!function(e,t){var r=e;do{if(r.i!==e.i&&r.next.i!==e.i&&r.i!==t.i&&r.next.i!==t.i&&R(r,r.next,e,t))return!0;r=r.next}while(r!==e);return!1}(a,s)&&(L(a,s)&&L(s,a)&&function(e,t){var r=e,i=!1,n=(e.x+t.x)/2,o=(e.y+t.y)/2;for(;r.y>o!=r.next.y>o&&r.next.y!==r.y&&n<(r.next.x-r.x)*(o-r.y)/(r.next.y-r.y)+r.x&&(i=!i),r=r.next,r!==e;);return i}(a,s)&&(O(a.prev,a,s.prev)||O(a,s.prev,s))||M(a,s)&&0=i.next.y&&i.next.y!==i.y){var s=i.x+(o-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(s<=n&&a=i.x&&i.x>=h&&n!==i.x&&I(or.x||i.x===r.x&&(d=i,O((p=r).prev,p,d.prev)<0&&O(d.next,p,p.next)<0)))&&(r=i,f=l)),i=i.next,i!==u;);var p,d;return r}(e,t)){var r=j(t,e);y(r,r.next)}}function C(e,t,r,i,n){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-r)*n)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-i)*n)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function A(e){for(var t=e,r=e;(t.x=Math.min(e.x,r.x)&&t.y<=Math.max(e.y,r.y)&&t.y>=Math.min(e.y,r.y)}function F(e){return 0= 0x80 (not a basic code point)","invalid-input":"Invalid input"},f=_-y,k=Math.floor,S=String.fromCharCode;function P(e){throw RangeError(c[e])}function p(e,t){for(var r=e.length,i=[];r--;)i[r]=t(e[r]);return i}function d(e,t){var r=e.split("@"),i="";return 1>>10&1023|55296),e=56320|1023&e),t+=S(e)}).join("")}function A(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function I(e,t,r){var i=0;for(e=r?k(e/s):e>>1,e+=k(e/t);f*b>>1k((v-d)/a))&&P("overflow"),d+=l*a,!(l<(u=s<=g?y:g+b<=s?b:s-g));s+=_)a>k(v/(h=_-u))&&P("overflow"),a*=h;g=I(d-o,t=f.length+1,0==o),k(d/t)>v-m&&P("overflow"),m+=k(d/t),d%=t,f.splice(d++,0,m)}return C(f)}function g(e){var t,r,i,n,o,a,s,l,u,h,c,f,p,d,m,g=[];for(f=(e=E(e)).length,t=w,o=x,a=r=0;ak((v-r)/(p=i+1))&&P("overflow"),r+=(s-t)*p,t=s,a=0;av&&P("overflow"),c==t){for(l=r,u=_;!(l<(h=u<=o?y:o+b<=u?b:u-o));u+=_)m=l-h,d=_-h,g.push(S(A(h+m%d,0))),l=k(m/d);g.push(S(A(l,0))),o=I(r,p,i==n),r=0,++i}++r,++t}return g.join("")}if(n={version:"1.3.2",ucs2:{decode:E,encode:C},decode:m,encode:g,toASCII:function(e){return d(e,function(e){return u.test(e)?"xn--"+g(e):e})},toUnicode:function(e){return d(e,function(e){return l.test(e)?m(e.slice(4).toLowerCase()):e})}},t&&r)if(O.exports==t)r.exports=n;else for(o in n)n.hasOwnProperty(o)&&(t[o]=n[o]);else e.punycode=n}(D)}),W={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}};W.isString,W.isObject,W.isNull,W.isNullOrUndefined;var q=function(e,t,r,i){t=t||"&",r=r||"=";var n={};if("string"!=typeof e||0===e.length)return n;var o=/\+/g;e=e.split(t);var a=1e3;i&&"number"==typeof i.maxKeys&&(a=i.maxKeys);var s,l,u=e.length;0",'"',"`"," ","\r","\n","\t"]),ae=["'"].concat(oe),se=["%","/","?",";","#"].concat(ae),le=["/","?","#"],ue=/^[+a-z0-9A-Z_-]{0,63}$/,he=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,ce={javascript:!0,"javascript:":!0},fe={javascript:!0,"javascript:":!0},pe={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function de(e,t,r){if(e&&W.isObject(e)&&e instanceof te)return e;var i=new te;return i.parse(e,t,r),i}te.prototype.parse=function(e,t,r){if(!W.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var i=e.indexOf("?"),n=-1!==i&&i>16&255)/255,t[1]=(e>>8&255)/255,t[2]=(255&e)/255,t}function Fe(e){return e=e.toString(16),"#"+(e="000000".substr(0,6-e.length)+e)}function Le(e){return"string"==typeof e&&"#"===e[0]&&(e=e.substr(1)),parseInt(e,16)}var je=function(){for(var e=[],t=[],r=0;r<32;r++)t[e[r]=r]=r;e[G.BLEND_MODES.NORMAL_NPM]=G.BLEND_MODES.NORMAL,e[G.BLEND_MODES.ADD_NPM]=G.BLEND_MODES.ADD,e[G.BLEND_MODES.SCREEN_NPM]=G.BLEND_MODES.SCREEN,t[G.BLEND_MODES.NORMAL]=G.BLEND_MODES.NORMAL_NPM,t[G.BLEND_MODES.ADD]=G.BLEND_MODES.ADD_NPM,t[G.BLEND_MODES.SCREEN]=G.BLEND_MODES.SCREEN_NPM;var i=[];return i.push(t),i.push(e),i}();function Ne(e,t){return je[t?1:0][e]}function Be(e,t,r,i){return r=r||new Float32Array(4),i||void 0===i?(r[0]=e[0]*t,r[1]=e[1]*t,r[2]=e[2]*t):(r[0]=e[0],r[1]=e[1],r[2]=e[2]),r[3]=t,r}function Ue(e,t){if(1===t)return(255*t<<24)+e;if(0===t)return 0;var r=e>>16&255,i=e>>8&255,n=255&e;return(255*t<<24)+((r=r*t+.5|0)<<16)+((i=i*t+.5|0)<<8)+(n=n*t+.5|0)}function Xe(e,t,r,i){return(r=r||new Float32Array(4))[0]=(e>>16&255)/255,r[1]=(e>>8&255)/255,r[2]=(255&e)/255,(i||void 0===i)&&(r[0]*=t,r[1]*=t,r[2]*=t),r[3]=t,r}function He(e,t){void 0===t&&(t=null);var r=6*e;if((t=t||new Uint16Array(r)).length!==r)throw new Error("Out buffer length is incorrect, got "+t.length+" and expected "+r);for(var i=0,n=0;i>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,(e|=e>>>16)+1}function Ze(e){return!(e&e-1||!e)}function Je(e){var t=(65535>>=t))<<3;return t|=r,t|=r=(15<(e>>>=r))<<2,(t|=r=(3<(e>>>=r))<<1)|(e>>>=r)>>1}var Ke={},Qe=Object.create(null),$e=Object.create(null);function et(e){var t,r,i,n=e.width,o=e.height,a=e.getContext("2d"),s=a.getImageData(0,0,n,o).data,l=s.length,u={top:null,left:null,right:null,bottom:null},h=null;for(t=0;t=this.x&&e=this.y&&t=this.x&&e<=this.x+this.width&&t>=this.y&&t<=this.y+this.height){if(t>=this.y+this.radius&&t<=this.y+this.height-this.radius||e>=this.x+this.radius&&e<=this.x+this.width-this.radius)return!0;var r=e-(this.x+this.radius),i=t-(this.y+this.radius),n=this.radius*this.radius;if(r*r+i*i<=n)return!0;if((r=e-(this.x+this.width-this.radius))*r+i*i<=n)return!0;if(r*r+(i=t-(this.y+this.height-this.radius))*i<=n)return!0;if((r=e-(this.x+this.radius))*r+i*i<=n)return!0}return!1},e}();T.SORTABLE_CHILDREN=!1;var Ot=function(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.rect=null};Ot.prototype.isEmpty=function(){return this.minX>this.maxX||this.minY>this.maxY},Ot.prototype.clear=function(){this.updateID++,this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0},Ot.prototype.getRectangle=function(e){return this.minX>this.maxX||this.minY>this.maxY?Pt.EMPTY:((e=e||new Pt(0,0,1,1)).x=this.minX,e.y=this.minY,e.width=this.maxX-this.minX,e.height=this.maxY-this.minY,e)},Ot.prototype.addPoint=function(e){this.minX=Math.min(this.minX,e.x),this.maxX=Math.max(this.maxX,e.x),this.minY=Math.min(this.minY,e.y),this.maxY=Math.max(this.maxY,e.y)},Ot.prototype.addQuad=function(e){var t=this.minX,r=this.minY,i=this.maxX,n=this.maxY,o=e[0],a=e[1];t=oi?e.maxX:i,this.maxY=e.maxY>n?e.maxY:n},Ot.prototype.addBoundsMask=function(e,t){var r=e.minX>t.minX?e.minX:t.minX,i=e.minY>t.minY?e.minY:t.minY,n=e.maxXt.x?e.minX:t.x,i=e.minY>t.y?e.minY:t.y,n=e.maxXr?this.maxX:r,this.minY=this.minYi?this.maxY:i};var Mt=function(e){function n(){e.call(this),this.tempDisplayObjectParent=null,this.transform=new St,this.alpha=1,this.visible=!0,this.renderable=!0,this.parent=null,this.worldAlpha=1,this._lastSortedIndex=0,this._zIndex=0,this.filterArea=null,this.filters=null,this._enabledFilters=null,this._bounds=new Ot,this._boundsID=0,this._lastBoundsID=-1,this._boundsRect=null,this._localBoundsRect=null,this._mask=null,this._destroyed=!1,this.isSprite=!1,this.isMask=!1}e&&(n.__proto__=e);var t={_tempDisplayObjectParent:{configurable:!0},x:{configurable:!0},y:{configurable:!0},worldTransform:{configurable:!0},localTransform:{configurable:!0},position:{configurable:!0},scale:{configurable:!0},pivot:{configurable:!0},skew:{configurable:!0},rotation:{configurable:!0},angle:{configurable:!0},zIndex:{configurable:!0},worldVisible:{configurable:!0},mask:{configurable:!0}};return((n.prototype=Object.create(e&&e.prototype)).constructor=n).mixin=function(e){for(var t=Object.keys(e),r=0;rthis.children.length)throw new Error(e+"addChildAt: The index "+t+" supplied is out of bounds "+this.children.length);return e.parent&&e.parent.removeChild(e),(e.parent=this).sortDirty=!0,e.transform._parentID=-1,this.children.splice(t,0,e),this._boundsID++,this.onChildrenChange(t),e.emit("added",this),this.emit("childAdded",e,this,t),e},e.prototype.swapChildren=function(e,t){if(e!==t){var r=this.getChildIndex(e),i=this.getChildIndex(t);this.children[r]=t,this.children[i]=e,this.onChildrenChange(r=this.children.length)throw new Error("The index "+t+" supplied is out of bounds "+this.children.length);var r=this.getChildIndex(e);We(this.children,r,1),this.children.splice(t,0,e),this.onChildrenChange(t)},e.prototype.getChildAt=function(e){if(e<0||e>=this.children.length)throw new Error("getChildAt: Index ("+e+") does not exist.");return this.children[e]},e.prototype.removeChild=function(e){var t=arguments,r=arguments.length;if(1 title : "+e.title+"
tabIndex: "+e.tabIndex},Ft.prototype.capHitArea=function(e){e.x<0&&(e.width+=e.x,e.x=0),e.y<0&&(e.height+=e.y,e.y=0),e.x+e.width>this.renderer.width&&(e.width=this.renderer.width-e.x),e.y+e.height>this.renderer.height&&(e.height=this.renderer.height-e.y)},Ft.prototype.addChild=function(e){var t=this.pool.pop();t||((t=document.createElement("button")).style.width="100px",t.style.height="100px",t.style.backgroundColor=this.debug?"rgba(255,255,255,0.5)":"transparent",t.style.position="absolute",t.style.zIndex=2,t.style.borderStyle="none",-1t.priority){e.connect(r);break}t=(r=t).next}e.previous||e.connect(r)}else e.connect(r);return this._startIfPossible(),this},t.prototype.remove=function(e,t){for(var r=this._head.next;r;)r=r.match(e,t)?r.destroy():r.next;return this._head.next||this._cancelIfNeeded(),this},t.prototype.start=function(){this.started||(this.started=!0,this._requestIfNeeded())},t.prototype.stop=function(){this.started&&(this.started=!1,this._cancelIfNeeded())},t.prototype.destroy=function(){if(!this._protected){this.stop();for(var e=this._head.next;e;)e=e.destroy(!0);this._head.destroy(),this._head=null}},t.prototype.update=function(e){var t;if(void 0===e&&(e=performance.now()),e>this.lastTime){if((t=this.elapsedMS=e-this.lastTime)>this._maxElapsedMS&&(t=this._maxElapsedMS),t*=this.speed,this._minElapsedMS){var r=e-this._lastFrame|0;if(r]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*>/i;var rr=function(h){function r(e,t){if(t=t||{},!(e instanceof HTMLVideoElement)){var r=document.createElement("video");r.setAttribute("preload","auto"),r.setAttribute("webkit-playsinline",""),r.setAttribute("playsinline",""),"string"==typeof e&&(e=[e]),h.crossOrigin(r,e[0].src||e[0],t.crossorigin);for(var i=0;ithis.baseTexture.width,a=r+n>this.baseTexture.height;if(o||a){var s=o&&a?"and":"or",l="X: "+t+" + "+i+" = "+(t+i)+" > "+this.baseTexture.width,u="Y: "+r+" + "+n+" = "+(r+n)+" > "+this.baseTexture.height;throw new Error("Texture Error: frame does not fit inside the base Texture dimensions: "+l+" "+s+" "+u)}this.valid=i&&n&&this.baseTexture.valid,this.trim||this.rotate||(this.orig=e),this.valid&&this.updateUvs()},e.rotate.get=function(){return this._rotate},e.rotate.set=function(e){this._rotate=e,this.valid&&this.updateUvs()},e.width.get=function(){return this.orig.width},e.height.get=function(){return this.orig.height},Object.defineProperties(s.prototype,e),s}(d);function pr(e){e.destroy=function(){},e.on=function(){},e.once=function(){},e.emit=function(){}}fr.EMPTY=new fr(new Kt),pr(fr.EMPTY),pr(fr.EMPTY.baseTexture),fr.WHITE=function(){var e=document.createElement("canvas");e.width=16,e.height=16;var t=e.getContext("2d");return t.fillStyle="white",t.fillRect(0,0,16,16),new fr(new Kt(new $t(e)))}(),pr(fr.WHITE),pr(fr.WHITE.baseTexture);var dr=function(s){function t(e,t){var r=null;if(!(e instanceof ur)){var i=arguments[1],n=arguments[2],o=arguments[3],a=arguments[4];console.warn("Please use RenderTexture.create("+i+", "+n+") instead of the ctor directly."),r=arguments[0],t=null,e=new ur({width:i,height:n,scaleMode:o,resolution:a})}s.call(this,e,t),this.legacyRenderer=r,this.valid=!0,this.filterFrame=null,this.filterPoolKey=null,this.updateUvs()}return s&&(t.__proto__=s),((t.prototype=Object.create(s&&s.prototype)).constructor=t).prototype.resize=function(e,t,r){void 0===r&&(r=!0),e=Math.ceil(e),t=Math.ceil(t),this.valid=0=G.ENV.WEBGL2&&(r=e.getContext("webgl2",t)),r)this.webGLVersion=2;else if(this.webGLVersion=1,!(r=e.getContext("webgl",t)||e.getContext("experimental-webgl",t)))throw new Error("This browser does not support WebGL. Try using the canvas renderer");return this.gl=r,this.getExtensions(),r},e.prototype.getExtensions=function(){var e=this.gl;1===this.webGLVersion?Object.assign(this.extensions,{drawBuffers:e.getExtension("WEBGL_draw_buffers"),depthTexture:e.getExtension("WEBKIT_WEBGL_depth_texture"),loseContext:e.getExtension("WEBGL_lose_context"),vertexArrayObject:e.getExtension("OES_vertex_array_object")||e.getExtension("MOZ_OES_vertex_array_object")||e.getExtension("WEBKIT_OES_vertex_array_object"),anisotropicFiltering:e.getExtension("EXT_texture_filter_anisotropic"),uint32ElementIndex:e.getExtension("OES_element_index_uint"),floatTexture:e.getExtension("OES_texture_float"),floatTextureLinear:e.getExtension("OES_texture_float_linear"),textureHalfFloat:e.getExtension("OES_texture_half_float"),textureHalfFloatLinear:e.getExtension("OES_texture_half_float_linear")}):2===this.webGLVersion&&Object.assign(this.extensions,{anisotropicFiltering:e.getExtension("EXT_texture_filter_anisotropic"),colorBufferFloat:e.getExtension("EXT_color_buffer_float"),floatTextureLinear:e.getExtension("OES_texture_float_linear")})},e.prototype.handleContextLost=function(e){e.preventDefault()},e.prototype.handleContextRestored=function(){this.renderer.runners.contextChange.run(this.gl)},e.prototype.destroy=function(){var e=this.renderer.view;e.removeEventListener("webglcontextlost",this.handleContextLost),e.removeEventListener("webglcontextrestored",this.handleContextRestored),this.gl.useProgram(null),this.extensions.loseContext&&this.extensions.loseContext.loseContext()},e.prototype.postrender=function(){this.renderer.renderingToScreen&&this.gl.flush()},e.prototype.validateContext=function(e){e.getContextAttributes().stencil||console.warn("Provided WebGL context does not have a stencil buffer, masks may not render correctly")},Object.defineProperties(e.prototype,r),e}(or),zr=function(t){function e(e){t.call(this,e),this.managedFramebuffers=[],this.unknownFramebuffer=new sr(10,10)}t&&(e.__proto__=t);var r={size:{configurable:!0}};return((e.prototype=Object.create(t&&t.prototype)).constructor=e).prototype.contextChange=function(){var e=this.gl=this.renderer.gl;if(this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.current=this.unknownFramebuffer,this.viewport=new Pt,this.hasMRT=!0,this.writeDepthTexture=!0,this.disposeAll(!0),1===this.renderer.context.webGLVersion){var t=this.renderer.context.extensions.drawBuffers,r=this.renderer.context.extensions.depthTexture;T.PREFER_ENV===G.ENV.WEBGL_LEGACY&&(r=t=null),t?e.drawBuffers=function(e){return t.drawBuffersWEBGL(e)}:(this.hasMRT=!1,e.drawBuffers=function(){}),r||(this.writeDepthTexture=!1)}},e.prototype.bind=function(e,t){var r=this.gl;if(e){var i=e.glFramebuffers[this.CONTEXT_UID]||this.initFramebuffer(e);this.current!==e&&(this.current=e,r.bindFramebuffer(r.FRAMEBUFFER,i.framebuffer)),i.dirtyId!==e.dirtyId&&(i.dirtyId=e.dirtyId,i.dirtyFormat!==e.dirtyFormat?(i.dirtyFormat=e.dirtyFormat,this.updateFramebuffer(e)):i.dirtySize!==e.dirtySize&&(i.dirtySize=e.dirtySize,this.resizeFramebuffer(e)));for(var n=0;n=i.data.byteLength)t.bufferSubData(o,0,i.data);else{var a=i.static?t.STATIC_DRAW:t.DYNAMIC_DRAW;n.byteLength=i.data.byteLength,t.bufferData(o,i.data,a)}}}},e.prototype.checkCompatibility=function(e,t){var r=e.attributes,i=t.attributeData;for(var n in i)if(!r[n])throw new Error('shader and geometry incompatible, geometry missing the "'+n+'" attribute')},e.prototype.getSignature=function(e,t){var r=e.attributes,i=t.attributeData,n=["g",e.id];for(var o in r)i[o]&&n.push(o);return n.join("-")},e.prototype.initGeometryVao=function(e,t){this.checkCompatibility(e,t);var r=this.gl,i=this.CONTEXT_UID,n=this.getSignature(e,t),o=e.glVertexArrayObjects[this.CONTEXT_UID],a=o[n];if(a)return o[t.id]=a;var s=e.buffers,l=e.attributes,u={},h={};for(var c in s)u[c]=0,h[c]=0;for(var f in l)!l[f].size&&t.attributeData[f]?l[f].size=t.attributeData[f].size:l[f].size||console.warn("PIXI Geometry attribute '"+f+"' size cannot be determined (likely the bound shader does not have the attribute)"),u[l[f].buffer]+=l[f].size*Lr[l[f].type];for(var p in l){var d=l[p],m=d.size;void 0===d.stride&&(u[d.buffer]===m*Lr[d.type]?d.stride=0:d.stride=u[d.buffer]),void 0===d.start&&(d.start=h[d.buffer],h[d.buffer]+=m*Lr[d.type])}a=r.createVertexArray(),r.bindVertexArray(a);for(var g=0;g=G.ENV.WEBGL2&&(e=t.getContext("webgl2",{})),e||((e=t.getContext("webgl",{})||t.getContext("experimental-webgl",{}))?e.getExtension("WEBGL_draw_buffers"):e=null),Gr=e}return Gr}function Yr(e,t,r){if("precision"===e.substring(0,9))return r!==G.PRECISION.HIGH&&"precision highp"===e.substring(0,15)?e.replace("precision highp","precision mediump"):e;var i=t;return t===G.PRECISION.HIGH&&r!==G.PRECISION.HIGH&&(i=G.PRECISION.MEDIUM),"precision "+i+" float;\n"+e}var Zr={float:1,vec2:2,vec3:3,vec4:4,int:1,ivec2:2,ivec3:3,ivec4:4,bool:1,bvec2:2,bvec3:3,bvec4:4,mat2:4,mat3:9,mat4:16,sampler2D:1};var Jr=null,Kr={FLOAT:"float",FLOAT_VEC2:"vec2",FLOAT_VEC3:"vec3",FLOAT_VEC4:"vec4",INT:"int",INT_VEC2:"ivec2",INT_VEC3:"ivec3",INT_VEC4:"ivec4",BOOL:"bool",BOOL_VEC2:"bvec2",BOOL_VEC3:"bvec3",BOOL_VEC4:"bvec4",FLOAT_MAT2:"mat2",FLOAT_MAT3:"mat3",FLOAT_MAT4:"mat4",SAMPLER_2D:"sampler2D",SAMPLER_CUBE:"samplerCube",SAMPLER_2D_ARRAY:"sampler2DArray"};function Qr(e,t){if(!Jr){var r=Object.keys(Kr);Jr={};for(var i=0;it.name?1:-1});for(var h=0;h>=1,r++;this.stateId=e.data}for(var i=0;ithis.checkCountMax&&(this.checkCount=0,this.run())))},e.prototype.run=function(){for(var e=this.renderer.texture,t=e.managedTextures,r=!1,i=0;ithis.maxIdle&&(e.destroyTexture(n,!0),r=!(t[i]=null))}if(r){for(var o=0,a=0;athis.size&&this.flush(),this._vertexCount+=e.vertexData.length/2,this._indexCount+=e.indices.length,this._bufferedTextures[this._bufferSize]=e._texture.baseTexture,this._bufferedElements[this._bufferSize++]=e)},g.prototype.buildTexturesAndDrawCalls=function(){var e=this._bufferedTextures,t=this.MAX_TEXTURES,r=g._textureArrayPool,i=this.renderer.batch,n=this._tempBoundTextures,o=this.renderer.textureGC.count,a=++Kt._globalBatch,s=0,l=r[0],u=0;i.copyBoundTextures(n,t);for(var h=0;h=t&&(i.boundArray(l,n,a,t),this.buildDrawCalls(l,u,h),u=h,l=r[++s],++a),c._batchEnabled=a,c.touched=o,l.elements[l.count++]=c)}0this.maxSegments&&(r=this.maxSegments),r}},pn=function(){this.reset()};pn.prototype.clone=function(){var e=new pn;return e.color=this.color,e.alpha=this.alpha,e.texture=this.texture,e.matrix=this.matrix,e.visible=this.visible,e},pn.prototype.reset=function(){this.color=16777215,this.alpha=1,this.texture=fr.WHITE,this.matrix=null,this.visible=!1},pn.prototype.destroy=function(){this.texture=null,this.matrix=null};var dn={build:function(e){e.points=e.shape.points.slice()},triangulate:function(e,t){var r=e.points,i=e.holes,n=t.points,o=t.indices;if(6<=r.length){for(var a=[],s=0;s>16)+(65280&t)+((255&t)<<16),r);0>16&255)/255*n,o.tint[1]=(i>>8&255)/255*n,o.tint[2]=(255&i)/255*n,o.tint[3]=n,e.shader.bind(t),e.geometry.bind(r,t),e.state.set(this.state);for(var s=0,l=a.length;s>16)+(65280&n)+((255&n)<<16)}}},r.prototype.calculateVertices=function(){if(this._transformID!==this.transform._worldID){this._transformID=this.transform._worldID;for(var e=this.transform.worldTransform,t=e.a,r=e.b,i=e.c,n=e.d,o=e.tx,a=e.ty,s=this.geometry.points,l=this.vertexData,u=0,h=0;h=i&&jn.x=n&&jn.y>16)+(65280&e)+((255&e)<<16)},e.texture.get=function(){return this._texture},e.texture.set=function(e){this._texture!==e&&(this._texture&&this._texture.off("update",this._onTextureUpdate,this),this._texture=e||fr.EMPTY,this._cachedTint=16777215,this._textureID=-1,this._textureTrimmedID=-1,e&&(e.baseTexture.valid?this._onTextureUpdate():e.once("update",this._onTextureUpdate,this)))},Object.defineProperties(i.prototype,e),i}(Rt),Un={LINEAR_VERTICAL:0,LINEAR_HORIZONTAL:1},Xn={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fillGradientType:Un.LINEAR_VERTICAL,fillGradientStops:[],fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",letterSpacing:0,lineHeight:0,lineJoin:"miter",miterLimit:10,padding:0,stroke:"black",strokeThickness:0,textBaseline:"alphabetic",trim:!1,whiteSpace:"pre",wordWrap:!1,wordWrapWidth:100,leading:0},Hn=["serif","sans-serif","monospace","cursive","fantasy","system-ui"],Wn=function(e){this.styleID=0,this.reset(),Yn(this,e,e)},qn={align:{configurable:!0},breakWords:{configurable:!0},dropShadow:{configurable:!0},dropShadowAlpha:{configurable:!0},dropShadowAngle:{configurable:!0},dropShadowBlur:{configurable:!0},dropShadowColor:{configurable:!0},dropShadowDistance:{configurable:!0},fill:{configurable:!0},fillGradientType:{configurable:!0},fillGradientStops:{configurable:!0},fontFamily:{configurable:!0},fontSize:{configurable:!0},fontStyle:{configurable:!0},fontVariant:{configurable:!0},fontWeight:{configurable:!0},letterSpacing:{configurable:!0},lineHeight:{configurable:!0},leading:{configurable:!0},lineJoin:{configurable:!0},miterLimit:{configurable:!0},padding:{configurable:!0},stroke:{configurable:!0},strokeThickness:{configurable:!0},textBaseline:{configurable:!0},trim:{configurable:!0},whiteSpace:{configurable:!0},wordWrap:{configurable:!0},wordWrapWidth:{configurable:!0}};function Gn(e){return"number"==typeof e?Fe(e):("string"==typeof e&&0===e.indexOf("0x")&&(e=e.replace("0x","#")),e)}function Vn(e){if(Array.isArray(e)){for(var t=0;t>2,n[1]=(3&i[0])<<4|i[1]>>4,n[2]=(15&i[1])<<2|i[2]>>6,n[3]=63&i[2],r-(e.length-1)){case 2:n[3]=64,n[2]=64;break;case 1:n[3]=64}for(var a=0;a=a.length&&a.push(this._generateOneMoreBuffer(e));var d=a[f];d.uploadDynamic(t,c,p);var m=e._bufferUpdateIDs[f]||0;(h=h||d._updateID=i&&Jo.x=n&&Jo.ys&&(We(i,1+f-++d,1+g-f),g=f,f=-1,n.push(p),h=Math.max(h,p),c++,r.x=0,r.y+=e.lineHeight,l=null))}else n.push(u),h=Math.max(h,u),++c,++d,r.x=0,r.y+=e.lineHeight,l=null}var b=o.charAt(o.length-1);"\r"!==b&&"\n"!==b&&(/(?:\s)/.test(b)&&(u=p),n.push(u),h=Math.max(h,u));for(var x=[],w=0;w<=c;w++){var T=0;"right"===this._font.align?T=h-n[w]:"center"===this._font.align&&(T=(h-n[w])/2),x.push(T)}for(var k=i.length,S=this.tint,P=0;P 0.0) {\n c.rgb /= c.a;\n }\n\n vec4 result;\n\n result.r = (m[0] * c.r);\n result.r += (m[1] * c.g);\n result.r += (m[2] * c.b);\n result.r += (m[3] * c.a);\n result.r += m[4];\n\n result.g = (m[5] * c.r);\n result.g += (m[6] * c.g);\n result.g += (m[7] * c.b);\n result.g += (m[8] * c.a);\n result.g += m[9];\n\n result.b = (m[10] * c.r);\n result.b += (m[11] * c.g);\n result.b += (m[12] * c.b);\n result.b += (m[13] * c.a);\n result.b += m[14];\n\n result.a = (m[15] * c.r);\n result.a += (m[16] * c.g);\n result.a += (m[17] * c.b);\n result.a += (m[18] * c.a);\n result.a += m[19];\n\n vec3 rgb = mix(c.rgb, result.rgb, uAlpha);\n\n // Premultiply alpha again.\n rgb *= result.a;\n\n gl_FragColor = vec4(rgb, result.a);\n}\n",e),this.alpha=1}t&&(e.__proto__=t);var r={matrix:{configurable:!0},alpha:{configurable:!0}};return((e.prototype=Object.create(t&&t.prototype)).constructor=e).prototype._loadMatrix=function(e,t){void 0===t&&(t=!1);var r=e;t&&(this._multiply(r,this.uniforms.m,e),r=this._colorMatrix(r)),this.uniforms.m=r},e.prototype._multiply=function(e,t,r){return e[0]=t[0]*r[0]+t[1]*r[5]+t[2]*r[10]+t[3]*r[15],e[1]=t[0]*r[1]+t[1]*r[6]+t[2]*r[11]+t[3]*r[16],e[2]=t[0]*r[2]+t[1]*r[7]+t[2]*r[12]+t[3]*r[17],e[3]=t[0]*r[3]+t[1]*r[8]+t[2]*r[13]+t[3]*r[18],e[4]=t[0]*r[4]+t[1]*r[9]+t[2]*r[14]+t[3]*r[19]+t[4],e[5]=t[5]*r[0]+t[6]*r[5]+t[7]*r[10]+t[8]*r[15],e[6]=t[5]*r[1]+t[6]*r[6]+t[7]*r[11]+t[8]*r[16],e[7]=t[5]*r[2]+t[6]*r[7]+t[7]*r[12]+t[8]*r[17],e[8]=t[5]*r[3]+t[6]*r[8]+t[7]*r[13]+t[8]*r[18],e[9]=t[5]*r[4]+t[6]*r[9]+t[7]*r[14]+t[8]*r[19]+t[9],e[10]=t[10]*r[0]+t[11]*r[5]+t[12]*r[10]+t[13]*r[15],e[11]=t[10]*r[1]+t[11]*r[6]+t[12]*r[11]+t[13]*r[16],e[12]=t[10]*r[2]+t[11]*r[7]+t[12]*r[12]+t[13]*r[17],e[13]=t[10]*r[3]+t[11]*r[8]+t[12]*r[13]+t[13]*r[18],e[14]=t[10]*r[4]+t[11]*r[9]+t[12]*r[14]+t[13]*r[19]+t[14],e[15]=t[15]*r[0]+t[16]*r[5]+t[17]*r[10]+t[18]*r[15],e[16]=t[15]*r[1]+t[16]*r[6]+t[17]*r[11]+t[18]*r[16],e[17]=t[15]*r[2]+t[16]*r[7]+t[17]*r[12]+t[18]*r[17],e[18]=t[15]*r[3]+t[16]*r[8]+t[17]*r[13]+t[18]*r[18],e[19]=t[15]*r[4]+t[16]*r[9]+t[17]*r[14]+t[18]*r[19]+t[19],e},e.prototype._colorMatrix=function(e){var t=new Float32Array(e);return t[4]/=255,t[9]/=255,t[14]/=255,t[19]/=255,t},e.prototype.brightness=function(e,t){var r=[e,0,0,0,0,0,e,0,0,0,0,0,e,0,0,0,0,0,1,0];this._loadMatrix(r,t)},e.prototype.greyscale=function(e,t){var r=[e,e,e,0,0,e,e,e,0,0,e,e,e,0,0,0,0,0,1,0];this._loadMatrix(r,t)},e.prototype.blackAndWhite=function(e){this._loadMatrix([.3,.6,.1,0,0,.3,.6,.1,0,0,.3,.6,.1,0,0,0,0,0,1,0],e)},e.prototype.hue=function(e,t){e=(e||0)/180*Math.PI;var r=Math.cos(e),i=Math.sin(e),n=(0,Math.sqrt)(1/3),o=[r+1/3*(1-r),1/3*(1-r)-n*i,1/3*(1-r)+n*i,0,0,1/3*(1-r)+n*i,r+1/3*(1-r),1/3*(1-r)-n*i,0,0,1/3*(1-r)-n*i,1/3*(1-r)+n*i,r+1/3*(1-r),0,0,0,0,0,1,0];this._loadMatrix(o,t)},e.prototype.contrast=function(e,t){var r=(e||0)+1,i=-.5*(r-1),n=[r,0,0,0,i,0,r,0,0,i,0,0,r,0,i,0,0,0,1,0];this._loadMatrix(n,t)},e.prototype.saturate=function(e,t){void 0===e&&(e=0);var r=2*e/3+1,i=-.5*(r-1),n=[r,i,i,0,0,i,r,i,0,0,i,i,r,0,0,0,0,0,1,0];this._loadMatrix(n,t)},e.prototype.desaturate=function(){this.saturate(-1)},e.prototype.negative=function(e){this._loadMatrix([-1,0,0,1,0,0,-1,0,1,0,0,0,-1,1,0,0,0,0,1,0],e)},e.prototype.sepia=function(e){this._loadMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0],e)},e.prototype.technicolor=function(e){this._loadMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0],e)},e.prototype.polaroid=function(e){this._loadMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0],e)},e.prototype.toBGR=function(e){this._loadMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0],e)},e.prototype.kodachrome=function(e){this._loadMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0],e)},e.prototype.browni=function(e){this._loadMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0],e)},e.prototype.vintage=function(e){this._loadMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0],e)},e.prototype.colorTone=function(e,t,r,i,n){var o=((r=r||16770432)>>16&255)/255,a=(r>>8&255)/255,s=(255&r)/255,l=((i=i||3375104)>>16&255)/255,u=(i>>8&255)/255,h=(255&i)/255,c=[.3,.59,.11,0,0,o,a,s,e=e||.2,0,l,u,h,t=t||.15,0,o-l,a-u,s-h,0,0];this._loadMatrix(c,n)},e.prototype.night=function(e,t){var r=[-2*(e=e||.1),-e,0,0,0,-e,0,e,0,0,0,e,2*e,0,0,0,0,0,1,0];this._loadMatrix(r,t)},e.prototype.predator=function(e,t){var r=[11.224130630493164*e,-4.794486999511719*e,-2.8746118545532227*e,0*e,.40342438220977783*e,-3.6330697536468506*e,9.193157196044922*e,-2.951810836791992*e,0*e,-1.316135048866272*e,-3.2184197902679443*e,-4.2375030517578125*e,7.476448059082031*e,0*e,.8044459223747253*e,0,0,0,1,0];this._loadMatrix(r,t)},e.prototype.lsd=function(e){this._loadMatrix([2,-.4,.5,0,0,-.5,2,-.4,0,0,-.4,-.5,3,0,0,0,0,0,1,0],e)},e.prototype.reset=function(){this._loadMatrix([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],!1)},r.matrix.get=function(){return this.uniforms.m},r.matrix.set=function(e){this.uniforms.m=e},r.alpha.get=function(){return this.uniforms.uAlpha},r.alpha.set=function(e){this.uniforms.uAlpha=e},Object.defineProperties(e.prototype,r),e}(pi);ua.prototype.grayscale=ua.prototype.greyscale;var ha=function(i){function e(e,t){var r=new gt;e.renderable=!1,i.call(this,"attribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\nuniform mat3 filterMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec2 vFilterCoord;\n\nuniform vec4 inputSize;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\n}\n\nvoid main(void)\n{\n\tgl_Position = filterVertexPosition();\n\tvTextureCoord = filterTextureCoord();\n\tvFilterCoord = ( filterMatrix * vec3( vTextureCoord, 1.0) ).xy;\n}\n","varying vec2 vFilterCoord;\nvarying vec2 vTextureCoord;\n\nuniform vec2 scale;\nuniform mat2 rotation;\nuniform sampler2D uSampler;\nuniform sampler2D mapSampler;\n\nuniform highp vec4 inputSize;\nuniform vec4 inputClamp;\n\nvoid main(void)\n{\n vec4 map = texture2D(mapSampler, vFilterCoord);\n\n map -= 0.5;\n map.xy = scale * inputSize.zw * (rotation * map.xy);\n\n gl_FragColor = texture2D(uSampler, clamp(vec2(vTextureCoord.x + map.x, vTextureCoord.y + map.y), inputClamp.xy, inputClamp.zw));\n}\n",{mapSampler:e._texture,filterMatrix:r,scale:{x:1,y:1},rotation:new Float32Array([1,0,0,1])}),this.maskSprite=e,this.maskMatrix=r,null==t&&(t=20),this.scale=new ct(t,t)}i&&(e.__proto__=i);var t={map:{configurable:!0}};return((e.prototype=Object.create(i&&i.prototype)).constructor=e).prototype.apply=function(e,t,r,i){this.uniforms.filterMatrix=e.calculateSpriteMatrix(this.maskMatrix,this.maskSprite),this.uniforms.scale.x=this.scale.x,this.uniforms.scale.y=this.scale.y;var n=this.maskSprite.transform.worldTransform,o=Math.sqrt(n.a*n.a+n.b*n.b),a=Math.sqrt(n.c*n.c+n.d*n.d);0!==o&&0!==a&&(this.uniforms.rotation[0]=n.a/o,this.uniforms.rotation[1]=n.b/o,this.uniforms.rotation[2]=n.c/a,this.uniforms.rotation[3]=n.d/a),e.applyFilter(this,t,r,i)},t.map.get=function(){return this.uniforms.mapSampler},t.map.set=function(e){this.uniforms.mapSampler=e},Object.defineProperties(e.prototype,t),e}(pi),ca=function(e){function t(){e.call(this,"\nattribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 v_rgbNW;\nvarying vec2 v_rgbNE;\nvarying vec2 v_rgbSW;\nvarying vec2 v_rgbSE;\nvarying vec2 v_rgbM;\n\nvarying vec2 vFragCoord;\n\nuniform vec4 inputPixel;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvoid texcoords(vec2 fragCoord, vec2 inverseVP,\n out vec2 v_rgbNW, out vec2 v_rgbNE,\n out vec2 v_rgbSW, out vec2 v_rgbSE,\n out vec2 v_rgbM) {\n v_rgbNW = (fragCoord + vec2(-1.0, -1.0)) * inverseVP;\n v_rgbNE = (fragCoord + vec2(1.0, -1.0)) * inverseVP;\n v_rgbSW = (fragCoord + vec2(-1.0, 1.0)) * inverseVP;\n v_rgbSE = (fragCoord + vec2(1.0, 1.0)) * inverseVP;\n v_rgbM = vec2(fragCoord * inverseVP);\n}\n\nvoid main(void) {\n\n gl_Position = filterVertexPosition();\n\n vFragCoord = aVertexPosition * outputFrame.zw;\n\n texcoords(vFragCoord, inputPixel.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\n}\n",'varying vec2 v_rgbNW;\nvarying vec2 v_rgbNE;\nvarying vec2 v_rgbSW;\nvarying vec2 v_rgbSE;\nvarying vec2 v_rgbM;\n\nvarying vec2 vFragCoord;\nuniform sampler2D uSampler;\nuniform highp vec4 inputPixel;\n\n\n/**\n Basic FXAA implementation based on the code on geeks3d.com with the\n modification that the texture2DLod stuff was removed since it\'s\n unsupported by WebGL.\n\n --\n\n From:\n https://github.com/mitsuhiko/webgl-meincraft\n\n Copyright (c) 2011 by Armin Ronacher.\n\n Some rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are\n met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials provided\n with the distribution.\n\n * The names of the contributors may not be used to endorse or\n promote products derived from this software without specific\n prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n#ifndef FXAA_REDUCE_MIN\n#define FXAA_REDUCE_MIN (1.0/ 128.0)\n#endif\n#ifndef FXAA_REDUCE_MUL\n#define FXAA_REDUCE_MUL (1.0 / 8.0)\n#endif\n#ifndef FXAA_SPAN_MAX\n#define FXAA_SPAN_MAX 8.0\n#endif\n\n//optimized version for mobile, where dependent\n//texture reads can be a bottleneck\nvec4 fxaa(sampler2D tex, vec2 fragCoord, vec2 inverseVP,\n vec2 v_rgbNW, vec2 v_rgbNE,\n vec2 v_rgbSW, vec2 v_rgbSE,\n vec2 v_rgbM) {\n vec4 color;\n vec3 rgbNW = texture2D(tex, v_rgbNW).xyz;\n vec3 rgbNE = texture2D(tex, v_rgbNE).xyz;\n vec3 rgbSW = texture2D(tex, v_rgbSW).xyz;\n vec3 rgbSE = texture2D(tex, v_rgbSE).xyz;\n vec4 texColor = texture2D(tex, v_rgbM);\n vec3 rgbM = texColor.xyz;\n vec3 luma = vec3(0.299, 0.587, 0.114);\n float lumaNW = dot(rgbNW, luma);\n float lumaNE = dot(rgbNE, luma);\n float lumaSW = dot(rgbSW, luma);\n float lumaSE = dot(rgbSE, luma);\n float lumaM = dot(rgbM, luma);\n float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));\n float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));\n\n mediump vec2 dir;\n dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\n dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));\n\n float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) *\n (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);\n\n float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);\n dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),\n max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),\n dir * rcpDirMin)) * inverseVP;\n\n vec3 rgbA = 0.5 * (\n texture2D(tex, fragCoord * inverseVP + dir * (1.0 / 3.0 - 0.5)).xyz +\n texture2D(tex, fragCoord * inverseVP + dir * (2.0 / 3.0 - 0.5)).xyz);\n vec3 rgbB = rgbA * 0.5 + 0.25 * (\n texture2D(tex, fragCoord * inverseVP + dir * -0.5).xyz +\n texture2D(tex, fragCoord * inverseVP + dir * 0.5).xyz);\n\n float lumaB = dot(rgbB, luma);\n if ((lumaB < lumaMin) || (lumaB > lumaMax))\n color = vec4(rgbA, texColor.a);\n else\n color = vec4(rgbB, texColor.a);\n return color;\n}\n\nvoid main() {\n\n vec4 color;\n\n color = fxaa(uSampler, vFragCoord, inputPixel.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\n\n gl_FragColor = color;\n}\n')}return e&&(t.__proto__=e),(t.prototype=Object.create(e&&e.prototype)).constructor=t}(pi),fa=function(r){function e(e,t){void 0===e&&(e=.5),void 0===t&&(t=Math.random()),r.call(this,ji,"precision highp float;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform float uNoise;\nuniform float uSeed;\nuniform sampler2D uSampler;\n\nfloat rand(vec2 co)\n{\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvoid main()\n{\n vec4 color = texture2D(uSampler, vTextureCoord);\n float randomValue = rand(gl_FragCoord.xy * uSeed);\n float diff = (randomValue - 0.5) * uNoise;\n\n // Un-premultiply alpha before applying the color matrix. See issue #3539.\n if (color.a > 0.0) {\n color.rgb /= color.a;\n }\n\n color.r += diff;\n color.g += diff;\n color.b += diff;\n\n // Premultiply alpha again.\n color.rgb *= color.a;\n\n gl_FragColor = color;\n}\n",{uNoise:0,uSeed:0}),this.noise=e,this.seed=t}r&&(e.__proto__=r),(e.prototype=Object.create(r&&r.prototype)).constructor=e;var t={noise:{configurable:!0},seed:{configurable:!0}};return t.noise.get=function(){return this.uniforms.uNoise},t.noise.set=function(e){this.uniforms.uNoise=e},t.seed.get=function(){return this.uniforms.uSeed},t.seed.set=function(e){this.uniforms.uSeed=e},Object.defineProperties(e.prototype,t),e}(pi),pa=new gt;Mt.prototype._cacheAsBitmap=!1,Mt.prototype._cacheData=!1;var da=function(){this.textureCacheId=null,this.originalRender=null,this.originalRenderCanvas=null,this.originalCalculateBounds=null,this.originalGetLocalBounds=null,this.originalUpdateTransform=null,this.originalHitTest=null,this.originalDestroy=null,this.originalMask=null,this.originalFilterArea=null,this.sprite=null};Object.defineProperties(Mt.prototype,{cacheAsBitmap:{get:function(){return this._cacheAsBitmap},set:function(e){var t;this._cacheAsBitmap!==e&&((this._cacheAsBitmap=e)?(this._cacheData||(this._cacheData=new da),(t=this._cacheData).originalRender=this.render,t.originalRenderCanvas=this.renderCanvas,t.originalUpdateTransform=this.updateTransform,t.originalCalculateBounds=this.calculateBounds,t.originalGetLocalBounds=this.getLocalBounds,t.originalDestroy=this.destroy,t.originalContainsPoint=this.containsPoint,t.originalMask=this._mask,t.originalFilterArea=this.filterArea,this.render=this._renderCached,this.renderCanvas=this._renderCachedCanvas,this.destroy=this._cacheAsBitmapDestroy):((t=this._cacheData).sprite&&this._destroyCachedDisplayObject(),this.render=t.originalRender,this.renderCanvas=t.originalRenderCanvas,this.calculateBounds=t.originalCalculateBounds,this.getLocalBounds=t.originalGetLocalBounds,this.destroy=t.originalDestroy,this.updateTransform=t.originalUpdateTransform,this.containsPoint=t.originalContainsPoint,this._mask=t.originalMask,this.filterArea=t.originalFilterArea))}}}),Mt.prototype._renderCached=function(e){!this.visible||this.worldAlpha<=0||!this.renderable||(this._initCachedDisplayObject(e),this._cacheData.sprite.transform._worldID=this.transform._worldID,this._cacheData.sprite.worldAlpha=this.worldAlpha,this._cacheData.sprite._render(e))},Mt.prototype._initCachedDisplayObject=function(e){if(!this._cacheData||!this._cacheData.sprite){var t=this.alpha;this.alpha=1,e.batch.flush();var r=this.getLocalBounds().clone();if(this.filters){var i=this.filters[0].padding;r.pad(i)}r.ceil(T.RESOLUTION);var n=e.renderTexture.current,o=e.renderTexture.sourceFrame,a=e.projection.transform,s=dr.create(r.width,r.height),l="cacheAsBitmap_"+Ge();this._cacheData.textureCacheId=l,Kt.addToCache(s.baseTexture,l),fr.addToCache(s,l);var u=pa;u.tx=-r.x,u.ty=-r.y,this.transform.worldTransform.identity(),this.render=this._cacheData.originalRender,e.render(this,s,!0,u,!0),e.projection.transform=a,e.renderTexture.bind(n,o),this.render=this._renderCached,this.updateTransform=this.displayObjectUpdateTransform,this.calculateBounds=this._calculateCachedBounds,this.getLocalBounds=this._getCachedLocalBounds,this._mask=null,this.filterArea=null;var h=new Bn(s);h.transform.worldTransform=this.transform.worldTransform,h.anchor.x=-r.x/r.width,h.anchor.y=-r.y/r.height,h.alpha=t,h._bounds=this._bounds,this._cacheData.sprite=h,this.transform._parentID=-1,this.parent?this.updateTransform():(this.parent=e._tempDisplayObjectParent,this.updateTransform(),this.parent=null),this.containsPoint=h.containsPoint.bind(h)}},Mt.prototype._renderCachedCanvas=function(e){!this.visible||this.worldAlpha<=0||!this.renderable||(this._initCachedDisplayObjectCanvas(e),this._cacheData.sprite.worldAlpha=this.worldAlpha,this._cacheData.sprite._renderCanvas(e))},Mt.prototype._initCachedDisplayObjectCanvas=function(e){if(!this._cacheData||!this._cacheData.sprite){var t=this.getLocalBounds(),r=this.alpha;this.alpha=1;var i=e.context;t.ceil(T.RESOLUTION);var n=dr.create(t.width,t.height),o="cacheAsBitmap_"+Ge();this._cacheData.textureCacheId=o,Kt.addToCache(n.baseTexture,o),fr.addToCache(n,o);var a=pa;this.transform.localTransform.copyTo(a),a.invert(),a.tx-=t.x,a.ty-=t.y,this.renderCanvas=this._cacheData.originalRenderCanvas,e.render(this,n,!0,a,!1),e.context=i,this.renderCanvas=this._renderCachedCanvas,this.updateTransform=this.displayObjectUpdateTransform,this.calculateBounds=this._calculateCachedBounds,this.getLocalBounds=this._getCachedLocalBounds,this._mask=null,this.filterArea=null;var s=new Bn(n);s.transform.worldTransform=this.transform.worldTransform,s.anchor.x=-t.x/t.width,s.anchor.y=-t.y/t.height,s.alpha=r,s._bounds=this._bounds,this._cacheData.sprite=s,this.transform._parentID=-1,this.parent?this.updateTransform():(this.parent=e._tempDisplayObjectParent,this.updateTransform(),this.parent=null),this.containsPoint=s.containsPoint.bind(s)}},Mt.prototype._calculateCachedBounds=function(){this._bounds.clear(),this._cacheData.sprite.transform._worldID=this.transform._worldID,this._cacheData.sprite._calculateBounds(),this._lastBoundsID=this._boundsID},Mt.prototype._getCachedLocalBounds=function(){return this._cacheData.sprite.getLocalBounds()},Mt.prototype._destroyCachedDisplayObject=function(){this._cacheData.sprite._texture.destroy(!0),this._cacheData.sprite=null,Kt.removeFromCache(this._cacheData.textureCacheId),fr.removeFromCache(this._cacheData.textureCacheId),this._cacheData.textureCacheId=null},Mt.prototype._cacheAsBitmapDestroy=function(e){this.cacheAsBitmap=!1,this.destroy(e)},Mt.prototype.name=null,Rt.prototype.getChildByName=function(e){for(var t=0;t>16)+(65280&e)+((255&e)<<16),this._colorDirty=!0)},t.tint.get=function(){return this._tint},e.prototype.update=function(){if(this._colorDirty){this._colorDirty=!1;var e=this.texture.baseTexture;Xe(this._tint,this._alpha,this.uniforms.uColor,e.alphaMode)}this.uvMatrix.update()&&(this.uniforms.uTextureMatrix=this.uvMatrix.mapCoord)},Object.defineProperties(e.prototype,t),e}(ui),xa=function(a){function e(e,t,r){a.call(this);var i=new _r(e),n=new _r(t,!0),o=new _r(r,!0,!0);this.addAttribute("aVertexPosition",i,2,!1,G.TYPES.FLOAT).addAttribute("aTextureCoord",n,2,!1,G.TYPES.FLOAT).addIndex(o),this._updateId=-1}a&&(e.__proto__=a),(e.prototype=Object.create(a&&a.prototype)).constructor=e;var t={vertexDirtyId:{configurable:!0}};return t.vertexDirtyId.get=function(){return this.buffers[0]._updateID},Object.defineProperties(e.prototype,t),e}(kr),wa=function(n){function e(e,t,r,i){void 0===e&&(e=100),void 0===t&&(t=100),void 0===r&&(r=10),void 0===i&&(i=10),n.call(this),this.segWidth=r,this.segHeight=i,this.width=e,this.height=t,this.build()}return n&&(e.__proto__=n),((e.prototype=Object.create(n&&n.prototype)).constructor=e).prototype.build=function(){for(var e=this.segWidth*this.segHeight,t=[],r=[],i=[],n=this.segWidth-1,o=this.segHeight-1,a=this.width/n,s=this.height/o,l=0;lt?1:this._height/t;e[9]=e[11]=e[13]=e[15]=this._topHeight*r,e[17]=e[19]=e[21]=e[23]=this._height-this._bottomHeight*r,e[25]=e[27]=e[29]=e[31]=this._height},e.prototype.updateVerticalVertices=function(){var e=this.vertices,t=this._leftWidth+this._rightWidth,r=this._width>t?1:this._width/t;e[2]=e[10]=e[18]=e[26]=this._leftWidth*r,e[4]=e[12]=e[20]=e[28]=this._width-this._rightWidth*r,e[6]=e[14]=e[22]=e[30]=this._width},t.width.get=function(){return this._width},t.width.set=function(e){this._width=e,this._refresh()},t.height.get=function(){return this._height},t.height.set=function(e){this._height=e,this._refresh()},t.leftWidth.get=function(){return this._leftWidth},t.leftWidth.set=function(e){this._leftWidth=e,this._refresh()},t.rightWidth.get=function(){return this._rightWidth},t.rightWidth.set=function(e){this._rightWidth=e,this._refresh()},t.topHeight.get=function(){return this._topHeight},t.topHeight.set=function(e){this._topHeight=e,this._refresh()},t.bottomHeight.get=function(){return this._bottomHeight},t.bottomHeight.set=function(e){this._bottomHeight=e,this._refresh()},e.prototype._refresh=function(){var e=this.texture,t=this.geometry.buffers[1].data;this._origWidth=e.orig.width,this._origHeight=e.orig.height;var r=1/this._origWidth,i=1/this._origHeight;t[0]=t[8]=t[16]=t[24]=0,t[1]=t[3]=t[5]=t[7]=0,t[6]=t[14]=t[22]=t[30]=1,t[25]=t[27]=t[29]=t[31]=1,t[2]=t[10]=t[18]=t[26]=r*this._leftWidth,t[4]=t[12]=t[20]=t[28]=1-r*this._rightWidth,t[9]=t[11]=t[13]=t[15]=i*this._topHeight,t[17]=t[19]=t[21]=t[23]=1-i*this._bottomHeight,this.updateHorizontalVertices(),this.updateVerticalVertices(),this.geometry.buffers[0].update(),this.geometry.buffers[1].update()},Object.defineProperties(e.prototype,t),e}(Sa),Ca=function(r){function i(e,t){r.call(this,e[0]instanceof fr?e[0]:e[0].texture),this._textures=null,this._durations=null,this.textures=e,this._autoUpdate=!1!==t,this.animationSpeed=1,this.loop=!0,this.updateAnchor=!1,this.onComplete=null,this.onFrameChange=null,this.onLoop=null,this._currentTime=0,this.playing=!1}r&&(i.__proto__=r);var e={totalFrames:{configurable:!0},textures:{configurable:!0},currentFrame:{configurable:!0}};return((i.prototype=Object.create(r&&r.prototype)).constructor=i).prototype.stop=function(){this.playing&&(this.playing=!1,this._autoUpdate&&Ut.shared.remove(this.update,this))},i.prototype.play=function(){this.playing||(this.playing=!0,this._autoUpdate&&Ut.shared.add(this.update,this,G.UPDATE_PRIORITY.HIGH))},i.prototype.gotoAndStop=function(e){this.stop();var t=this.currentFrame;this._currentTime=e,t!==this.currentFrame&&this.updateTexture()},i.prototype.gotoAndPlay=function(e){var t=this.currentFrame;this._currentTime=e,t!==this.currentFrame&&this.updateTexture(),this.play()},i.prototype.update=function(e){var t=this.animationSpeed*e,r=this.currentFrame;if(null!==this._durations){var i=this._currentTime%1*this._durations[this.currentFrame];for(i+=t/60*1e3;i<0;)this._currentTime--,i+=this._durations[this.currentFrame];var n=Math.sign(this.animationSpeed*e);for(this._currentTime=Math.floor(this._currentTime);i>=this._durations[this.currentFrame];)i-=this._durations[this.currentFrame]*n,this._currentTime+=n;this._currentTime+=i/this._durations[this.currentFrame]}else this._currentTime+=t;this._currentTime<0&&!this.loop?(this.gotoAndStop(0),this.onComplete&&this.onComplete()):this._currentTime>=this._textures.length&&!this.loop?(this.gotoAndStop(this._textures.length-1),this.onComplete&&this.onComplete()):r!==this.currentFrame&&(this.loop&&this.onLoop&&(0r&&this.onLoop()),this.updateTexture())},i.prototype.updateTexture=function(){this._texture=this._textures[this.currentFrame],this._textureID=-1,this._textureTrimmedID=-1,this._cachedTint=16777215,this.uvs=this._texture._uvs.uvsFloat32,this.updateAnchor&&this._anchor.copyFrom(this._texture.defaultAnchor),this.onFrameChange&&this.onFrameChange(this.currentFrame)},i.prototype.destroy=function(e){this.stop(),r.prototype.destroy.call(this,e),this.onComplete=null,this.onFrameChange=null,this.onLoop=null},i.fromFrames=function(e){for(var t=[],r=0;r 0) var gc = undefined");else{if(!ba&&!ca)throw"Unknown runtime environment. Where are we?";e.read=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},"undefined"!=typeof arguments&&(e.arguments=arguments),"undefined"!=typeof console?(e.print||(e.print=function(e){console.log(e)}),e.printErr||(e.printErr=function(e){console.log(e)})):e.print||(e.print=function(){}),ca&&(e.load=importScripts),void 0===e.setWindowTitle&&(e.setWindowTitle=function(e){document.title=e})}function ha(e){eval.call(null,e)}for(k in!e.load&&e.read&&(e.load=function(t){ha(e.read(t))}),e.print||(e.print=function(){}),e.printErr||(e.printErr=e.print),e.arguments||(e.arguments=[]),e.thisProgram||(e.thisProgram="./this.program"),e.print=e.print,e.W=e.printErr,e.preRun=[],e.postRun=[],aa)aa.hasOwnProperty(k)&&(e[k]=aa[k]);var n={rb:function(e){ka=e},fb:function(){return ka},ua:function(){return m},ba:function(e){m=e},Ka:function(e){switch(e){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:return"*"===e[e.length-1]?n.J:"i"===e[0]?(assert(0==(e=parseInt(e.substr(1)))%8),e/8):0}},eb:function(e){return Math.max(n.Ka(e),n.J)},ud:16,Qd:function(e,t){return"double"===t||"i64"===t?7&e&&(assert(4==(7&e)),e+=4):assert(0==(3&e)),e},Ed:function(e,t,r){return r||"i64"!=e&&"double"!=e?e?Math.min(t||(e?n.eb(e):0),n.J):Math.min(t,8):8},L:function(t,r,i){return i&&i.length?(i.splice||(i=Array.prototype.slice.call(i)),i.splice(0,0,r),e["dynCall_"+t].apply(null,i)):e["dynCall_"+t].call(null,r)},Z:[],Xa:function(e){for(var t=0;t>>0)+4294967296*+(t>>>0):+(e>>>0)+4294967296*+(0|t)},Ua:8,J:4,vd:0};e.Runtime=n,n.addFunction=n.Xa,n.removeFunction=n.nb;var na=!1,oa,pa,ka,ra,sa;function assert(e,t){e||x("Assertion failed: "+t)}function qa(a){var b=e["_"+a];if(!b)try{b=eval("_"+a)}catch(e){}return assert(b,"Cannot call unknown function "+a+" (perhaps LLVM optimizations or closure removed it?)"),b}function wa(e,t,r){switch("*"===(r=r||"i8").charAt(r.length-1)&&(r="i32"),r){case"i1":case"i8":y[e>>0]=t;break;case"i16":z[e>>1]=t;break;case"i32":C[e>>2]=t;break;case"i64":pa=[t>>>0,(oa=t,1<=+xa(oa)?0>>0:~~+Aa((oa-+(~~oa>>>0))/4294967296)>>>0:0)],C[e>>2]=pa[0],C[e+4>>2]=pa[1];break;case"float":Ba[e>>2]=t;break;case"double":Ca[e>>3]=t;break;default:x("invalid type for setValue: "+r)}}function Da(e,t){switch("*"===(t=t||"i8").charAt(t.length-1)&&(t="i32"),t){case"i1":case"i8":return y[e>>0];case"i16":return z[e>>1];case"i32":case"i64":return C[e>>2];case"float":return Ba[e>>2];case"double":return Ca[e>>3];default:x("invalid type for setValue: "+t)}return null}function D(e,t,r,i){var o,a;a="number"==typeof e?(o=!0,e):(o=!1,e.length);var s,l,u="string"==typeof t?t:null;if(r=4==r?i:[Ea,n.aa,n.Ra,n.R][void 0===r?2:r](Math.max(a,u?1:t.length)),o){for(assert(0==(3&(i=r))),e=r+(-4&a);i>2]=0;for(e=r+a;i>0]=0;return r}if("i8"===u)return e.subarray||e.slice?E.set(e,r):E.set(new Uint8Array(e),r),r;for(i=0;i>0],0!=i||r)&&(o++,!r||o!=r););if(r||(r=o),i="",n<128){for(;0>10,56320|1023&r)))):s+=String.fromCharCode(r)}}function Ka(e,t,r,i){if(!(0>6}else{if(a<=65535){if(i<=r+2)break;t[r++]=224|a>>12}else{if(a<=2097151){if(i<=r+3)break;t[r++]=240|a>>18}else{if(a<=67108863){if(i<=r+4)break;t[r++]=248|a>>24}else{if(i<=r+5)break;t[r++]=252|a>>30,t[r++]=128|a>>24&63}t[r++]=128|a>>18&63}t[r++]=128|a>>12&63}t[r++]=128|a>>6&63}t[r++]=128|63&a}}return t[r]=0,r-n}function La(e){for(var t=0,r=0;r"):o=n;e:for(;c>0];if(!r)return t;t+=String.fromCharCode(r)}},e.stringToAscii=function(e,t){return Ia(e,t,!1)},e.UTF8ArrayToString=Ja,e.UTF8ToString=function(e){return Ja(E,e)},e.stringToUTF8Array=Ka,e.stringToUTF8=function(e,t,r){return Ka(e,E,t,r)},e.lengthBytesUTF8=La,e.UTF16ToString=function(e){for(var t=0,r="";;){var i=z[e+2*t>>1];if(0==i)return r;++t,r+=String.fromCharCode(i)}},e.stringToUTF16=function(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;var i=t;r=(r-=2)<2*e.length?r/2:e.length;for(var n=0;n>1]=e.charCodeAt(n),t+=2;return z[t>>1]=0,t-i},e.lengthBytesUTF16=function(e){return 2*e.length},e.UTF32ToString=function(e){for(var t=0,r="";;){var i=C[e+4*t>>2];if(0==i)return r;++t,65536<=i?(i-=65536,r+=String.fromCharCode(55296|i>>10,56320|1023&i)):r+=String.fromCharCode(i)}},e.stringToUTF32=function(e,t,r){if(void 0===r&&(r=2147483647),r<4)return 0;var i=t;r=i+r-4;for(var n=0;n>2]=o,r<(t+=4)+4)break}return C[t>>2]=0,t-i},e.lengthBytesUTF32=function(e){for(var t=0,r=0;r>0]=e[r],r+=1}function ta(e,t){for(var r=0;r>0]=e[r]}function Ia(e,t,r){for(var i=0;i>0]=e.charCodeAt(i);r||(y[t>>0]=0)}e.addOnPreRun=fb,e.addOnInit=function(e){cb.unshift(e)},e.addOnPreMain=function(e){db.unshift(e)},e.addOnExit=function(e){H.unshift(e)},e.addOnPostRun=gb,e.intArrayFromString=hb,e.intArrayToString=function(e){for(var t=[],r=0;r>>16)*i+r*(t>>>16)<<16)|0}),Math.Jd=Math.imul,Math.clz32||(Math.clz32=function(e){e>>>=0;for(var t=0;t<32;t++)if(e&1<<31-t)return t;return 32}),Math.Ad=Math.clz32;var xa=Math.abs,Aa=Math.ceil,za=Math.floor,ya=Math.min,I=0,ib=null,jb=null;function kb(){I++,e.monitorRunDependencies&&e.monitorRunDependencies(I)}function lb(){if(I--,e.monitorRunDependencies&&e.monitorRunDependencies(I),0==I&&(null!==ib&&(clearInterval(ib),ib=null),jb)){var t=jb;jb=null,t()}}e.addRunDependency=kb,e.removeRunDependency=lb,e.preloadedImages={},e.preloadedAudios={},Ta=8,la=Ta+5888,cb.push(),D([124,0,0,0,98,7,0,0,124,0,0,0,111,7,0,0,164,0,0,0,124,7,0,0,16,0,0,0,0,0,0,0,164,0,0,0,157,7,0,0,24,0,0,0,0,0,0,0,164,0,0,0,227,7,0,0,24,0,0,0,0,0,0,0,164,0,0,0,191,7,0,0,56,0,0,0,0,0,0,0,164,0,0,0,5,8,0,0,40,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,40,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,88,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,4,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,114,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,0,0,236,1,0,0,236,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,4,0,0,0,239,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,231,16,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,115,40,37,117,41,58,32,65,115,115,101,114,116,105,111,110,32,102,97,105,108,117,114,101,58,32,34,37,115,34,10,0,109,95,115,105,122,101,32,60,61,32,109,95,99,97,112,97,99,105,116,121,0,46,47,99,114,110,95,100,101,99,111,109,112,46,104,0,109,105,110,95,110,101,119,95,99,97,112,97,99,105,116,121,32,60,32,40,48,120,55,70,70,70,48,48,48,48,85,32,47,32,101,108,101,109,101,110,116,95,115,105,122,101,41,0,110,101,119,95,99,97,112,97,99,105,116,121,32,38,38,32,40,110,101,119,95,99,97,112,97,99,105,116,121,32,62,32,109,95,99,97,112,97,99,105,116,121,41,0,110,117,109,95,99,111,100,101,115,91,99,93,0,115,111,114,116,101,100,95,112,111,115,32,60,32,116,111,116,97,108,95,117,115,101,100,95,115,121,109,115,0,112,67,111,100,101,115,105,122,101,115,91,115,121,109,95,105,110,100,101,120,93,32,61,61,32,99,111,100,101,115,105,122,101,0,116,32,60,32,40,49,85,32,60,60,32,116,97,98,108,101,95,98,105,116,115,41,0,109,95,108,111,111,107,117,112,91,116,93,32,61,61,32,99,85,73,78,84,51,50,95,77,65,88,0,99,114,110,100,95,109,97,108,108,111,99,58,32,115,105,122,101,32,116,111,111,32,98,105,103,0,99,114,110,100,95,109,97,108,108,111,99,58,32,111,117,116,32,111,102,32,109,101,109,111,114,121,0,40,40,117,105,110,116,51,50,41,112,95,110,101,119,32,38,32,40,67,82,78,68,95,77,73,78,95,65,76,76,79,67,95,65,76,73,71,78,77,69,78,84,32,45,32,49,41,41,32,61,61,32,48,0,99,114,110,100,95,114,101,97,108,108,111,99,58,32,98,97,100,32,112,116,114,0,99,114,110,100,95,102,114,101,101,58,32,98,97,100,32,112,116,114,0,102,97,108,115,101,0,40,116,111,116,97,108,95,115,121,109,115,32,62,61,32,49,41,32,38,38,32,40,116,111,116,97,108,95,115,121,109,115,32,60,61,32,112,114,101,102,105,120,95,99,111,100,105,110,103,58,58,99,77,97,120,83,117,112,112,111,114,116,101,100,83,121,109,115,41,0,17,18,19,20,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15,16,48,0,110,117,109,95,98,105,116,115,32,60,61,32,51,50,85,0,109,95,98,105,116,95,99,111,117,110,116,32,60,61,32,99,66,105,116,66,117,102,83,105,122,101,0,116,32,33,61,32,99,85,73,78,84,51,50,95,77,65,88,0,109,111,100,101,108,46,109,95,99,111,100,101,95,115,105,122,101,115,91,115,121,109,93,32,61,61,32,108,101,110,0,0,2,3,1,0,2,3,4,5,6,7,1,40,108,101,110,32,62,61,32,49,41,32,38,38,32,40,108,101,110,32,60,61,32,99,77,97,120,69,120,112,101,99,116,101,100,67,111,100,101,83,105,122,101,41,0,105,32,60,32,109,95,115,105,122,101,0,110,101,120,116,95,108,101,118,101,108,95,111,102,115,32,62,32,99,117,114,95,108,101,118,101,108,95,111,102,115,0,1,2,2,3,3,3,3,4,0,0,0,0,0,0,1,1,0,1,0,1,0,0,1,2,1,2,0,0,0,1,0,2,1,0,2,0,0,1,2,3,110,117,109,32,38,38,32,40,110,117,109,32,61,61,32,126,110,117,109,95,99,104,101,99,107,41,0,83,116,57,101,120,99,101,112,116,105,111,110,0,83,116,57,116,121,112,101,95,105,110,102,111,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,57,95,95,112,111,105,110,116,101,114,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,112,98,97,115,101,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,112,116,104,114,101,97,100,95,111,110,99,101,32,102,97,105,108,117,114,101,32,105,110,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,95,102,97,115,116,40,41,0,116,101,114,109,105,110,97,116,101,95,104,97,110,100,108,101,114,32,117,110,101,120,112,101,99,116,101,100,108,121,32,114,101,116,117,114,110,101,100,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,112,116,104,114,101,97,100,32,107,101,121,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,99,97,110,110,111,116,32,122,101,114,111,32,111,117,116,32,116,104,114,101,97,100,32,118,97,108,117,101,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,58,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,102,111,114,101,105,103,110,32,101,120,99,101,112,116,105,111,110,0,116,101,114,109,105,110,97,116,105,110,103,0,117,110,99,97,117,103,104,116,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,46,0],"i8",4,n.Ua);var mb=n.ja(D(12,"i8",2),8);function ob(t){return e.___errno_location&&(C[e.___errno_location()>>2]=t),t}assert(0==mb%8),e._i64Subtract=nb;var J={I:1,F:2,ed:3,bc:4,H:5,Aa:6,vb:7,zc:8,ea:9,Jb:10,va:11,qd:11,Ta:12,da:13,Vb:14,Lc:15,fa:16,wa:17,rd:18,ha:19,ya:20,P:21,q:22,uc:23,Sa:24,Q:25,nd:26,Wb:27,Hc:28,ia:29,bd:30,nc:31,Vc:32,Sb:33,Zc:34,Dc:42,Zb:43,Kb:44,ec:45,fc:46,gc:47,mc:48,od:49,xc:50,dc:51,Pb:35,Ac:37,Bb:52,Eb:53,sd:54,vc:55,Fb:56,Gb:57,Qb:35,Hb:59,Jc:60,yc:61,kd:62,Ic:63,Ec:64,Fc:65,ad:66,Bc:67,yb:68,gd:69,Lb:70,Wc:71,pc:72,Tb:73,Db:74,Qc:76,Cb:77,$c:78,hc:79,ic:80,lc:81,kc:82,jc:83,Kc:38,za:39,qc:36,ga:40,Rc:95,Uc:96,Ob:104,wc:105,zb:97,Yc:91,Oc:88,Gc:92,cd:108,Nb:111,wb:98,Mb:103,tc:101,rc:100,ld:110,Xb:112,Yb:113,ac:115,Ab:114,Rb:89,oc:90,Xc:93,dd:94,xb:99,sc:102,cc:106,Mc:107,md:109,pd:87,Ub:122,hd:116,Pc:95,Cc:123,$b:84,Sc:75,Ib:125,Nc:131,Tc:130,jd:86};function pb(e,t){H.push(function(){n.L("vi",e,[t])}),pb.level=H.length}function tb(){return!!tb.p}e._memset=qb,e._bitshift64Lshr=rb,e._bitshift64Shl=sb;var ub=[],vb={};function wb(e,t){wb.p||(wb.p={}),e in wb.p||(n.L("v",t),wb.p[e]=1)}var xb={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};function yb(e,t){for(var r=0,i=e.length-1;0<=i;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r--;r)e.unshift("..");return e}function zb(e){var t="/"===e.charAt(0),r="/"===e.substr(-1);return(e=yb(e.split("/").filter(function(e){return!!e}),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e}function Ab(e){var t=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1);return e=t[0],t=t[1],e||t?(t&&(t=t.substr(0,t.length-1)),e+t):"."}function Bb(e){if("/"===e)return"/";var t=e.lastIndexOf("/");return-1===t?e:e.substr(t+1)}function Cb(){return zb(Array.prototype.slice.call(arguments,0).join("/"))}function K(e,t){return zb(e+"/"+t)}function Db(){for(var e="",t=!1,r=arguments.length-1;-1<=r&&!t;r--){if("string"!=typeof(t=0<=r?arguments[r]:"/"))throw new TypeError("Arguments to path.resolve must be strings");if(!t)return"";e=t+"/"+e,t="/"===t.charAt(0)}return(t?"/":"")+(e=yb(e.split("/").filter(function(e){return!!e}),!t).join("/"))||"."}var Eb=[];function Fb(e,t){Eb[e]={input:[],output:[],N:t},Gb(e,Hb)}var Hb={open:function(e){var t=Eb[e.g.rdev];if(!t)throw new L(J.ha);e.tty=t,e.seekable=!1},close:function(e){e.tty.N.flush(e.tty)},flush:function(e){e.tty.N.flush(e.tty)},read:function(e,t,r,i){if(!e.tty||!e.tty.N.La)throw new L(J.Aa);for(var n=0,o=0;oe.e.length&&(e.e=M.cb(e),e.o=e.e.length),!e.e||e.e.subarray){var r=e.e?e.e.buffer.byteLength:0;t<=r||(t=Math.max(t,r*(r<1048576?2:1.125)|0),0!=r&&(t=Math.max(t,256)),r=e.e,e.e=new Uint8Array(t),0t)e.e.length=t;else for(;e.e.length=e.g.o)return 0;if(assert(0<=(e=Math.min(e.g.o-n,i))),8>1)}catch(e){if(!e.code)throw e;throw new L(J[e.code])}return t.mode},B:function(e){for(var t=[];e.parent!==e;)t.push(e.name),e=e.parent;return t.push(e.A.pa.root),t.reverse(),Cb.apply(null,t)},Ha:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},$a:function(e){if((e&=-32769)in P.Ha)return P.Ha[e];throw new L(J.q)},k:{D:function(e){var t;e=P.B(e);try{t=fs.lstatSync(e)}catch(e){if(!e.code)throw e;throw new L(J[e.code])}return P.$&&!t.K&&(t.K=4096),P.$&&!t.blocks&&(t.blocks=(t.size+t.K-1)/t.K|0),{dev:t.dev,ino:t.ino,mode:t.mode,nlink:t.nlink,uid:t.uid,gid:t.gid,rdev:t.rdev,size:t.size,atime:t.atime,mtime:t.mtime,ctime:t.ctime,K:t.K,blocks:t.blocks}},u:function(e,t){var r=P.B(e);try{void 0!==t.mode&&(fs.chmodSync(r,t.mode),e.mode=t.mode),void 0!==t.size&&fs.truncateSync(r,t.size)}catch(e){if(!e.code)throw e;throw new L(J[e.code])}},lookup:function(e,t){var r=K(P.B(e),t);r=P.Ja(r);return P.createNode(e,t,r)},T:function(e,t,r,i){e=P.createNode(e,t,r,i),t=P.B(e);try{N(e.mode)?fs.mkdirSync(t,e.mode):fs.writeFileSync(t,"",{mode:e.mode})}catch(e){if(!e.code)throw e;throw new L(J[e.code])}return e},rename:function(e,t,r){e=P.B(e),t=K(P.B(t),r);try{fs.renameSync(e,t)}catch(e){if(!e.code)throw e;throw new L(J[e.code])}},unlink:function(e,t){var r=K(P.B(e),t);try{fs.unlinkSync(r)}catch(e){if(!e.code)throw e;throw new L(J[e.code])}},rmdir:function(e,t){var r=K(P.B(e),t);try{fs.rmdirSync(r)}catch(e){if(!e.code)throw e;throw new L(J[e.code])}},readdir:function(e){e=P.B(e);try{return fs.readdirSync(e)}catch(e){if(!e.code)throw e;throw new L(J[e.code])}},symlink:function(e,t,r){e=K(P.B(e),t);try{fs.symlinkSync(r,e)}catch(e){if(!e.code)throw e;throw new L(J[e.code])}},readlink:function(e){var t=P.B(e);try{return t=fs.readlinkSync(t),t=Ob.relative(Ob.resolve(e.A.pa.root),t)}catch(e){if(!e.code)throw e;throw new L(J[e.code])}}},n:{open:function(e){var t=P.B(e.g);try{32768==(61440&e.g.mode)&&(e.V=fs.openSync(t,P.$a(e.flags)))}catch(e){if(!e.code)throw e;throw new L(J[e.code])}},close:function(e){try{32768==(61440&e.g.mode)&&e.V&&fs.closeSync(e.V)}catch(e){if(!e.code)throw e;throw new L(J[e.code])}},read:function(e,t,r,i,n){if(0===i)return 0;var o,a=new Buffer(i);try{o=fs.readSync(e.V,a,0,i,n)}catch(e){throw new L(J[e.code])}if(0>>0)%Q.length}function Xb(e){var t=Wb(e.parent.id,e.name);e.M=Q[t],Q[t]=e}function Nb(e,t){var r;if(r=(r=Yb(e,"x"))?r:e.k.lookup?0:J.da)throw new L(r,e);for(r=Q[Wb(e.id,t)];r;r=r.M){var i=r.name;if(r.parent.id===e.id&&i===t)return r}return e.k.lookup(e,t)}function Lb(e,t,r,i){return Zb||((Zb=function(e,t,r,i){e||(e=this),this.parent=e,this.A=e.A,this.U=null,this.id=Sb++,this.name=t,this.mode=r,this.k={},this.n={},this.rdev=i}).prototype={},Object.defineProperties(Zb.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(e){e?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(e){e?this.mode|=146:this.mode&=-147}},kb:{get:function(){return N(this.mode)}},jb:{get:function(){return 8192==(61440&this.mode)}}})),Xb(e=new Zb(e,t,r,i)),e}function N(e){return 16384==(61440&e)}var $b={r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218};function Yb(e,t){return Tb?0:(-1===t.indexOf("r")||292&e.mode)&&(-1===t.indexOf("w")||146&e.mode)&&(-1===t.indexOf("x")||73&e.mode)?0:J.da}function ac(e,t){try{return Nb(e,t),J.wa}catch(e){}return Yb(e,"wx")}function bc(){for(var e=0;e<=4096;e++)if(!Rb[e])return e;throw new L(J.Sa)}function cc(e){dc||((dc=function(){}).prototype={},Object.defineProperties(dc.prototype,{object:{get:function(){return this.g},set:function(e){this.g=e}},Ld:{get:function(){return 1!=(2097155&this.flags)}},Md:{get:function(){return 0!=(2097155&this.flags)}},Kd:{get:function(){return 1024&this.flags}}}));var t,r=new dc;for(t in e)r[t]=e[t];return e=r,r=bc(),e.fd=r,Rb[r]=e}var Kb={open:function(e){e.n=Qb[e.g.rdev].n,e.n.open&&e.n.open(e)},G:function(){throw new L(J.ia)}},qc;function Gb(e,t){Qb[e]={n:t}}function ec(e,t){var r,i="/"===t,n=!t;if(i&&Pb)throw new L(J.fa);if(!i&&!n){if(t=(r=S(t,{Ia:!1})).path,(r=r.g).U)throw new L(J.fa);if(!N(r.mode))throw new L(J.ya)}n={type:e,pa:{},Oa:t,lb:[]};var o=e.A(n);(o.A=n).root=o,i?Pb=o:r&&(r.U=n,r.A&&r.A.lb.push(n))}function fc(e,t,r){var i=S(e,{parent:!0}).g;if(!(e=Bb(e))||"."===e||".."===e)throw new L(J.q);var n=ac(i,e);if(n)throw new L(n);if(!i.k.T)throw new L(J.I);return i.k.T(i,e,t,r)}function gc(e,t){return t=4095&(void 0!==t?t:438),fc(e,t|=32768,0)}function V(e,t){return t=1023&(void 0!==t?t:511),fc(e,t|=16384,0)}function hc(e,t,r){return void 0===r&&(r=t,t=438),fc(e,8192|t,r)}function ic(e,t){if(!Db(e))throw new L(J.F);var r=S(t,{parent:!0}).g;if(!r)throw new L(J.F);var i=Bb(t),n=ac(r,i);if(n)throw new L(n);if(!r.k.symlink)throw new L(J.I);return r.k.symlink(r,i,e)}function Vb(e){if(!(e=S(e).g))throw new L(J.F);if(!e.k.readlink)throw new L(J.q);return Db(T(e.parent),e.k.readlink(e))}function jc(e,t){var r;if(!(r="string"==typeof e?S(e,{la:!0}).g:e).k.u)throw new L(J.I);r.k.u(r,{mode:4095&t|-4096&r.mode,timestamp:Date.now()})}function kc(t,r){var i,n,o;if(""===t)throw new L(J.F);if("string"==typeof r){if(void 0===(n=$b[r]))throw Error("Unknown file open mode: "+r)}else n=r;if(i=64&(r=n)?4095&(void 0===i?438:i)|32768:0,"object"==typeof t)o=t;else{t=zb(t);try{o=S(t,{la:!(131072&r)}).g}catch(e){}}if(n=!1,64&r)if(o){if(128&r)throw new L(J.wa)}else o=fc(t,i,0),n=!0;if(!o)throw new L(J.F);if(8192==(61440&o.mode)&&(r&=-513),65536&r&&!N(o.mode))throw new L(J.ya);if(!n&&(i=o?40960==(61440&o.mode)?J.ga:N(o.mode)&&(0!=(2097155&r)||512&r)?J.P:(i=["r","w","rw"][3&r],512&r&&(i+="w"),Yb(o,i)):J.F))throw new L(i);if(512&r){var a;if(!(a="string"==typeof(i=o)?S(i,{la:!0}).g:i).k.u)throw new L(J.I);if(N(a.mode))throw new L(J.P);if(32768!=(61440&a.mode))throw new L(J.q);if(i=Yb(a,"w"))throw new L(i);a.k.u(a,{size:0,timestamp:Date.now()})}r&=-641,(o=cc({g:o,path:T(o),flags:r,seekable:!0,position:0,n:o.n,tb:[],error:!1})).n.open&&o.n.open(o),!e.logReadFiles||1&r||(lc||(lc={}),t in lc||(lc[t]=1,e.printErr("read file: "+t)));try{R.onOpenFile&&(a=0,1!=(2097155&r)&&(a|=1),0!=(2097155&r)&&(a|=2),R.onOpenFile(t,a))}catch(e){console.log("FS.trackingDelegate['onOpenFile']('"+t+"', flags) threw an exception: "+e.message)}return o}function mc(e){e.na&&(e.na=null);try{e.n.close&&e.n.close(e)}catch(e){throw e}finally{Rb[e.fd]=null}}function nc(e,t,r){if(!e.seekable||!e.n.G)throw new L(J.ia);e.position=e.n.G(e,t,r),e.tb=[]}function oc(e,t,r,i,n,o){if(i<0||n<0)throw new L(J.q);if(0==(2097155&e.flags))throw new L(J.ea);if(N(e.g.mode))throw new L(J.P);if(!e.n.write)throw new L(J.q);1024&e.flags&&nc(e,0,2);var a=!0;if(void 0===n)n=e.position,a=!1;else if(!e.seekable)throw new L(J.ia);t=e.n.write(e,t,r,i,n,o),a||(e.position+=t);try{e.path&&R.onWriteToFile&&R.onWriteToFile(e.path)}catch(e){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+e.message)}return t}function pc(){L||((L=function(e,t){this.g=t,this.qb=function(e){for(var t in this.S=e,J)if(J[t]===e){this.code=t;break}},this.qb(e),this.message=xb[e]}).prototype=Error(),L.prototype.constructor=L,[J.F].forEach(function(e){Mb[e]=new L(e),Mb[e].stack=""}))}function rc(e,t){var r=0;return e&&(r|=365),t&&(r|=146),r}function sc(e,t,r,i){return gc(e=K("string"==typeof e?e:T(e),t),rc(r,i))}function tc(e,t,r,i,n,o){if(n=gc(e=t?K("string"==typeof e?e:T(e),t):e,i=rc(i,n)),r){if("string"==typeof r){e=Array(r.length),t=0;for(var a=r.length;t>2]}function xc(){var e;if(e=X(),!(e=Rb[e]))throw new L(J.ea);return e}var yc={};function Ga(e){Ga.p||(r=Qa(r),Ga.p=!0,assert(n.R),Ga.bb=n.R,n.R=function(){x("cannot dynamically allocate, sbrk now has control")});var t=r;return 0==e||Ga.bb(e)?t:4294967295}e._i64Add=zc;var Ac=1;function Cc(e,t){if(Dc=e,Ec=t,!Fc)return 1;if(0==e)Y=function(){setTimeout(Gc,t)},Hc="timeout";else if(1==e)Y=function(){Ic(Gc)},Hc="rAF";else if(2==e){if(!window.setImmediate){var r=[];window.addEventListener("message",function(e){e.source===window&&"__emcc"===e.data&&(e.stopPropagation(),r.shift()())},!0),window.setImmediate=function(e){r.push(e),window.postMessage("__emcc","*")}}Y=function(){window.setImmediate(Gc)},Hc="immediate"}return 0}function Jc(a,t,r,s,i){e.noExitRuntime=!0,assert(!Fc,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."),Fc=a,Kc=s;var l=Lc;if(Gc=function(){if(!na)if(0>r-6&63;r=r-6,e=e+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[n]}2==r?(e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(3&t)<<4],e+="=="):4==r&&(e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(15&t)<<2],e+="="),u.src="data:audio/x-"+a.substr(-3)+";base64,"+e,s(u)}},u.src=n,ad(function(){s(u)})}});var r=e.canvas;r&&(r.sa=r.requestPointerLock||r.mozRequestPointerLock||r.webkitRequestPointerLock||r.msRequestPointerLock||function(){},r.Fa=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},r.Fa=r.Fa.bind(document),document.addEventListener("pointerlockchange",t,!1),document.addEventListener("mozpointerlockchange",t,!1),document.addEventListener("webkitpointerlockchange",t,!1),document.addEventListener("mspointerlockchange",t,!1),e.elementPointerLock&&r.addEventListener("click",function(e){!Tc&&r.sa&&(r.sa(),e.preventDefault())},!1))}}function bd(t,r,i,n){if(r&&e.ka&&t==e.canvas)return e.ka;var o,a;if(r){if(a={antialias:!1,alpha:!1},n)for(var s in n)a[s]=n[s];(a=GL.createContext(t,a))&&(o=GL.getContext(a).td),t.style.backgroundColor="black"}else o=t.getContext("2d");return o?(i&&(r||assert("undefined"==typeof GLctx,"cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),e.ka=o,r&&GL.Od(a),e.Td=r,Uc.forEach(function(e){e()}),Vc()),o):null}var cd=!1,dd=void 0,ed=void 0;function fd(t,r,i){function n(){Sc=!1;var t=o.parentNode;(document.webkitFullScreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.mozFullscreenElement||document.fullScreenElement||document.fullscreenElement||document.msFullScreenElement||document.msFullscreenElement||document.webkitCurrentFullScreenElement)===t?(o.Da=document.cancelFullScreen||document.mozCancelFullScreen||document.webkitCancelFullScreen||document.msExitFullscreen||document.exitFullscreen||function(){},o.Da=o.Da.bind(document),dd&&o.sa(),Sc=!0,ed&&gd()):(t.parentNode.insertBefore(o,t),t.parentNode.removeChild(t),ed&&hd()),e.onFullScreen&&e.onFullScreen(Sc),id(o)}void 0===(dd=t)&&(dd=!0),void 0===(ed=r)&&(ed=!1),void 0===(jd=i)&&(jd=null);var o=e.canvas;cd||(cd=!0,document.addEventListener("fullscreenchange",n,!1),document.addEventListener("mozfullscreenchange",n,!1),document.addEventListener("webkitfullscreenchange",n,!1),document.addEventListener("MSFullscreenChange",n,!1));var a=document.createElement("div");o.parentNode.insertBefore(a,o),a.appendChild(o),a.p=a.requestFullScreen||a.mozRequestFullScreen||a.msRequestFullscreen||(a.webkitRequestFullScreen?function(){a.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),i?a.p({Ud:i}):a.p()}var kd=0;function ld(e){var t=Date.now();if(0===kd)kd=t+1e3/60;else for(;kd<=t+2;)kd+=1e3/60;t=Math.max(kd-t,0),setTimeout(e,t)}function Ic(e){"undefined"==typeof window?ld(e):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||ld),window.requestAnimationFrame(e))}function ad(t){e.noExitRuntime=!0,setTimeout(function(){na||t()},1e4)}function $c(e){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[e.substr(e.lastIndexOf(".")+1)]}function md(e,t,r){var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=function(){200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)}function nd(t,r,e){md(t,function(e){assert(e,'Loading data file "'+t+'" failed (no arrayBuffer).'),r(new Uint8Array(e)),lb()},function(){if(!e)throw'Loading data file "'+t+'" failed.';e()}),kb()}var od=[],Wc,Xc,Yc,Zc,jd;function pd(){var t=e.canvas;od.forEach(function(e){e(t.width,t.height)})}function gd(){if("undefined"!=typeof SDL){var e=Sa[SDL.screen+0*n.J>>2];C[SDL.screen+0*n.J>>2]=8388608|e}pd()}function hd(){if("undefined"!=typeof SDL){var e=Sa[SDL.screen+0*n.J>>2];C[SDL.screen+0*n.J>>2]=-8388609&e}pd()}function id(t,r,i){r&&i?(t.ub=r,t.hb=i):(r=t.ub,i=t.hb);var n=r,o=i;if(e.forcedAspectRatio&&0this.length-1||e<0)){var t=e%this.chunkSize;return this.gb(e/this.chunkSize|0)[t]}},a.prototype.pb=function(e){this.gb=e},a.prototype.Ca=function(){var e=new XMLHttpRequest;if(e.open("HEAD",l,!1),e.send(null),!(200<=e.status&&e.status<300||304===e.status))throw Error("Couldn't load "+l+". Status: "+e.status);var t,o=Number(e.getResponseHeader("Content-length")),a=1048576;(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t||(a=o);var s=this;s.pb(function(e){var t=e*a,r=(e+1)*a-1;r=Math.min(r,o-1);if(void 0===s.Y[e]){var i=s.Y;if(r=(e=e.g.e).length)return 0;if(assert(0<=(i=Math.min(e.length-n,i))),e.slice)for(var o=0;o>2]=0;case 21520:return r.tty?-J.q:-J.Q;case 21531:if(n=X(),!r.n.ib)throw new L(J.Q);return r.n.ib(r,i,n);default:x("bad ioctl syscall "+i)}}catch(e){return void 0!==vc&&e instanceof L||x(e),-e.S}},___syscall6:function(e,t){wc=t;try{return mc(xc()),0}catch(e){return void 0!==vc&&e instanceof L||x(e),-e.S}},_emscripten_set_main_loop_timing:Cc,__ZSt18uncaught_exceptionv:tb,___setErrNo:ob,_sbrk:Ga,___cxa_begin_catch:function(e){var t;tb.p--,ub.push(e);e:{if(e&&!vb[e])for(t in vb)if(vb[t].wd===e)break e;t=e}return t&&vb[t].Sd++,e},_emscripten_memcpy_big:function(e,t,r){return E.set(E.subarray(t,t+r),e),e},_sysconf:function(e){switch(e){case 30:return 4096;case 85:return F/4096;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"==typeof navigator&&navigator.hardwareConcurrency||1}return ob(J.q),-1},_pthread_getspecific:function(e){return yc[e]||0},_pthread_self:function(){return 0},_pthread_once:wb,_pthread_key_create:function(e){return 0==e?J.q:(C[e>>2]=Ac,yc[Ac]=0,Ac++,0)},___unlock:function(){},_emscripten_set_main_loop:Jc,_pthread_setspecific:function(e,t){return e in yc?(yc[e]=t,0):J.q},___lock:function(){},_abort:function(){e.abort()},_pthread_cleanup_push:pb,_time:function(e){var t=Date.now()/1e3|0;return e&&(C[e>>2]=t),t},___syscall140:function(e,t){wc=t;try{var r=xc(),i=X(),n=X(),o=X(),a=X();return assert(0===i),nc(r,n,a),C[o>>2]=r.position,r.na&&0===n&&0===a&&(r.na=null),0}catch(e){return void 0!==vc&&e instanceof L||x(e),-e.S}},___syscall146:function(e,t){wc=t;try{var r,i=xc(),n=X();e:{for(var o=X(),a=0,s=0;s>2],C[n+(8*s+4)>>2],void 0);if(l<0){r=-1;break e}a+=l}r=a}return r}catch(e){return void 0!==vc&&e instanceof L||x(e),-e.S}},STACKTOP:m,STACK_MAX:Va,tempDoublePtr:mb,ABORT:na,cttz_i8:qd};var Z=function(e,t,r){"use asm";var i=e.Int8Array;var n=e.Int16Array;var o=e.Int32Array;var a=e.Uint8Array;var s=e.Uint16Array;var l=e.Uint32Array;var u=e.Float32Array;var h=e.Float64Array;var pe=new i(r);var $=new n(r);var de=new o(r);var me=new a(r);var ge=new s(r);var c=new l(r);var f=new u(r);var ee=new h(r);var p=e.byteLength;var ve=t.STACKTOP|0;var d=t.STACK_MAX|0;var te=t.tempDoublePtr|0;var m=t.ABORT|0;var g=t.cttz_i8|0;var v=0;var _=0;var y=0;var b=0;var x=e.NaN,w=e.Infinity;var T=0,k=0,S=0,P=0,E=0.0,C=0,A=0,I=0,O=0.0;var re=0;var M=0;var D=0;var R=0;var z=0;var F=0;var L=0;var j=0;var N=0;var B=0;var U=e.Math.floor;var X=e.Math.abs;var H=e.Math.sqrt;var W=e.Math.pow;var q=e.Math.cos;var G=e.Math.sin;var V=e.Math.tan;var Y=e.Math.acos;var Z=e.Math.asin;var J=e.Math.atan;var K=e.Math.atan2;var Q=e.Math.exp;var ie=e.Math.log;var ne=e.Math.ceil;var _e=e.Math.imul;var oe=e.Math.min;var ae=e.Math.clz32;var se=t.abort;var le=t.assert;var ue=t.invoke_iiii;var he=t.invoke_viiiii;var ce=t.invoke_vi;var fe=t.invoke_ii;var ye=t.invoke_viii;var be=t.invoke_v;var xe=t.invoke_viiiiii;var we=t.invoke_iiiiii;var Te=t.invoke_viiii;var ke=t._pthread_cleanup_pop;var Se=t.___syscall54;var Pe=t.___syscall6;var Ee=t._emscripten_set_main_loop_timing;var Ce=t.__ZSt18uncaught_exceptionv;var Ae=t.___setErrNo;var Ie=t._sbrk;var Oe=t.___cxa_begin_catch;var Me=t._emscripten_memcpy_big;var De=t._sysconf;var Re=t._pthread_getspecific;var ze=t._pthread_self;var Fe=t._pthread_once;var Le=t._pthread_key_create;var je=t.___unlock;var Ne=t._emscripten_set_main_loop;var Be=t._pthread_setspecific;var Ue=t.___lock;var Xe=t._abort;var He=t._pthread_cleanup_push;var We=t._time;var qe=t.___syscall140;var Ge=t.___syscall146;var Ve=0.0;function Ye(e){if(p(e)&16777215||p(e)<=16777215||p(e)>2147483648)return false;pe=new i(e);$=new n(e);de=new o(e);me=new a(e);ge=new s(e);c=new l(e);f=new u(e);ee=new h(e);r=e;return true}function Ze(e){e=e|0;var t=0;t=ve;ve=ve+e|0;ve=ve+15&-16;return t|0}function Je(){return ve|0}function Ke(e){e=e|0;ve=e}function Qe(e,t){e=e|0;t=t|0;ve=e;d=t}function $e(e,t){e=e|0;t=t|0;if(!v){v=e;_=t}}function et(e){e=e|0;pe[te>>0]=pe[e>>0];pe[te+1>>0]=pe[e+1>>0];pe[te+2>>0]=pe[e+2>>0];pe[te+3>>0]=pe[e+3>>0]}function tt(e){e=e|0;pe[te>>0]=pe[e>>0];pe[te+1>>0]=pe[e+1>>0];pe[te+2>>0]=pe[e+2>>0];pe[te+3>>0]=pe[e+3>>0];pe[te+4>>0]=pe[e+4>>0];pe[te+5>>0]=pe[e+5>>0];pe[te+6>>0]=pe[e+6>>0];pe[te+7>>0]=pe[e+7>>0]}function rt(e){e=e|0;re=e}function it(){return re|0}function nt(e,t,r,i,n){e=e|0;t=t|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0;m=ve;ve=ve+608|0;f=m+88|0;c=m+72|0;l=m+64|0;s=m+48|0;a=m+24|0;o=m;h=m+96|0;p=m+92|0;u=e+4|0;d=e+8|0;if((de[u>>2]|0)>>>0>(de[d>>2]|0)>>>0){de[o>>2]=1154;de[o+4>>2]=2120;de[o+8>>2]=1133;br(h,1100,o)|0;yr(h,m+16|0)|0}if((2147418112/(i>>>0)|0)>>>0<=t>>>0){de[a>>2]=1154;de[a+4>>2]=2121;de[a+8>>2]=1169;br(h,1100,a)|0;yr(h,m+40|0)|0}a=de[d>>2]|0;if(a>>>0>=t>>>0){d=1;ve=m;return d|0}do{if(r){if(t){o=t+-1|0;if(!(o&t)){o=11;break}else t=o}else t=-1;t=t>>>16|t;t=t>>>8|t;t=t>>>4|t;t=t>>>2|t;t=(t>>>1|t)+1|0;o=10}else o=10}while(0);if((o|0)==10)if(!t){t=0;o=12}else o=11;if((o|0)==11)if(t>>>0<=a>>>0)o=12;if((o|0)==12){de[s>>2]=1154;de[s+4>>2]=2130;de[s+8>>2]=1217;br(h,1100,s)|0;yr(h,l)|0}r=_e(t,i)|0;do{if(!n){o=ot(de[e>>2]|0,r,p,1)|0;if(!o){d=0;ve=m;return d|0}else{de[e>>2]=o;break}}else{a=at(r,p)|0;if(!a){d=0;ve=m;return d|0}Ii[n&0](a,de[e>>2]|0,de[u>>2]|0);o=de[e>>2]|0;do{if(o)if(!(o&7)){Di[de[104>>2]&1](o,0,0,1,de[27]|0)|0;break}else{de[c>>2]=1154;de[c+4>>2]=2499;de[c+8>>2]=1516;br(h,1100,c)|0;yr(h,f)|0;break}}while(0);de[e>>2]=a}}while(0);o=de[p>>2]|0;if(o>>>0>r>>>0)t=(o>>>0)/(i>>>0)|0;de[d>>2]=t;d=1;ve=m;return d|0}function ot(e,t,r,i){e=e|0;t=t|0;r=r|0;i=i|0;var n=0,o=0,a=0,s=0,l=0,u=0;u=ve;ve=ve+592|0;l=u+48|0;o=u+24|0;n=u;s=u+72|0;a=u+68|0;if(e&7){de[n>>2]=1154;de[n+4>>2]=2499;de[n+8>>2]=1494;br(s,1100,n)|0;yr(s,u+16|0)|0;l=0;ve=u;return l|0}if(t>>>0>2147418112){de[o>>2]=1154;de[o+4>>2]=2499;de[o+8>>2]=1387;br(s,1100,o)|0;yr(s,u+40|0)|0;l=0;ve=u;return l|0}de[a>>2]=t;i=Di[de[104>>2]&1](e,t,a,i,de[27]|0)|0;if(r)de[r>>2]=de[a>>2];if(!(i&7)){l=i;ve=u;return l|0}de[l>>2]=1154;de[l+4>>2]=2551;de[l+8>>2]=1440;br(s,1100,l)|0;yr(s,u+64|0)|0;l=i;ve=u;return l|0}function at(e,t){e=e|0;t=t|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0;l=ve;ve=ve+592|0;a=l+48|0;s=l+24|0;r=l;o=l+72|0;n=l+68|0;i=e+3&-4;i=(i|0)!=0?i:4;if(i>>>0>2147418112){de[r>>2]=1154;de[r+4>>2]=2499;de[r+8>>2]=1387;br(o,1100,r)|0;yr(o,l+16|0)|0;s=0;ve=l;return s|0}de[n>>2]=i;r=Di[de[104>>2]&1](0,i,n,1,de[27]|0)|0;e=de[n>>2]|0;if(t)de[t>>2]=e;if((r|0)==0|e>>>0>>0){de[s>>2]=1154;de[s+4>>2]=2499;de[s+8>>2]=1413;br(o,1100,s)|0;yr(o,l+40|0)|0;s=0;ve=l;return s|0}if(!(r&7)){s=r;ve=l;return s|0}de[a>>2]=1154;de[a+4>>2]=2526;de[a+8>>2]=1440;br(o,1100,a)|0;yr(o,l+64|0)|0;s=r;ve=l;return s|0}function st(e,t,r,i){e=e|0;t=t|0;r=r|0;i=i|0;var n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,E=0,C=0,A=0,I=0,O=0,M=0,D=0,R=0,z=0,F=0,L=0,j=0;j=ve;ve=ve+960|0;z=j+232|0;R=j+216|0;D=j+208|0;M=j+192|0;O=j+184|0;I=j+168|0;A=j+160|0;C=j+144|0;S=j+136|0;k=j+120|0;T=j+112|0;w=j+96|0;y=j+88|0;_=j+72|0;v=j+64|0;g=j+48|0;c=j+40|0;p=j+24|0;f=j+16|0;h=j;E=j+440|0;F=j+376|0;L=j+304|0;m=j+236|0;if((t|0)==0|i>>>0>11){e=0;ve=j;return e|0}de[e>>2]=t;n=L;o=n+68|0;do{de[n>>2]=0;n=n+4|0}while((n|0)<(o|0));o=0;do{n=pe[r+o>>0]|0;if(n<<24>>24){P=L+((n&255)<<2)|0;de[P>>2]=(de[P>>2]|0)+1}o=o+1|0}while((o|0)!=(t|0));o=0;u=1;a=0;s=-1;l=0;while(1){n=de[L+(u<<2)>>2]|0;if(!n)de[e+28+(u+-1<<2)>>2]=0;else{P=u+-1|0;de[F+(P<<2)>>2]=o;o=n+o|0;x=16-u|0;de[e+28+(P<<2)>>2]=(o+-1<>2]=l;de[m+(u<<2)>>2]=l;a=a>>>0>u>>>0?a:u;s=s>>>0>>0?s:u;l=n+l|0}u=u+1|0;if((u|0)==17){P=a;break}else o=o<<1}de[e+4>>2]=l;o=e+172|0;do{if(l>>>0>(de[o>>2]|0)>>>0){de[o>>2]=l;if(l){n=l+-1|0;if(n&l)d=14}else{n=-1;d=14}if((d|0)==14){x=n>>>16|n;x=x>>>8|x;x=x>>>4|x;x=x>>>2|x;x=(x>>>1|x)+1|0;de[o>>2]=x>>>0>t>>>0?t:x}a=e+176|0;n=de[a>>2]|0;do{if(n){x=de[n+-4>>2]|0;n=n+-8|0;if(!((x|0)!=0?(x|0)==(~de[n>>2]|0):0)){de[h>>2]=1154;de[h+4>>2]=644;de[h+8>>2]=1863;br(E,1100,h)|0;yr(E,f)|0}if(!(n&7)){Di[de[104>>2]&1](n,0,0,1,de[27]|0)|0;break}else{de[p>>2]=1154;de[p+4>>2]=2499;de[p+8>>2]=1516;br(E,1100,p)|0;yr(E,c)|0;break}}}while(0);o=de[o>>2]|0;o=(o|0)!=0?o:1;n=at((o<<1)+8|0,0)|0;if(!n){de[a>>2]=0;n=0;break}else{de[n+4>>2]=o;de[n>>2]=~o;de[a>>2]=n+8;d=25;break}}else d=25}while(0);e:do{if((d|0)==25){x=e+24|0;pe[x>>0]=s;pe[e+25>>0]=P;o=e+176|0;a=0;do{b=pe[r+a>>0]|0;n=b&255;if(b<<24>>24){if(!(de[L+(n<<2)>>2]|0)){de[g>>2]=1154;de[g+4>>2]=2273;de[g+8>>2]=1261;br(E,1100,g)|0;yr(E,v)|0}b=m+(n<<2)|0;n=de[b>>2]|0;de[b>>2]=n+1;if(n>>>0>=l>>>0){de[_>>2]=1154;de[_+4>>2]=2277;de[_+8>>2]=1274;br(E,1100,_)|0;yr(E,y)|0}$[(de[o>>2]|0)+(n<<1)>>1]=a}a=a+1|0}while((a|0)!=(t|0));n=pe[x>>0]|0;y=(n&255)>>>0>>0?i:0;b=e+8|0;de[b>>2]=y;_=(y|0)!=0;if(_){v=1<>>0>(de[n>>2]|0)>>>0){de[n>>2]=v;a=e+168|0;n=de[a>>2]|0;do{if(n){g=de[n+-4>>2]|0;n=n+-8|0;if(!((g|0)!=0?(g|0)==(~de[n>>2]|0):0)){de[w>>2]=1154;de[w+4>>2]=644;de[w+8>>2]=1863;br(E,1100,w)|0;yr(E,T)|0}if(!(n&7)){Di[de[104>>2]&1](n,0,0,1,de[27]|0)|0;break}else{de[k>>2]=1154;de[k+4>>2]=2499;de[k+8>>2]=1516;br(E,1100,k)|0;yr(E,S)|0;break}}}while(0);n=v<<2;o=at(n+8|0,0)|0;if(!o){de[a>>2]=0;n=0;break e}else{S=o+8|0;de[o+4>>2]=v;de[o>>2]=~v;de[a>>2]=S;o=S;break}}else{o=e+168|0;n=v<<2;a=o;o=de[o>>2]|0}}while(0);Yr(o|0,-1,n|0)|0;d=e+176|0;g=1;do{if(de[L+(g<<2)>>2]|0){t=y-g|0;m=1<>2]|0;if(o>>>0>=16){de[C>>2]=1154;de[C+4>>2]=1953;de[C+8>>2]=1737;br(E,1100,C)|0;yr(E,A)|0}n=de[e+28+(o<<2)>>2]|0;if(!n)p=-1;else p=(n+-1|0)>>>(16-g|0);if(s>>>0<=p>>>0){c=(de[e+96+(o<<2)>>2]|0)-s|0;f=g<<16;do{n=ge[(de[d>>2]|0)+(c+s<<1)>>1]|0;if((me[r+n>>0]|0|0)!=(g|0)){de[I>>2]=1154;de[I+4>>2]=2319;de[I+8>>2]=1303;br(E,1100,I)|0;yr(E,O)|0}h=s<>>0>=v>>>0){de[M>>2]=1154;de[M+4>>2]=2325;de[M+8>>2]=1337;br(E,1100,M)|0;yr(E,D)|0}n=de[a>>2]|0;if((de[n+(l<<2)>>2]|0)!=-1){de[R>>2]=1154;de[R+4>>2]=2327;de[R+8>>2]=1360;br(E,1100,R)|0;yr(E,z)|0;n=de[a>>2]|0}de[n+(l<<2)>>2]=o;u=u+1|0}while(u>>>0>>0);s=s+1|0}while(s>>>0<=p>>>0)}}g=g+1|0}while(y>>>0>=g>>>0);n=pe[x>>0]|0}o=e+96|0;de[o>>2]=(de[o>>2]|0)-(de[F>>2]|0);o=e+100|0;de[o>>2]=(de[o>>2]|0)-(de[F+4>>2]|0);o=e+104|0;de[o>>2]=(de[o>>2]|0)-(de[F+8>>2]|0);o=e+108|0;de[o>>2]=(de[o>>2]|0)-(de[F+12>>2]|0);o=e+112|0;de[o>>2]=(de[o>>2]|0)-(de[F+16>>2]|0);o=e+116|0;de[o>>2]=(de[o>>2]|0)-(de[F+20>>2]|0);o=e+120|0;de[o>>2]=(de[o>>2]|0)-(de[F+24>>2]|0);o=e+124|0;de[o>>2]=(de[o>>2]|0)-(de[F+28>>2]|0);o=e+128|0;de[o>>2]=(de[o>>2]|0)-(de[F+32>>2]|0);o=e+132|0;de[o>>2]=(de[o>>2]|0)-(de[F+36>>2]|0);o=e+136|0;de[o>>2]=(de[o>>2]|0)-(de[F+40>>2]|0);o=e+140|0;de[o>>2]=(de[o>>2]|0)-(de[F+44>>2]|0);o=e+144|0;de[o>>2]=(de[o>>2]|0)-(de[F+48>>2]|0);o=e+148|0;de[o>>2]=(de[o>>2]|0)-(de[F+52>>2]|0);o=e+152|0;de[o>>2]=(de[o>>2]|0)-(de[F+56>>2]|0);o=e+156|0;de[o>>2]=(de[o>>2]|0)-(de[F+60>>2]|0);o=e+16|0;de[o>>2]=0;a=e+20|0;de[a>>2]=n&255;t:do{if(_){while(1){if(!i)break t;n=i+-1|0;if(!(de[L+(i<<2)>>2]|0))i=n;else break}de[o>>2]=de[e+28+(n<<2)>>2];n=y+1|0;de[a>>2]=n;if(n>>>0<=P>>>0){while(1){if(de[L+(n<<2)>>2]|0)break;n=n+1|0;if(n>>>0>P>>>0)break t}de[a>>2]=n}}}while(0);de[e+92>>2]=-1;de[e+160>>2]=1048575;de[e+12>>2]=32-(de[b>>2]|0);n=1}}while(0);e=n;ve=j;return e|0}function lt(e,t,r,i,n){e=e|0;t=t|0;r=r|0;i=i|0;n=n|0;var o=0;if(!e){n=Br(t)|0;if(!r){r=n;return r|0}if(!n)o=0;else o=Hr(n)|0;de[r>>2]=o;r=n;return r|0}if(!t){Ur(e);if(!r){r=0;return r|0}de[r>>2]=0;r=0;return r|0}n=Xr(e,t)|0;o=(n|0)!=0;if(o|i^1)o=o?n:e;else{n=Xr(e,t)|0;o=(n|0)==0?e:n}if(!r){r=n;return r|0}t=Hr(o)|0;de[r>>2]=t;r=n;return r|0}function ut(e,t,r){e=e|0;t=t|0;r=r|0;var i=0;if(!((e|0)!=0&t>>>0>73&(r|0)!=0)){r=0;return r|0}if((de[r>>2]|0)!=40|t>>>0<74){r=0;return r|0}if(((me[e>>0]|0)<<8|(me[e+1>>0]|0)|0)!=18552){r=0;return r|0}if(((me[e+2>>0]|0)<<8|(me[e+3>>0]|0))>>>0<74){r=0;return r|0}if(((me[e+7>>0]|0)<<16|(me[e+6>>0]|0)<<24|(me[e+8>>0]|0)<<8|(me[e+9>>0]|0))>>>0>t>>>0){r=0;return r|0}de[r+4>>2]=(me[e+12>>0]|0)<<8|(me[e+13>>0]|0);de[r+8>>2]=(me[e+14>>0]|0)<<8|(me[e+15>>0]|0);de[r+12>>2]=me[e+16>>0];de[r+16>>2]=me[e+17>>0];t=e+18|0;i=r+32|0;de[i>>2]=me[t>>0];de[i+4>>2]=0;t=pe[t>>0]|0;de[r+20>>2]=t<<24>>24==0|t<<24>>24==9?8:16;de[r+24>>2]=(me[e+26>>0]|0)<<16|(me[e+25>>0]|0)<<24|(me[e+27>>0]|0)<<8|(me[e+28>>0]|0);de[r+28>>2]=(me[e+30>>0]|0)<<16|(me[e+29>>0]|0)<<24|(me[e+31>>0]|0)<<8|(me[e+32>>0]|0);r=1;return r|0}function ht(e){e=e|0;Oe(e|0)|0;Ut()}function ct(e){e=e|0;var t=0,r=0,i=0,n=0,o=0;o=ve;ve=ve+544|0;n=o;i=o+24|0;t=de[e+20>>2]|0;if(t)ft(t);t=e+4|0;r=de[t>>2]|0;if(!r){n=e+16|0;pe[n>>0]=0;ve=o;return}if(!(r&7))Di[de[104>>2]&1](r,0,0,1,de[27]|0)|0;else{de[n>>2]=1154;de[n+4>>2]=2499;de[n+8>>2]=1516;br(i,1100,n)|0;yr(i,o+16|0)|0}de[t>>2]=0;de[e+8>>2]=0;de[e+12>>2]=0;n=e+16|0;pe[n>>0]=0;ve=o;return}function ft(e){e=e|0;var t=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0;p=ve;ve=ve+640|0;f=p+112|0;c=p+96|0;h=p+88|0;u=p+72|0;l=p+64|0;s=p+48|0;i=p+40|0;o=p+24|0;n=p+16|0;r=p;a=p+120|0;if(!e){ve=p;return}t=de[e+168>>2]|0;do{if(t){d=de[t+-4>>2]|0;t=t+-8|0;if(!((d|0)!=0?(d|0)==(~de[t>>2]|0):0)){de[r>>2]=1154;de[r+4>>2]=644;de[r+8>>2]=1863;br(a,1100,r)|0;yr(a,n)|0}if(!(t&7)){Di[de[104>>2]&1](t,0,0,1,de[27]|0)|0;break}else{de[o>>2]=1154;de[o+4>>2]=2499;de[o+8>>2]=1516;br(a,1100,o)|0;yr(a,i)|0;break}}}while(0);t=de[e+176>>2]|0;do{if(t){d=de[t+-4>>2]|0;t=t+-8|0;if(!((d|0)!=0?(d|0)==(~de[t>>2]|0):0)){de[s>>2]=1154;de[s+4>>2]=644;de[s+8>>2]=1863;br(a,1100,s)|0;yr(a,l)|0}if(!(t&7)){Di[de[104>>2]&1](t,0,0,1,de[27]|0)|0;break}else{de[u>>2]=1154;de[u+4>>2]=2499;de[u+8>>2]=1516;br(a,1100,u)|0;yr(a,h)|0;break}}}while(0);if(!(e&7)){Di[de[104>>2]&1](e,0,0,1,de[27]|0)|0;ve=p;return}else{de[c>>2]=1154;de[c+4>>2]=2499;de[c+8>>2]=1516;br(a,1100,c)|0;yr(a,f)|0;ve=p;return}}function pt(e){e=e|0;var t=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0;h=ve;ve=ve+560|0;a=h+40|0;s=h+24|0;t=h;o=h+48|0;n=e+8|0;r=de[n>>2]|0;if((r+-1|0)>>>0>=8192){de[t>>2]=1154;de[t+4>>2]=2997;de[t+8>>2]=1541;br(o,1100,t)|0;yr(o,h+16|0)|0}de[e>>2]=r;i=e+20|0;t=de[i>>2]|0;if(!t){t=at(180,0)|0;if(!t)t=0;else{u=t+164|0;de[u>>2]=0;de[u+4>>2]=0;de[u+8>>2]=0;de[u+12>>2]=0}de[i>>2]=t;u=t;l=de[e>>2]|0}else{u=t;l=r}if(!(de[n>>2]|0)){de[s>>2]=1154;de[s+4>>2]=903;de[s+8>>2]=1781;br(o,1100,s)|0;yr(o,a)|0;o=de[e>>2]|0}else o=l;n=de[e+4>>2]|0;if(o>>>0>16){r=o;t=0}else{e=0;u=st(u,l,n,e)|0;ve=h;return u|0}while(1){i=t+1|0;if(r>>>0>3){r=r>>>1;t=i}else{r=i;break}}e=t+2+((r|0)!=32&1<>>0>>0&1)|0;e=e>>>0<11?e&255:11;u=st(u,l,n,e)|0;ve=h;return u|0}function dt(e,t){e=e|0;t=t|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,E=0,C=0,A=0,I=0,O=0,M=0,D=0,R=0,z=0;z=ve;ve=ve+800|0;I=z+256|0;A=z+240|0;C=z+232|0;E=z+216|0;P=z+208|0;S=z+192|0;k=z+184|0;T=z+168|0;w=z+160|0;x=z+144|0;b=z+136|0;y=z+120|0;_=z+112|0;v=z+96|0;g=z+88|0;m=z+72|0;c=z+64|0;h=z+48|0;s=z+40|0;l=z+24|0;o=z+16|0;n=z;D=z+288|0;R=z+264|0;O=mt(e,14)|0;if(!O){de[t>>2]=0;r=t+4|0;i=de[r>>2]|0;if(i){if(!(i&7))Di[de[104>>2]&1](i,0,0,1,de[27]|0)|0;else{de[n>>2]=1154;de[n+4>>2]=2499;de[n+8>>2]=1516;br(D,1100,n)|0;yr(D,o)|0}de[r>>2]=0;de[t+8>>2]=0;de[t+12>>2]=0}pe[t+16>>0]=0;r=t+20|0;i=de[r>>2]|0;if(!i){t=1;ve=z;return t|0}ft(i);de[r>>2]=0;t=1;ve=z;return t|0}p=t+4|0;d=t+8|0;r=de[d>>2]|0;if((r|0)!=(O|0)){if(r>>>0<=O>>>0){do{if((de[t+12>>2]|0)>>>0>>0){if(nt(p,O,(r+1|0)==(O|0),1,0)|0){r=de[d>>2]|0;break}pe[t+16>>0]=1;t=0;ve=z;return t|0}}while(0);Yr((de[p>>2]|0)+r|0,0,O-r|0)|0}de[d>>2]=O}Yr(de[p>>2]|0,0,O|0)|0;f=e+20|0;r=de[f>>2]|0;if((r|0)<5){o=e+4|0;a=e+8|0;n=e+16|0;do{i=de[o>>2]|0;if((i|0)==(de[a>>2]|0))i=0;else{de[o>>2]=i+1;i=me[i>>0]|0}r=r+8|0;de[f>>2]=r;if((r|0)>=33){de[l>>2]=1154;de[l+4>>2]=3199;de[l+8>>2]=1650;br(D,1100,l)|0;yr(D,s)|0;r=de[f>>2]|0}i=i<<32-r|de[n>>2];de[n>>2]=i}while((r|0)<5)}else{i=e+16|0;n=i;i=de[i>>2]|0}u=i>>>27;de[n>>2]=i<<5;de[f>>2]=r+-5;if((u+-1|0)>>>0>20){t=0;ve=z;return t|0}de[R+20>>2]=0;de[R>>2]=0;de[R+4>>2]=0;de[R+8>>2]=0;de[R+12>>2]=0;pe[R+16>>0]=0;r=R+4|0;i=R+8|0;e:do{if(nt(r,21,0,1,0)|0){s=de[i>>2]|0;l=de[r>>2]|0;Yr(l+s|0,0,21-s|0)|0;de[i>>2]=21;if(u){n=e+4|0;o=e+8|0;a=e+16|0;s=0;do{r=de[f>>2]|0;if((r|0)<3)do{i=de[n>>2]|0;if((i|0)==(de[o>>2]|0))i=0;else{de[n>>2]=i+1;i=me[i>>0]|0}r=r+8|0;de[f>>2]=r;if((r|0)>=33){de[h>>2]=1154;de[h+4>>2]=3199;de[h+8>>2]=1650;br(D,1100,h)|0;yr(D,c)|0;r=de[f>>2]|0}i=i<<32-r|de[a>>2];de[a>>2]=i}while((r|0)<3);else i=de[a>>2]|0;de[a>>2]=i<<3;de[f>>2]=r+-3;pe[l+(me[1611+s>>0]|0)>>0]=i>>>29;s=s+1|0}while((s|0)!=(u|0))}if(pt(R)|0){s=e+4|0;l=e+8|0;u=e+16|0;i=0;t:while(1){a=O-i|0;r=gt(e,R)|0;r:do{if(r>>>0<17){if((de[d>>2]|0)>>>0<=i>>>0){de[m>>2]=1154;de[m+4>>2]=903;de[m+8>>2]=1781;br(D,1100,m)|0;yr(D,g)|0}pe[(de[p>>2]|0)+i>>0]=r;r=i+1|0}else switch(r|0){case 17:{r=de[f>>2]|0;if((r|0)<3)do{n=de[s>>2]|0;if((n|0)==(de[l>>2]|0))n=0;else{de[s>>2]=n+1;n=me[n>>0]|0}r=r+8|0;de[f>>2]=r;if((r|0)>=33){de[v>>2]=1154;de[v+4>>2]=3199;de[v+8>>2]=1650;br(D,1100,v)|0;yr(D,_)|0;r=de[f>>2]|0}n=n<<32-r|de[u>>2];de[u>>2]=n}while((r|0)<3);else n=de[u>>2]|0;de[u>>2]=n<<3;de[f>>2]=r+-3;r=(n>>>29)+3|0;if(r>>>0>a>>>0){r=0;break e}r=r+i|0;break r}case 18:{r=de[f>>2]|0;if((r|0)<7)do{n=de[s>>2]|0;if((n|0)==(de[l>>2]|0))n=0;else{de[s>>2]=n+1;n=me[n>>0]|0}r=r+8|0;de[f>>2]=r;if((r|0)>=33){de[y>>2]=1154;de[y+4>>2]=3199;de[y+8>>2]=1650;br(D,1100,y)|0;yr(D,b)|0;r=de[f>>2]|0}n=n<<32-r|de[u>>2];de[u>>2]=n}while((r|0)<7);else n=de[u>>2]|0;de[u>>2]=n<<7;de[f>>2]=r+-7;r=(n>>>25)+11|0;if(r>>>0>a>>>0){r=0;break e}r=r+i|0;break r}default:{if((r+-19|0)>>>0>=2){M=90;break t}o=de[f>>2]|0;if((r|0)==19){if((o|0)<2){n=o;while(1){r=de[s>>2]|0;if((r|0)==(de[l>>2]|0))o=0;else{de[s>>2]=r+1;o=me[r>>0]|0}r=n+8|0;de[f>>2]=r;if((r|0)>=33){de[x>>2]=1154;de[x+4>>2]=3199;de[x+8>>2]=1650;br(D,1100,x)|0;yr(D,w)|0;r=de[f>>2]|0}n=o<<32-r|de[u>>2];de[u>>2]=n;if((r|0)<2)n=r;else break}}else{n=de[u>>2]|0;r=o}de[u>>2]=n<<2;de[f>>2]=r+-2;o=(n>>>30)+3|0}else{if((o|0)<6){n=o;while(1){r=de[s>>2]|0;if((r|0)==(de[l>>2]|0))o=0;else{de[s>>2]=r+1;o=me[r>>0]|0}r=n+8|0;de[f>>2]=r;if((r|0)>=33){de[T>>2]=1154;de[T+4>>2]=3199;de[T+8>>2]=1650;br(D,1100,T)|0;yr(D,k)|0;r=de[f>>2]|0}n=o<<32-r|de[u>>2];de[u>>2]=n;if((r|0)<6)n=r;else break}}else{n=de[u>>2]|0;r=o}de[u>>2]=n<<6;de[f>>2]=r+-6;o=(n>>>26)+7|0}if((i|0)==0|o>>>0>a>>>0){r=0;break e}r=i+-1|0;if((de[d>>2]|0)>>>0<=r>>>0){de[S>>2]=1154;de[S+4>>2]=903;de[S+8>>2]=1781;br(D,1100,S)|0;yr(D,P)|0}n=pe[(de[p>>2]|0)+r>>0]|0;if(!(n<<24>>24)){r=0;break e}r=o+i|0;if(i>>>0>=r>>>0){r=i;break r}do{if((de[d>>2]|0)>>>0<=i>>>0){de[E>>2]=1154;de[E+4>>2]=903;de[E+8>>2]=1781;br(D,1100,E)|0;yr(D,C)|0}pe[(de[p>>2]|0)+i>>0]=n;i=i+1|0}while((i|0)!=(r|0))}}}while(0);if(O>>>0>r>>>0)i=r;else break}if((M|0)==90){de[A>>2]=1154;de[A+4>>2]=3140;de[A+8>>2]=1632;br(D,1100,A)|0;yr(D,I)|0;r=0;break}if((O|0)==(r|0))r=pt(t)|0;else r=0}else r=0}else{pe[R+16>>0]=1;r=0}}while(0);ct(R);t=r;ve=z;return t|0}function mt(e,t){e=e|0;t=t|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0;h=ve;ve=ve+544|0;s=h+16|0;a=h;o=h+24|0;if(!t){u=0;ve=h;return u|0}if(t>>>0<=16){u=vt(e,t)|0;ve=h;return u|0}l=vt(e,t+-16|0)|0;u=e+20|0;t=de[u>>2]|0;if((t|0)<16){i=e+4|0;n=e+8|0;r=e+16|0;do{e=de[i>>2]|0;if((e|0)==(de[n>>2]|0))e=0;else{de[i>>2]=e+1;e=me[e>>0]|0}t=t+8|0;de[u>>2]=t;if((t|0)>=33){de[a>>2]=1154;de[a+4>>2]=3199;de[a+8>>2]=1650;br(o,1100,a)|0;yr(o,s)|0;t=de[u>>2]|0}e=e<<32-t|de[r>>2];de[r>>2]=e}while((t|0)<16)}else{e=e+16|0;r=e;e=de[e>>2]|0}de[r>>2]=e<<16;de[u>>2]=t+-16;u=e>>>16|l<<16;ve=h;return u|0}function gt(e,t){e=e|0;t=t|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0;y=ve;ve=ve+608|0;m=y+88|0;d=y+72|0;f=y+64|0;c=y+48|0;h=y+40|0;p=y+24|0;u=y+16|0;l=y;v=y+96|0;g=de[t+20>>2]|0;_=e+20|0;s=de[_>>2]|0;do{if((s|0)<24){a=e+4|0;i=de[a>>2]|0;n=de[e+8>>2]|0;r=i>>>0>>0;if((s|0)>=16){if(r){de[a>>2]=i+1;r=me[i>>0]|0}else r=0;de[_>>2]=s+8;a=e+16|0;o=r<<24-s|de[a>>2];de[a>>2]=o;break}if(r){o=(me[i>>0]|0)<<8;r=i+1|0}else{o=0;r=i}if(r>>>0>>0){i=me[r>>0]|0;r=r+1|0}else i=0;de[a>>2]=r;de[_>>2]=s+16;a=e+16|0;o=(i|o)<<16-s|de[a>>2];de[a>>2]=o}else{o=e+16|0;a=o;o=de[o>>2]|0}}while(0);n=(o>>>16)+1|0;do{if(n>>>0<=(de[g+16>>2]|0)>>>0){i=de[(de[g+168>>2]|0)+(o>>>(32-(de[g+8>>2]|0)|0)<<2)>>2]|0;if((i|0)==-1){de[l>>2]=1154;de[l+4>>2]=3244;de[l+8>>2]=1677;br(v,1100,l)|0;yr(v,u)|0}r=i&65535;i=i>>>16;if((de[t+8>>2]|0)>>>0<=r>>>0){de[p>>2]=1154;de[p+4>>2]=902;de[p+8>>2]=1781;br(v,1100,p)|0;yr(v,h)|0}if((me[(de[t+4>>2]|0)+r>>0]|0|0)!=(i|0)){de[c>>2]=1154;de[c+4>>2]=3248;de[c+8>>2]=1694;br(v,1100,c)|0;yr(v,f)|0}}else{i=de[g+20>>2]|0;while(1){r=i+-1|0;if(n>>>0>(de[g+28+(r<<2)>>2]|0)>>>0)i=i+1|0;else break}r=(o>>>(32-i|0))+(de[g+96+(r<<2)>>2]|0)|0;if(r>>>0<(de[t>>2]|0)>>>0){r=ge[(de[g+176>>2]|0)+(r<<1)>>1]|0;break}de[d>>2]=1154;de[d+4>>2]=3266;de[d+8>>2]=1632;br(v,1100,d)|0;yr(v,m)|0;_=0;ve=y;return _|0}}while(0);de[a>>2]=de[a>>2]<>2]=(de[_>>2]|0)-i;_=r;ve=y;return _|0}function vt(e,t){e=e|0;t=t|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0;h=ve;ve=ve+560|0;s=h+40|0;l=h+24|0;r=h;a=h+48|0;if(t>>>0>=33){de[r>>2]=1154;de[r+4>>2]=3190;de[r+8>>2]=1634;br(a,1100,r)|0;yr(a,h+16|0)|0}u=e+20|0;r=de[u>>2]|0;if((r|0)>=(t|0)){o=e+16|0;a=o;o=de[o>>2]|0;s=r;l=32-t|0;l=o>>>l;o=o<>2]=o;t=s-t|0;de[u>>2]=t;ve=h;return l|0}n=e+4|0;o=e+8|0;i=e+16|0;do{e=de[n>>2]|0;if((e|0)==(de[o>>2]|0))e=0;else{de[n>>2]=e+1;e=me[e>>0]|0}r=r+8|0;de[u>>2]=r;if((r|0)>=33){de[l>>2]=1154;de[l+4>>2]=3199;de[l+8>>2]=1650;br(a,1100,l)|0;yr(a,s)|0;r=de[u>>2]|0}e=e<<32-r|de[i>>2];de[i>>2]=e}while((r|0)<(t|0));l=32-t|0;l=e>>>l;s=e<>2]=s;t=r-t|0;de[u>>2]=t;ve=h;return l|0}function _t(e,t){e=e|0;t=t|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0;d=ve;ve=ve+544|0;f=d+16|0;c=d;h=d+24|0;if((e|0)==0|t>>>0<62){p=0;ve=d;return p|0}u=at(300,0)|0;if(!u){p=0;ve=d;return p|0}de[u>>2]=519686845;r=u+4|0;de[r>>2]=0;i=u+8|0;de[i>>2]=0;l=u+88|0;n=u+136|0;o=u+160|0;a=l;s=a+44|0;do{de[a>>2]=0;a=a+4|0}while((a|0)<(s|0));pe[l+44>>0]=0;m=u+184|0;a=u+208|0;s=u+232|0;g=u+252|0;de[g>>2]=0;de[g+4>>2]=0;de[g+8>>2]=0;pe[g+12>>0]=0;g=u+268|0;de[g>>2]=0;de[g+4>>2]=0;de[g+8>>2]=0;pe[g+12>>0]=0;g=u+284|0;de[g>>2]=0;de[g+4>>2]=0;de[g+8>>2]=0;pe[g+12>>0]=0;de[n>>2]=0;de[n+4>>2]=0;de[n+8>>2]=0;de[n+12>>2]=0;de[n+16>>2]=0;pe[n+20>>0]=0;de[o>>2]=0;de[o+4>>2]=0;de[o+8>>2]=0;de[o+12>>2]=0;de[o+16>>2]=0;pe[o+20>>0]=0;de[m>>2]=0;de[m+4>>2]=0;de[m+8>>2]=0;de[m+12>>2]=0;de[m+16>>2]=0;pe[m+20>>0]=0;de[a>>2]=0;de[a+4>>2]=0;de[a+8>>2]=0;de[a+12>>2]=0;de[a+16>>2]=0;pe[a+20>>0]=0;de[s>>2]=0;de[s+4>>2]=0;de[s+8>>2]=0;de[s+12>>2]=0;pe[s+16>>0]=0;do{if(((t>>>0>=74?((me[e>>0]|0)<<8|(me[e+1>>0]|0)|0)==18552:0)?((me[e+2>>0]|0)<<8|(me[e+3>>0]|0))>>>0>=74:0)?((me[e+7>>0]|0)<<16|(me[e+6>>0]|0)<<24|(me[e+8>>0]|0)<<8|(me[e+9>>0]|0))>>>0<=t>>>0:0){de[l>>2]=e;de[r>>2]=e;de[i>>2]=t;if(Et(u)|0){r=de[l>>2]|0;if((me[r+39>>0]|0)<<8|(me[r+40>>0]|0)){if(!(Ct(u)|0))break;if(!(At(u)|0))break;r=de[l>>2]|0}if(!((me[r+55>>0]|0)<<8|(me[r+56>>0]|0))){g=u;ve=d;return g|0}if(It(u)|0?Ot(u)|0:0){g=u;ve=d;return g|0}}}else p=7}while(0);if((p|0)==7)de[l>>2]=0;Ft(u);if(!(u&7)){Di[de[104>>2]&1](u,0,0,1,de[27]|0)|0;g=0;ve=d;return g|0}else{de[c>>2]=1154;de[c+4>>2]=2499;de[c+8>>2]=1516;br(h,1100,c)|0;yr(h,f)|0;g=0;ve=d;return g|0}return 0}function yt(e,t,r,i,n){e=e|0;t=t|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0,l=0,u=0,h=0;h=ve;ve=ve+544|0;u=h;l=h+24|0;o=de[e+88>>2]|0;s=(me[o+70+(n<<2)+1>>0]|0)<<16|(me[o+70+(n<<2)>>0]|0)<<24|(me[o+70+(n<<2)+2>>0]|0)<<8|(me[o+70+(n<<2)+3>>0]|0);a=n+1|0;if(a>>>0<(me[o+16>>0]|0)>>>0)o=(me[o+70+(a<<2)+1>>0]|0)<<16|(me[o+70+(a<<2)>>0]|0)<<24|(me[o+70+(a<<2)+2>>0]|0)<<8|(me[o+70+(a<<2)+3>>0]|0);else o=de[e+8>>2]|0;if(o>>>0>s>>>0){l=e+4|0;l=de[l>>2]|0;l=l+s|0;u=o-s|0;u=bt(e,l,u,t,r,i,n)|0;ve=h;return u|0}de[u>>2]=1154;de[u+4>>2]=3704;de[u+8>>2]=1792;br(l,1100,u)|0;yr(l,h+16|0)|0;l=e+4|0;l=de[l>>2]|0;l=l+s|0;u=o-s|0;u=bt(e,l,u,t,r,i,n)|0;ve=h;return u|0}function bt(e,t,r,i,n,o,a){e=e|0;t=t|0;r=r|0;i=i|0;n=n|0;o=o|0;a=a|0;var s=0,l=0,u=0,h=0;h=de[e+88>>2]|0;l=((me[h+12>>0]|0)<<8|(me[h+13>>0]|0))>>>a;u=((me[h+14>>0]|0)<<8|(me[h+15>>0]|0))>>>a;l=l>>>0>1?(l+3|0)>>>2:1;u=u>>>0>1?(u+3|0)>>>2:1;h=h+18|0;a=pe[h>>0]|0;a=_e(a<<24>>24==0|a<<24>>24==9?8:16,l)|0;if(o)if((o&3|0)==0&a>>>0<=o>>>0)a=o;else{e=0;return e|0}if((_e(a,u)|0)>>>0>n>>>0){e=0;return e|0}o=(l+1|0)>>>1;s=(u+1|0)>>>1;if(!r){e=0;return e|0}de[e+92>>2]=t;de[e+96>>2]=t;de[e+104>>2]=r;de[e+100>>2]=t+r;de[e+108>>2]=0;de[e+112>>2]=0;switch(me[h>>0]|0|0){case 0:{Mt(e,i,n,a,l,u,o,s)|0;e=1;return e|0}case 4:case 6:case 5:case 3:case 2:{Dt(e,i,n,a,l,u,o,s)|0;e=1;return e|0}case 9:{Rt(e,i,n,a,l,u,o,s)|0;e=1;return e|0}case 8:case 7:{zt(e,i,n,a,l,u,o,s)|0;e=1;return e|0}default:{e=0;return e|0}}return 0}function xt(e,t){e=e|0;t=t|0;var r=0,i=0;i=ve;ve=ve+48|0;r=i;de[r>>2]=40;ut(e,t,r)|0;ve=i;return de[r+4>>2]|0}function wt(e,t){e=e|0;t=t|0;var r=0,i=0;i=ve;ve=ve+48|0;r=i;de[r>>2]=40;ut(e,t,r)|0;ve=i;return de[r+8>>2]|0}function Tt(e,t){e=e|0;t=t|0;var r=0,i=0;i=ve;ve=ve+48|0;r=i;de[r>>2]=40;ut(e,t,r)|0;ve=i;return de[r+12>>2]|0}function kt(e,t){e=e|0;t=t|0;var r=0,i=0;i=ve;ve=ve+48|0;r=i;de[r>>2]=40;ut(e,t,r)|0;ve=i;return de[r+32>>2]|0}function St(e,t,r){e=e|0;t=t|0;r=r|0;var i=0,n=0,o=0,a=0,s=0,l=0,u=0;l=ve;ve=ve+576|0;a=l+56|0;o=l+40|0;n=l+64|0;u=l;de[u>>2]=40;ut(e,t,u)|0;i=(((de[u+4>>2]|0)>>>r)+3|0)>>>2;t=(((de[u+8>>2]|0)>>>r)+3|0)>>>2;r=u+32|0;e=de[r+4>>2]|0;do{switch(de[r>>2]|0){case 0:{if(!e)e=8;else s=13;break}case 1:{if(!e)s=12;else s=13;break}case 2:{if(!e)s=12;else s=13;break}case 3:{if(!e)s=12;else s=13;break}case 4:{if(!e)s=12;else s=13;break}case 5:{if(!e)s=12;else s=13;break}case 6:{if(!e)s=12;else s=13;break}case 7:{if(!e)s=12;else s=13;break}case 8:{if(!e)s=12;else s=13;break}case 9:{if(!e)e=8;else s=13;break}default:s=13}}while(0);if((s|0)==12)e=16;else if((s|0)==13){de[o>>2]=1154;de[o+4>>2]=2663;de[o+8>>2]=1535;br(n,1100,o)|0;yr(n,a)|0;e=0}u=_e(_e(t,i)|0,e)|0;ve=l;return u|0}function Pt(e,t,r,i,n){e=e|0;t=t|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0;d=ve;ve=ve+608|0;f=d+80|0;p=d+64|0;s=d+56|0;a=d+40|0;h=d+88|0;m=d;c=d+84|0;de[m>>2]=40;ut(e,t,m)|0;l=(((de[m+4>>2]|0)>>>n)+3|0)>>>2;m=m+32|0;o=de[m+4>>2]|0;do{switch(de[m>>2]|0){case 0:{if(!o)o=8;else u=13;break}case 1:{if(!o)u=12;else u=13;break}case 2:{if(!o)u=12;else u=13;break}case 3:{if(!o)u=12;else u=13;break}case 4:{if(!o)u=12;else u=13;break}case 5:{if(!o)u=12;else u=13;break}case 6:{if(!o)u=12;else u=13;break}case 7:{if(!o)u=12;else u=13;break}case 8:{if(!o)u=12;else u=13;break}case 9:{if(!o)o=8;else u=13;break}default:u=13}}while(0);if((u|0)==12)o=16;else if((u|0)==13){de[a>>2]=1154;de[a+4>>2]=2663;de[a+8>>2]=1535;br(h,1100,a)|0;yr(h,s)|0;o=0}s=_e(o,l)|0;a=_t(e,t)|0;de[c>>2]=r;o=(a|0)==0;if(!(n>>>0>15|(i>>>0<8|o))?(de[a>>2]|0)==519686845:0)yt(a,c,i,s,n)|0;if(o){ve=d;return}if((de[a>>2]|0)!=519686845){ve=d;return}Ft(a);if(!(a&7)){Di[de[104>>2]&1](a,0,0,1,de[27]|0)|0;ve=d;return}else{de[p>>2]=1154;de[p+4>>2]=2499;de[p+8>>2]=1516;br(h,1100,p)|0;yr(h,f)|0;ve=d;return}}function Et(e){e=e|0;var t=0,r=0,i=0,n=0,o=0,a=0;a=e+92|0;i=de[e+4>>2]|0;o=e+88|0;n=de[o>>2]|0;t=(me[n+68>>0]|0)<<8|(me[n+67>>0]|0)<<16|(me[n+69>>0]|0);r=i+t|0;n=(me[n+65>>0]|0)<<8|(me[n+66>>0]|0);if(!n){e=0;return e|0}de[a>>2]=r;de[e+96>>2]=r;de[e+104>>2]=n;de[e+100>>2]=i+(n+t);de[e+108>>2]=0;de[e+112>>2]=0;if(!(dt(a,e+116|0)|0)){e=0;return e|0}t=de[o>>2]|0;do{if(!((me[t+39>>0]|0)<<8|(me[t+40>>0]|0))){if(!((me[t+55>>0]|0)<<8|(me[t+56>>0]|0))){e=0;return e|0}}else{if(!(dt(a,e+140|0)|0)){e=0;return e|0}if(dt(a,e+188|0)|0){t=de[o>>2]|0;break}else{e=0;return e|0}}}while(0);if((me[t+55>>0]|0)<<8|(me[t+56>>0]|0)){if(!(dt(a,e+164|0)|0)){e=0;return e|0}if(!(dt(a,e+212|0)|0)){e=0;return e|0}}e=1;return e|0}function Ct(e){e=e|0;var t=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0;d=ve;ve=ve+592|0;l=d+16|0;s=d;a=d+72|0;p=d+24|0;i=e+88|0;t=de[i>>2]|0;f=(me[t+39>>0]|0)<<8|(me[t+40>>0]|0);h=e+236|0;o=e+240|0;r=de[o>>2]|0;if((r|0)!=(f|0)){if(r>>>0<=f>>>0){do{if((de[e+244>>2]|0)>>>0>>0){if(nt(h,f,(r+1|0)==(f|0),4,0)|0){t=de[o>>2]|0;break}pe[e+248>>0]=1;p=0;ve=d;return p|0}else t=r}while(0);Yr((de[h>>2]|0)+(t<<2)|0,0,f-t<<2|0)|0;t=de[i>>2]|0}de[o>>2]=f}u=e+92|0;r=de[e+4>>2]|0;i=(me[t+34>>0]|0)<<8|(me[t+33>>0]|0)<<16|(me[t+35>>0]|0);n=r+i|0;t=(me[t+37>>0]|0)<<8|(me[t+36>>0]|0)<<16|(me[t+38>>0]|0);if(!t){p=0;ve=d;return p|0}de[u>>2]=n;de[e+96>>2]=n;de[e+104>>2]=t;de[e+100>>2]=r+(t+i);de[e+108>>2]=0;de[e+112>>2]=0;de[p+20>>2]=0;de[p>>2]=0;de[p+4>>2]=0;de[p+8>>2]=0;de[p+12>>2]=0;pe[p+16>>0]=0;e=p+24|0;de[p+44>>2]=0;de[e>>2]=0;de[e+4>>2]=0;de[e+8>>2]=0;de[e+12>>2]=0;pe[e+16>>0]=0;if(dt(u,p)|0?(c=p+24|0,dt(u,c)|0):0){if(!(de[o>>2]|0)){de[s>>2]=1154;de[s+4>>2]=903;de[s+8>>2]=1781;br(a,1100,s)|0;yr(a,l)|0}if(!f)t=1;else{i=0;n=0;o=0;t=0;a=0;e=0;s=0;r=de[h>>2]|0;while(1){i=(gt(u,p)|0)+i&31;n=(gt(u,c)|0)+n&63;o=(gt(u,p)|0)+o&31;t=(gt(u,p)|0)+t|0;a=(gt(u,c)|0)+a&63;e=(gt(u,p)|0)+e&31;de[r>>2]=n<<5|i<<11|o|t<<27|a<<21|e<<16;s=s+1|0;if((s|0)==(f|0)){t=1;break}else{t=t&31;r=r+4|0}}}}else t=0;ct(p+24|0);ct(p);p=t;ve=d;return p|0}function At(e){e=e|0;var t=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,E=0;S=ve;ve=ve+1024|0;s=S+16|0;a=S;o=S+504|0;k=S+480|0;w=S+284|0;T=S+88|0;x=S+24|0;n=de[e+88>>2]|0;b=(me[n+47>>0]|0)<<8|(me[n+48>>0]|0);y=e+92|0;t=de[e+4>>2]|0;r=(me[n+42>>0]|0)<<8|(me[n+41>>0]|0)<<16|(me[n+43>>0]|0);i=t+r|0;n=(me[n+45>>0]|0)<<8|(me[n+44>>0]|0)<<16|(me[n+46>>0]|0);if(!n){k=0;ve=S;return k|0}de[y>>2]=i;de[e+96>>2]=i;de[e+104>>2]=n;de[e+100>>2]=t+(n+r);de[e+108>>2]=0;de[e+112>>2]=0;de[k+20>>2]=0;de[k>>2]=0;de[k+4>>2]=0;de[k+8>>2]=0;de[k+12>>2]=0;pe[k+16>>0]=0;if(dt(y,k)|0){r=0;i=-3;n=-3;while(1){de[w+(r<<2)>>2]=i;de[T+(r<<2)>>2]=n;t=(i|0)>2;r=r+1|0;if((r|0)==49)break;else{i=t?-3:i+1|0;n=(t&1)+n|0}}t=x;r=t+64|0;do{de[t>>2]=0;t=t+4|0}while((t|0)<(r|0));_=e+252|0;r=e+256|0;t=de[r>>2]|0;e:do{if((t|0)==(b|0))l=13;else{if(t>>>0<=b>>>0){do{if((de[e+260>>2]|0)>>>0>>0)if(nt(_,b,(t+1|0)==(b|0),4,0)|0){t=de[r>>2]|0;break}else{pe[e+264>>0]=1;t=0;break e}}while(0);Yr((de[_>>2]|0)+(t<<2)|0,0,b-t<<2|0)|0}de[r>>2]=b;l=13}}while(0);do{if((l|0)==13){if(!b){de[a>>2]=1154;de[a+4>>2]=903;de[a+8>>2]=1781;br(o,1100,a)|0;yr(o,s)|0;t=1;break}i=x+4|0;n=x+8|0;e=x+12|0;o=x+16|0;a=x+20|0;s=x+24|0;l=x+28|0;u=x+32|0;h=x+36|0;c=x+40|0;f=x+44|0;p=x+48|0;d=x+52|0;m=x+56|0;g=x+60|0;v=0;r=de[_>>2]|0;while(1){t=0;do{P=gt(y,k)|0;_=t<<1;E=x+(_<<2)|0;de[E>>2]=(de[E>>2]|0)+(de[w+(P<<2)>>2]|0)&3;_=x+((_|1)<<2)|0;de[_>>2]=(de[_>>2]|0)+(de[T+(P<<2)>>2]|0)&3;t=t+1|0}while((t|0)!=8);de[r>>2]=(me[1725+(de[i>>2]|0)>>0]|0)<<2|(me[1725+(de[x>>2]|0)>>0]|0)|(me[1725+(de[n>>2]|0)>>0]|0)<<4|(me[1725+(de[e>>2]|0)>>0]|0)<<6|(me[1725+(de[o>>2]|0)>>0]|0)<<8|(me[1725+(de[a>>2]|0)>>0]|0)<<10|(me[1725+(de[s>>2]|0)>>0]|0)<<12|(me[1725+(de[l>>2]|0)>>0]|0)<<14|(me[1725+(de[u>>2]|0)>>0]|0)<<16|(me[1725+(de[h>>2]|0)>>0]|0)<<18|(me[1725+(de[c>>2]|0)>>0]|0)<<20|(me[1725+(de[f>>2]|0)>>0]|0)<<22|(me[1725+(de[p>>2]|0)>>0]|0)<<24|(me[1725+(de[d>>2]|0)>>0]|0)<<26|(me[1725+(de[m>>2]|0)>>0]|0)<<28|(me[1725+(de[g>>2]|0)>>0]|0)<<30;v=v+1|0;if((v|0)==(b|0)){t=1;break}else r=r+4|0}}}while(0)}else t=0;ct(k);E=t;ve=S;return E|0}function It(e){e=e|0;var t=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0;f=ve;ve=ve+560|0;l=f+16|0;s=f;a=f+48|0;c=f+24|0;n=de[e+88>>2]|0;h=(me[n+55>>0]|0)<<8|(me[n+56>>0]|0);u=e+92|0;t=de[e+4>>2]|0;r=(me[n+50>>0]|0)<<8|(me[n+49>>0]|0)<<16|(me[n+51>>0]|0);i=t+r|0;n=(me[n+53>>0]|0)<<8|(me[n+52>>0]|0)<<16|(me[n+54>>0]|0);if(!n){c=0;ve=f;return c|0}de[u>>2]=i;de[e+96>>2]=i;de[e+104>>2]=n;de[e+100>>2]=t+(n+r);de[e+108>>2]=0;de[e+112>>2]=0;de[c+20>>2]=0;de[c>>2]=0;de[c+4>>2]=0;de[c+8>>2]=0;de[c+12>>2]=0;pe[c+16>>0]=0;e:do{if(dt(u,c)|0){o=e+268|0;r=e+272|0;t=de[r>>2]|0;if((t|0)!=(h|0)){if(t>>>0<=h>>>0){do{if((de[e+276>>2]|0)>>>0>>0)if(nt(o,h,(t+1|0)==(h|0),2,0)|0){t=de[r>>2]|0;break}else{pe[e+280>>0]=1;t=0;break e}}while(0);Yr((de[o>>2]|0)+(t<<1)|0,0,h-t<<1|0)|0}de[r>>2]=h}if(!h){de[s>>2]=1154;de[s+4>>2]=903;de[s+8>>2]=1781;br(a,1100,s)|0;yr(a,l)|0;t=1;break}r=0;i=0;n=0;t=de[o>>2]|0;while(1){l=gt(u,c)|0;r=l+r&255;i=(gt(u,c)|0)+i&255;$[t>>1]=i<<8|r;n=n+1|0;if((n|0)==(h|0)){t=1;break}else t=t+2|0}}else t=0}while(0);ct(c);c=t;ve=f;return c|0}function Ot(e){e=e|0;var t=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,E=0;S=ve;ve=ve+2432|0;s=S+16|0;a=S;o=S+1912|0;k=S+1888|0;w=S+988|0;T=S+88|0;x=S+24|0;n=de[e+88>>2]|0;b=(me[n+63>>0]|0)<<8|(me[n+64>>0]|0);y=e+92|0;t=de[e+4>>2]|0;r=(me[n+58>>0]|0)<<8|(me[n+57>>0]|0)<<16|(me[n+59>>0]|0);i=t+r|0;n=(me[n+61>>0]|0)<<8|(me[n+60>>0]|0)<<16|(me[n+62>>0]|0);if(!n){k=0;ve=S;return k|0}de[y>>2]=i;de[e+96>>2]=i;de[e+104>>2]=n;de[e+100>>2]=t+(n+r);de[e+108>>2]=0;de[e+112>>2]=0;de[k+20>>2]=0;de[k>>2]=0;de[k+4>>2]=0;de[k+8>>2]=0;de[k+12>>2]=0;pe[k+16>>0]=0;if(dt(y,k)|0){r=0;i=-7;n=-7;while(1){de[w+(r<<2)>>2]=i;de[T+(r<<2)>>2]=n;t=(i|0)>6;r=r+1|0;if((r|0)==225)break;else{i=t?-7:i+1|0;n=(t&1)+n|0}}t=x;r=t+64|0;do{de[t>>2]=0;t=t+4|0}while((t|0)<(r|0));_=e+284|0;r=b*3|0;i=e+288|0;t=de[i>>2]|0;e:do{if((t|0)==(r|0))l=13;else{if(t>>>0<=r>>>0){do{if((de[e+292>>2]|0)>>>0>>0)if(nt(_,r,(t+1|0)==(r|0),2,0)|0){t=de[i>>2]|0;break}else{pe[e+296>>0]=1;t=0;break e}}while(0);Yr((de[_>>2]|0)+(t<<1)|0,0,r-t<<1|0)|0}de[i>>2]=r;l=13}}while(0);do{if((l|0)==13){if(!b){de[a>>2]=1154;de[a+4>>2]=903;de[a+8>>2]=1781;br(o,1100,a)|0;yr(o,s)|0;t=1;break}i=x+4|0;n=x+8|0;e=x+12|0;o=x+16|0;a=x+20|0;s=x+24|0;l=x+28|0;u=x+32|0;h=x+36|0;c=x+40|0;f=x+44|0;p=x+48|0;d=x+52|0;m=x+56|0;g=x+60|0;v=0;r=de[_>>2]|0;while(1){t=0;do{P=gt(y,k)|0;_=t<<1;E=x+(_<<2)|0;de[E>>2]=(de[E>>2]|0)+(de[w+(P<<2)>>2]|0)&7;_=x+((_|1)<<2)|0;de[_>>2]=(de[_>>2]|0)+(de[T+(P<<2)>>2]|0)&7;t=t+1|0}while((t|0)!=8);P=me[1729+(de[a>>2]|0)>>0]|0;$[r>>1]=(me[1729+(de[i>>2]|0)>>0]|0)<<3|(me[1729+(de[x>>2]|0)>>0]|0)|(me[1729+(de[n>>2]|0)>>0]|0)<<6|(me[1729+(de[e>>2]|0)>>0]|0)<<9|(me[1729+(de[o>>2]|0)>>0]|0)<<12|P<<15;E=me[1729+(de[c>>2]|0)>>0]|0;$[r+2>>1]=(me[1729+(de[s>>2]|0)>>0]|0)<<2|P>>>1|(me[1729+(de[l>>2]|0)>>0]|0)<<5|(me[1729+(de[u>>2]|0)>>0]|0)<<8|(me[1729+(de[h>>2]|0)>>0]|0)<<11|E<<14;$[r+4>>1]=(me[1729+(de[f>>2]|0)>>0]|0)<<1|E>>>2|(me[1729+(de[p>>2]|0)>>0]|0)<<4|(me[1729+(de[d>>2]|0)>>0]|0)<<7|(me[1729+(de[m>>2]|0)>>0]|0)<<10|(me[1729+(de[g>>2]|0)>>0]|0)<<13;v=v+1|0;if((v|0)==(b|0)){t=1;break}else r=r+6|0}}}while(0)}else t=0;ct(k);E=t;ve=S;return E|0}function Mt(e,t,r,i,n,o,a,s){e=e|0;t=t|0;r=r|0;i=i|0;n=n|0;o=o|0;a=a|0;s=s|0;var l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,E=0,C=0,A=0,I=0,O=0,M=0,D=0,R=0,z=0,F=0,L=0,j=0,N=0,B=0,U=0,X=0,H=0,W=0,q=0,G=0,V=0,Y=0,Z=0,J=0,K=0,Q=0,$=0,ee=0,te=0,re=0,ie=0,ne=0,oe=0,ae=0,se=0,le=0,ue=0,he=0,ce=0,fe=0;he=ve;ve=ve+720|0;ue=he+184|0;se=he+168|0;ae=he+160|0;oe=he+144|0;ne=he+136|0;ie=he+120|0;re=he+112|0;ee=he+96|0;$=he+88|0;Q=he+72|0;K=he+64|0;J=he+48|0;Z=he+40|0;le=he+24|0;te=he+16|0;Y=he;G=he+208|0;V=he+192|0;N=e+240|0;B=de[N>>2]|0;H=e+256|0;W=de[H>>2]|0;r=pe[(de[e+88>>2]|0)+17>>0]|0;q=i>>>2;if(!(r<<24>>24)){ve=he;return 1}U=(s|0)==0;X=s+-1|0;M=(o&1|0)!=0;D=i<<1;R=e+92|0;z=e+116|0;F=e+140|0;L=e+236|0;j=a+-1|0;O=(n&1|0)!=0;I=e+188|0;S=e+252|0;P=q+1|0;E=q+2|0;C=q+3|0;A=j<<4;T=r&255;r=0;o=0;n=1;k=0;do{if(!U){x=de[t+(k<<2)>>2]|0;w=0;while(1){_=w&1;l=(_|0)==0;v=(_<<5^32)+-16|0;_=(_<<1^2)+-1|0;b=l?a:-1;u=l?0:j;e=(w|0)==(X|0);y=M&e;if((u|0)!=(b|0)){g=M&e^1;m=l?x:x+A|0;while(1){if((n|0)==1)n=gt(R,z)|0|512;d=n&7;n=n>>>3;l=me[1823+d>>0]|0;e=0;do{f=(gt(R,F)|0)+o|0;p=f-B|0;o=p>>31;o=o&f|p&~o;if((de[N>>2]|0)>>>0<=o>>>0){de[Y>>2]=1154;de[Y+4>>2]=903;de[Y+8>>2]=1781;br(G,1100,Y)|0;yr(G,te)|0}de[V+(e<<2)>>2]=de[(de[L>>2]|0)+(o<<2)>>2];e=e+1|0}while(e>>>0>>0);p=O&(u|0)==(j|0);if(y|p){f=0;do{h=_e(f,i)|0;e=m+h|0;l=(f|0)==0|g;c=f<<1;fe=(gt(R,I)|0)+r|0;ce=fe-W|0;r=ce>>31;r=r&fe|ce&~r;do{if(p){if(!l){ce=(gt(R,I)|0)+r|0;fe=ce-W|0;r=fe>>31;r=r&ce|fe&~r;break}de[e>>2]=de[V+((me[1831+(d<<2)+c>>0]|0)<<2)>>2];if((de[H>>2]|0)>>>0<=r>>>0){de[oe>>2]=1154;de[oe+4>>2]=903;de[oe+8>>2]=1781;br(G,1100,oe)|0;yr(G,ae)|0}de[m+(h+4)>>2]=de[(de[S>>2]|0)+(r<<2)>>2];ce=(gt(R,I)|0)+r|0;fe=ce-W|0;r=fe>>31;r=r&ce|fe&~r}else{if(!l){ce=(gt(R,I)|0)+r|0;fe=ce-W|0;r=fe>>31;r=r&ce|fe&~r;break}de[e>>2]=de[V+((me[1831+(d<<2)+c>>0]|0)<<2)>>2];if((de[H>>2]|0)>>>0<=r>>>0){de[ie>>2]=1154;de[ie+4>>2]=903;de[ie+8>>2]=1781;br(G,1100,ie)|0;yr(G,ne)|0}de[m+(h+4)>>2]=de[(de[S>>2]|0)+(r<<2)>>2];ce=(gt(R,I)|0)+r|0;fe=ce-W|0;r=fe>>31;r=r&ce|fe&~r;de[m+(h+8)>>2]=de[V+((me[(c|1)+(1831+(d<<2))>>0]|0)<<2)>>2];if((de[H>>2]|0)>>>0<=r>>>0){de[se>>2]=1154;de[se+4>>2]=903;de[se+8>>2]=1781;br(G,1100,se)|0;yr(G,ue)|0}de[m+(h+12)>>2]=de[(de[S>>2]|0)+(r<<2)>>2]}}while(0);f=f+1|0}while((f|0)!=2)}else{de[m>>2]=de[V+((me[1831+(d<<2)>>0]|0)<<2)>>2];ce=(gt(R,I)|0)+r|0;fe=ce-W|0;r=fe>>31;r=r&ce|fe&~r;if((de[H>>2]|0)>>>0<=r>>>0){de[le>>2]=1154;de[le+4>>2]=903;de[le+8>>2]=1781;br(G,1100,le)|0;yr(G,Z)|0}de[m+4>>2]=de[(de[S>>2]|0)+(r<<2)>>2];de[m+8>>2]=de[V+((me[1831+(d<<2)+1>>0]|0)<<2)>>2];ce=(gt(R,I)|0)+r|0;fe=ce-W|0;r=fe>>31;r=r&ce|fe&~r;if((de[H>>2]|0)>>>0<=r>>>0){de[J>>2]=1154;de[J+4>>2]=903;de[J+8>>2]=1781;br(G,1100,J)|0;yr(G,K)|0}de[m+12>>2]=de[(de[S>>2]|0)+(r<<2)>>2];de[m+(q<<2)>>2]=de[V+((me[1831+(d<<2)+2>>0]|0)<<2)>>2];ce=(gt(R,I)|0)+r|0;fe=ce-W|0;r=fe>>31;r=r&ce|fe&~r;if((de[H>>2]|0)>>>0<=r>>>0){de[Q>>2]=1154;de[Q+4>>2]=903;de[Q+8>>2]=1781;br(G,1100,Q)|0;yr(G,$)|0}de[m+(P<<2)>>2]=de[(de[S>>2]|0)+(r<<2)>>2];de[m+(E<<2)>>2]=de[V+((me[1831+(d<<2)+3>>0]|0)<<2)>>2];ce=(gt(R,I)|0)+r|0;fe=ce-W|0;r=fe>>31;r=r&ce|fe&~r;if((de[H>>2]|0)>>>0<=r>>>0){de[ee>>2]=1154;de[ee+4>>2]=903;de[ee+8>>2]=1781;br(G,1100,ee)|0;yr(G,re)|0}de[m+(C<<2)>>2]=de[(de[S>>2]|0)+(r<<2)>>2]}u=u+_|0;if((u|0)==(b|0))break;else m=m+v|0}}w=w+1|0;if((w|0)==(s|0))break;else x=x+D|0}}k=k+1|0}while((k|0)!=(T|0));ve=he;return 1}function Dt(e,t,r,i,n,o,a,s){e=e|0;t=t|0;r=r|0;i=i|0;n=n|0;o=o|0;a=a|0;s=s|0;var l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,E=0,C=0,A=0,I=0,O=0,M=0,D=0,R=0,z=0,F=0,L=0,j=0,N=0,B=0,U=0,X=0,H=0,W=0,q=0,G=0,V=0,Y=0,Z=0,J=0,K=0,Q=0,$=0,ee=0,te=0,re=0,ie=0,ne=0,oe=0,ae=0,se=0,le=0,ue=0,he=0,ce=0,fe=0;ce=ve;ve=ve+640|0;le=ce+88|0;se=ce+72|0;ae=ce+64|0;oe=ce+48|0;ne=ce+40|0;he=ce+24|0;ue=ce+16|0;ie=ce;te=ce+128|0;re=ce+112|0;ee=ce+96|0;N=e+240|0;B=de[N>>2]|0;H=e+256|0;K=de[H>>2]|0;Q=e+272|0;$=de[Q>>2]|0;r=de[e+88>>2]|0;U=(me[r+63>>0]|0)<<8|(me[r+64>>0]|0);r=pe[r+17>>0]|0;if(!(r<<24>>24)){ve=ce;return 1}X=(s|0)==0;W=s+-1|0;q=i<<1;G=e+92|0;V=e+116|0;Y=a+-1|0;Z=e+212|0;J=e+188|0;j=(n&1|0)==0;L=(o&1|0)==0;O=e+288|0;M=e+284|0;D=e+252|0;R=e+140|0;z=e+236|0;F=e+164|0;A=e+268|0;I=Y<<5;E=r&255;r=0;n=0;o=0;e=0;l=1;C=0;do{if(!X){S=de[t+(C<<2)>>2]|0;P=0;while(1){T=P&1;u=(T|0)==0;w=(T<<6^64)+-32|0;T=(T<<1^2)+-1|0;k=u?a:-1;h=u?0:Y;if((h|0)!=(k|0)){x=L|(P|0)!=(W|0);b=u?S:S+I|0;while(1){if((l|0)==1)l=gt(G,V)|0|512;y=l&7;l=l>>>3;c=me[1823+y>>0]|0;u=0;do{v=(gt(G,F)|0)+n|0;_=v-$|0;n=_>>31;n=n&v|_&~n;if((de[Q>>2]|0)>>>0<=n>>>0){de[ie>>2]=1154;de[ie+4>>2]=903;de[ie+8>>2]=1781;br(te,1100,ie)|0;yr(te,ue)|0}de[ee+(u<<2)>>2]=ge[(de[A>>2]|0)+(n<<1)>>1];u=u+1|0}while(u>>>0>>0);u=0;do{v=(gt(G,R)|0)+e|0;_=v-B|0;e=_>>31;e=e&v|_&~e;if((de[N>>2]|0)>>>0<=e>>>0){de[he>>2]=1154;de[he+4>>2]=903;de[he+8>>2]=1781;br(te,1100,he)|0;yr(te,ne)|0}de[re+(u<<2)>>2]=de[(de[z>>2]|0)+(e<<2)>>2];u=u+1|0}while(u>>>0>>0);_=j|(h|0)!=(Y|0);g=0;v=b;while(1){m=x|(g|0)==0;d=g<<1;f=0;p=v;while(1){c=(gt(G,Z)|0)+r|0;u=c-U|0;r=u>>31;r=r&c|u&~r;u=(gt(G,J)|0)+o|0;c=u-K|0;o=c>>31;o=o&u|c&~o;if((_|(f|0)==0)&m){u=me[f+d+(1831+(y<<2))>>0]|0;c=r*3|0;if((de[O>>2]|0)>>>0<=c>>>0){de[oe>>2]=1154;de[oe+4>>2]=903;de[oe+8>>2]=1781;br(te,1100,oe)|0;yr(te,ae)|0}fe=de[M>>2]|0;de[p>>2]=(ge[fe+(c<<1)>>1]|0)<<16|de[ee+(u<<2)>>2];de[p+4>>2]=(ge[fe+(c+2<<1)>>1]|0)<<16|(ge[fe+(c+1<<1)>>1]|0);de[p+8>>2]=de[re+(u<<2)>>2];if((de[H>>2]|0)>>>0<=o>>>0){de[se>>2]=1154;de[se+4>>2]=903;de[se+8>>2]=1781;br(te,1100,se)|0;yr(te,le)|0}de[p+12>>2]=de[(de[D>>2]|0)+(o<<2)>>2]}f=f+1|0;if((f|0)==2)break;else p=p+16|0}g=g+1|0;if((g|0)==2)break;else v=v+i|0}h=h+T|0;if((h|0)==(k|0))break;else b=b+w|0}}P=P+1|0;if((P|0)==(s|0))break;else S=S+q|0}}C=C+1|0}while((C|0)!=(E|0));ve=ce;return 1}function Rt(e,t,r,i,n,o,a,s){e=e|0;t=t|0;r=r|0;i=i|0;n=n|0;o=o|0;a=a|0;s=s|0;var l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,E=0,C=0,A=0,I=0,O=0,M=0,D=0,R=0,z=0,F=0,L=0,j=0,N=0,B=0,U=0,X=0,H=0,W=0,q=0,G=0,V=0,Y=0,Z=0,J=0,K=0;K=ve;ve=ve+608|0;Y=K+64|0;V=K+48|0;G=K+40|0;J=K+24|0;Z=K+16|0;q=K;W=K+88|0;H=K+72|0;D=e+272|0;R=de[D>>2]|0;r=de[e+88>>2]|0;z=(me[r+63>>0]|0)<<8|(me[r+64>>0]|0);r=pe[r+17>>0]|0;if(!(r<<24>>24)){ve=K;return 1}F=(s|0)==0;L=s+-1|0;j=i<<1;N=e+92|0;B=e+116|0;U=a+-1|0;X=e+212|0;M=(o&1|0)==0;A=e+288|0;I=e+284|0;O=e+164|0;E=e+268|0;C=U<<4;P=r&255;S=(n&1|0)!=0;r=0;o=0;e=1;k=0;do{if(!F){w=de[t+(k<<2)>>2]|0;T=0;while(1){b=T&1;n=(b|0)==0;y=(b<<5^32)+-16|0;b=(b<<1^2)+-1|0;x=n?a:-1;l=n?0:U;if((l|0)!=(x|0)){_=M|(T|0)!=(L|0);v=n?w:w+C|0;while(1){if((e|0)==1)e=gt(N,B)|0|512;g=e&7;e=e>>>3;u=me[1823+g>>0]|0;n=0;do{d=(gt(N,O)|0)+o|0;m=d-R|0;o=m>>31;o=o&d|m&~o;if((de[D>>2]|0)>>>0<=o>>>0){de[q>>2]=1154;de[q+4>>2]=903;de[q+8>>2]=1781;br(W,1100,q)|0;yr(W,Z)|0}de[H+(n<<2)>>2]=ge[(de[E>>2]|0)+(o<<1)>>1];n=n+1|0}while(n>>>0>>0);m=(l|0)==(U|0)&S;p=0;d=v;while(1){f=_|(p|0)==0;c=p<<1;n=(gt(N,X)|0)+r|0;h=n-z|0;u=h>>31;u=u&n|h&~u;if(f){r=me[1831+(g<<2)+c>>0]|0;n=u*3|0;if((de[A>>2]|0)>>>0<=n>>>0){de[J>>2]=1154;de[J+4>>2]=903;de[J+8>>2]=1781;br(W,1100,J)|0;yr(W,G)|0}h=de[I>>2]|0;de[d>>2]=(ge[h+(n<<1)>>1]|0)<<16|de[H+(r<<2)>>2];de[d+4>>2]=(ge[h+(n+2<<1)>>1]|0)<<16|(ge[h+(n+1<<1)>>1]|0)}h=d+8|0;n=(gt(N,X)|0)+u|0;u=n-z|0;r=u>>31;r=r&n|u&~r;if(!(m|f^1)){n=me[(c|1)+(1831+(g<<2))>>0]|0;u=r*3|0;if((de[A>>2]|0)>>>0<=u>>>0){de[V>>2]=1154;de[V+4>>2]=903;de[V+8>>2]=1781;br(W,1100,V)|0;yr(W,Y)|0}f=de[I>>2]|0;de[h>>2]=(ge[f+(u<<1)>>1]|0)<<16|de[H+(n<<2)>>2];de[d+12>>2]=(ge[f+(u+2<<1)>>1]|0)<<16|(ge[f+(u+1<<1)>>1]|0)}p=p+1|0;if((p|0)==2)break;else d=d+i|0}l=l+b|0;if((l|0)==(x|0))break;else v=v+y|0}}T=T+1|0;if((T|0)==(s|0))break;else w=w+j|0}}k=k+1|0}while((k|0)!=(P|0));ve=K;return 1}function zt(e,t,r,i,n,o,a,s){e=e|0;t=t|0;r=r|0;i=i|0;n=n|0;o=o|0;a=a|0;s=s|0;var l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,E=0,C=0,A=0,I=0,O=0,M=0,D=0,R=0,z=0,F=0,L=0,j=0,N=0,B=0,U=0,X=0,H=0,W=0,q=0,G=0,V=0,Y=0,Z=0,J=0,K=0,Q=0,$=0,ee=0,te=0,re=0,ie=0,ne=0,oe=0,ae=0;ae=ve;ve=ve+640|0;ie=ae+88|0;re=ae+72|0;te=ae+64|0;ee=ae+48|0;$=ae+40|0;oe=ae+24|0;ne=ae+16|0;Q=ae;K=ae+128|0;Z=ae+112|0;J=ae+96|0;N=e+272|0;B=de[N>>2]|0;r=de[e+88>>2]|0;U=(me[r+63>>0]|0)<<8|(me[r+64>>0]|0);r=pe[r+17>>0]|0;if(!(r<<24>>24)){ve=ae;return 1}X=(s|0)==0;H=s+-1|0;W=i<<1;q=e+92|0;G=e+116|0;V=a+-1|0;Y=e+212|0;j=(n&1|0)==0;L=(o&1|0)==0;R=e+288|0;z=e+284|0;F=e+164|0;M=e+268|0;D=V<<5;I=r&255;r=0;n=0;o=0;e=0;l=1;O=0;do{if(!X){C=de[t+(O<<2)>>2]|0;A=0;while(1){P=A&1;u=(P|0)==0;S=(P<<6^64)+-32|0;P=(P<<1^2)+-1|0;E=u?a:-1;h=u?0:V;if((h|0)!=(E|0)){k=L|(A|0)!=(H|0);T=u?C:C+D|0;while(1){if((l|0)==1)l=gt(q,G)|0|512;w=l&7;l=l>>>3;c=me[1823+w>>0]|0;u=0;do{b=(gt(q,F)|0)+e|0;x=b-B|0;e=x>>31;e=e&b|x&~e;if((de[N>>2]|0)>>>0<=e>>>0){de[Q>>2]=1154;de[Q+4>>2]=903;de[Q+8>>2]=1781;br(K,1100,Q)|0;yr(K,ne)|0}de[Z+(u<<2)>>2]=ge[(de[M>>2]|0)+(e<<1)>>1];u=u+1|0}while(u>>>0>>0);u=0;do{b=(gt(q,F)|0)+n|0;x=b-B|0;n=x>>31;n=n&b|x&~n;if((de[N>>2]|0)>>>0<=n>>>0){de[oe>>2]=1154;de[oe+4>>2]=903;de[oe+8>>2]=1781;br(K,1100,oe)|0;yr(K,$)|0}de[J+(u<<2)>>2]=ge[(de[M>>2]|0)+(n<<1)>>1];u=u+1|0}while(u>>>0>>0);x=j|(h|0)!=(V|0);y=0;b=T;while(1){_=k|(y|0)==0;v=y<<1;m=0;g=b;while(1){d=(gt(q,Y)|0)+o|0;p=d-U|0;o=p>>31;o=o&d|p&~o;p=(gt(q,Y)|0)+r|0;d=p-U|0;r=d>>31;r=r&p|d&~r;if((x|(m|0)==0)&_){p=me[m+v+(1831+(w<<2))>>0]|0;d=o*3|0;u=de[R>>2]|0;if(u>>>0<=d>>>0){de[ee>>2]=1154;de[ee+4>>2]=903;de[ee+8>>2]=1781;br(K,1100,ee)|0;yr(K,te)|0;u=de[R>>2]|0}c=de[z>>2]|0;f=r*3|0;if(u>>>0>f>>>0)u=c;else{de[re>>2]=1154;de[re+4>>2]=903;de[re+8>>2]=1781;br(K,1100,re)|0;yr(K,ie)|0;u=de[z>>2]|0}de[g>>2]=(ge[c+(d<<1)>>1]|0)<<16|de[Z+(p<<2)>>2];de[g+4>>2]=(ge[c+(d+2<<1)>>1]|0)<<16|(ge[c+(d+1<<1)>>1]|0);de[g+8>>2]=(ge[u+(f<<1)>>1]|0)<<16|de[J+(p<<2)>>2];de[g+12>>2]=(ge[u+(f+2<<1)>>1]|0)<<16|(ge[u+(f+1<<1)>>1]|0)}m=m+1|0;if((m|0)==2)break;else g=g+16|0}y=y+1|0;if((y|0)==2)break;else b=b+i|0}h=h+P|0;if((h|0)==(E|0))break;else T=T+S|0}}A=A+1|0;if((A|0)==(s|0))break;else C=C+W|0}}O=O+1|0}while((O|0)!=(I|0));ve=ae;return 1}function Ft(e){e=e|0;var t=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0;f=ve;ve=ve+608|0;c=f+88|0;h=f+72|0;l=f+64|0;s=f+48|0;o=f+40|0;a=f+24|0;n=f+16|0;i=f;u=f+96|0;de[e>>2]=0;t=e+284|0;r=de[t>>2]|0;if(r){if(!(r&7))Di[de[104>>2]&1](r,0,0,1,de[27]|0)|0;else{de[i>>2]=1154;de[i+4>>2]=2499;de[i+8>>2]=1516;br(u,1100,i)|0;yr(u,n)|0}de[t>>2]=0;de[e+288>>2]=0;de[e+292>>2]=0}pe[e+296>>0]=0;t=e+268|0;r=de[t>>2]|0;if(r){if(!(r&7))Di[de[104>>2]&1](r,0,0,1,de[27]|0)|0;else{de[a>>2]=1154;de[a+4>>2]=2499;de[a+8>>2]=1516;br(u,1100,a)|0;yr(u,o)|0}de[t>>2]=0;de[e+272>>2]=0;de[e+276>>2]=0}pe[e+280>>0]=0;t=e+252|0;r=de[t>>2]|0;if(r){if(!(r&7))Di[de[104>>2]&1](r,0,0,1,de[27]|0)|0;else{de[s>>2]=1154;de[s+4>>2]=2499;de[s+8>>2]=1516;br(u,1100,s)|0;yr(u,l)|0}de[t>>2]=0;de[e+256>>2]=0;de[e+260>>2]=0}pe[e+264>>0]=0;t=e+236|0;r=de[t>>2]|0;if(!r){c=e+248|0;pe[c>>0]=0;c=e+212|0;ct(c);c=e+188|0;ct(c);c=e+164|0;ct(c);c=e+140|0;ct(c);c=e+116|0;ct(c);ve=f;return}if(!(r&7))Di[de[104>>2]&1](r,0,0,1,de[27]|0)|0;else{de[h>>2]=1154;de[h+4>>2]=2499;de[h+8>>2]=1516;br(u,1100,h)|0;yr(u,c)|0}de[t>>2]=0;de[e+240>>2]=0;de[e+244>>2]=0;c=e+248|0;pe[c>>0]=0;c=e+212|0;ct(c);c=e+188|0;ct(c);c=e+164|0;ct(c);c=e+140|0;ct(c);c=e+116|0;ct(c);ve=f;return}function Lt(e,t){e=e|0;t=t|0;var r=0;r=ve;ve=ve+16|0;de[r>>2]=t;t=de[63]|0;xr(t,e,r)|0;vr(10,t)|0;Xe()}function jt(){var e=0,t=0;e=ve;ve=ve+16|0;if(!(Fe(200,2)|0)){t=Re(de[49]|0)|0;ve=e;return t|0}else Lt(2090,e);return 0}function Nt(e){e=e|0;Ur(e);return}function Bt(e){e=e|0;var t=0;t=ve;ve=ve+16|0;Oi[e&3]();Lt(2139,t)}function Ut(){var e=0,t=0;e=jt()|0;if(((e|0)!=0?(t=de[e>>2]|0,(t|0)!=0):0)?(e=t+48|0,(de[e>>2]&-256|0)==1126902528?(de[e+4>>2]|0)==1129074247:0):0)Bt(de[t+12>>2]|0);t=de[28]|0;de[28]=t+0;Bt(t)}function Xt(e){e=e|0;return}function Ht(e){e=e|0;return}function Wt(e){e=e|0;return}function qt(e){e=e|0;return}function Gt(e){e=e|0;Nt(e);return}function Vt(e){e=e|0;Nt(e);return}function Yt(e,t,r){e=e|0;t=t|0;r=r|0;var i=0,n=0,o=0,a=0;a=ve;ve=ve+64|0;o=a;if((e|0)!=(t|0))if((t|0)!=0?(n=Qt(t,24,40,0)|0,(n|0)!=0):0){t=o;i=t+56|0;do{de[t>>2]=0;t=t+4|0}while((t|0)<(i|0));de[o>>2]=n;de[o+8>>2]=e;de[o+12>>2]=-1;de[o+48>>2]=1;Ri[de[(de[n>>2]|0)+28>>2]&3](n,o,de[r>>2]|0,1);if((de[o+24>>2]|0)==1){de[r>>2]=de[o+16>>2];t=1}else t=0}else t=0;else t=1;ve=a;return t|0}function Zt(e,t,r,i){e=e|0;t=t|0;r=r|0;i=i|0;var n=0;e=t+16|0;n=de[e>>2]|0;do{if(n){if((n|0)!=(r|0)){i=t+36|0;de[i>>2]=(de[i>>2]|0)+1;de[t+24>>2]=2;pe[t+54>>0]=1;break}e=t+24|0;if((de[e>>2]|0)==2)de[e>>2]=i}else{de[e>>2]=r;de[t+24>>2]=i;de[t+36>>2]=1}}while(0);return}function Jt(e,t,r,i){e=e|0;t=t|0;r=r|0;i=i|0;if((e|0)==(de[t+8>>2]|0))Zt(0,t,r,i);return}function Kt(e,t,r,i){e=e|0;t=t|0;r=r|0;i=i|0;if((e|0)==(de[t+8>>2]|0))Zt(0,t,r,i);else{e=de[e+8>>2]|0;Ri[de[(de[e>>2]|0)+28>>2]&3](e,t,r,i)}return}function Qt(e,t,r,i){e=e|0;t=t|0;r=r|0;i=i|0;var n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0;p=ve;ve=ve+64|0;f=p;c=de[e>>2]|0;h=e+(de[c+-8>>2]|0)|0;c=de[c+-4>>2]|0;de[f>>2]=r;de[f+4>>2]=e;de[f+8>>2]=t;de[f+12>>2]=i;i=f+16|0;e=f+20|0;t=f+24|0;n=f+28|0;o=f+32|0;a=f+40|0;s=(c|0)==(r|0);l=i;u=l+36|0;do{de[l>>2]=0;l=l+4|0}while((l|0)<(u|0));$[i+36>>1]=0;pe[i+38>>0]=0;e:do{if(s){de[f+48>>2]=1;Mi[de[(de[r>>2]|0)+20>>2]&3](r,f,h,h,1,0);i=(de[t>>2]|0)==1?h:0}else{Ei[de[(de[c>>2]|0)+24>>2]&3](c,f,h,1,0);switch(de[f+36>>2]|0){case 0:{i=(de[a>>2]|0)==1&(de[n>>2]|0)==1&(de[o>>2]|0)==1?de[e>>2]|0:0;break e}case 1:break;default:{i=0;break e}}if((de[t>>2]|0)!=1?!((de[a>>2]|0)==0&(de[n>>2]|0)==1&(de[o>>2]|0)==1):0){i=0;break}i=de[i>>2]|0}}while(0);ve=p;return i|0}function $t(e,t,r,i,n){e=e|0;t=t|0;r=r|0;i=i|0;n=n|0;pe[t+53>>0]=1;do{if((de[t+4>>2]|0)==(i|0)){pe[t+52>>0]=1;i=t+16|0;e=de[i>>2]|0;if(!e){de[i>>2]=r;de[t+24>>2]=n;de[t+36>>2]=1;if(!((n|0)==1?(de[t+48>>2]|0)==1:0))break;pe[t+54>>0]=1;break}if((e|0)!=(r|0)){n=t+36|0;de[n>>2]=(de[n>>2]|0)+1;pe[t+54>>0]=1;break}e=t+24|0;i=de[e>>2]|0;if((i|0)==2){de[e>>2]=n;i=n}if((i|0)==1?(de[t+48>>2]|0)==1:0)pe[t+54>>0]=1}}while(0);return}function er(e,t,r,i,n){e=e|0;t=t|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0,l=0;e:do{if((e|0)==(de[t+8>>2]|0)){if((de[t+4>>2]|0)==(r|0)?(o=t+28|0,(de[o>>2]|0)!=1):0)de[o>>2]=i}else{if((e|0)!=(de[t>>2]|0)){s=de[e+8>>2]|0;Ei[de[(de[s>>2]|0)+24>>2]&3](s,t,r,i,n);break}if((de[t+16>>2]|0)!=(r|0)?(a=t+20|0,(de[a>>2]|0)!=(r|0)):0){de[t+32>>2]=i;i=t+44|0;if((de[i>>2]|0)==4)break;o=t+52|0;pe[o>>0]=0;l=t+53|0;pe[l>>0]=0;e=de[e+8>>2]|0;Mi[de[(de[e>>2]|0)+20>>2]&3](e,t,r,r,1,n);if(pe[l>>0]|0){if(!(pe[o>>0]|0)){o=1;s=13}}else{o=0;s=13}do{if((s|0)==13){de[a>>2]=r;l=t+40|0;de[l>>2]=(de[l>>2]|0)+1;if((de[t+36>>2]|0)==1?(de[t+24>>2]|0)==2:0){pe[t+54>>0]=1;if(o)break}else s=16;if((s|0)==16?o:0)break;de[i>>2]=4;break e}}while(0);de[i>>2]=3;break}if((i|0)==1)de[t+32>>2]=1}}while(0);return}function tr(e,t,r,i,n){e=e|0;t=t|0;r=r|0;i=i|0;n=n|0;var o=0,a=0;do{if((e|0)==(de[t+8>>2]|0)){if((de[t+4>>2]|0)==(r|0)?(a=t+28|0,(de[a>>2]|0)!=1):0)de[a>>2]=i}else if((e|0)==(de[t>>2]|0)){if((de[t+16>>2]|0)!=(r|0)?(o=t+20|0,(de[o>>2]|0)!=(r|0)):0){de[t+32>>2]=i;de[o>>2]=r;n=t+40|0;de[n>>2]=(de[n>>2]|0)+1;if((de[t+36>>2]|0)==1?(de[t+24>>2]|0)==2:0)pe[t+54>>0]=1;de[t+44>>2]=4;break}if((i|0)==1)de[t+32>>2]=1}}while(0);return}function rr(e,t,r,i,n,o){e=e|0;t=t|0;r=r|0;i=i|0;n=n|0;o=o|0;if((e|0)==(de[t+8>>2]|0))$t(0,t,r,i,n);else{e=de[e+8>>2]|0;Mi[de[(de[e>>2]|0)+20>>2]&3](e,t,r,i,n,o)}return}function ir(e,t,r,i,n,o){e=e|0;t=t|0;r=r|0;i=i|0;n=n|0;o=o|0;if((e|0)==(de[t+8>>2]|0))$t(0,t,r,i,n);return}function nr(e,t,r){e=e|0;t=t|0;r=r|0;var i=0,n=0;n=ve;ve=ve+16|0;i=n;de[i>>2]=de[r>>2];e=Pi[de[(de[e>>2]|0)+16>>2]&7](e,t,i)|0;if(e)de[r>>2]=de[i>>2];ve=n;return e&1|0}function or(e){e=e|0;if(!e)e=0;else e=(Qt(e,24,72,0)|0)!=0;return e&1|0}function ar(){var e=0,t=0,r=0,i=0,n=0,o=0,a=0,s=0;n=ve;ve=ve+48|0;a=n+32|0;r=n+24|0;s=n+16|0;o=n;n=n+36|0;e=jt()|0;if((e|0)!=0?(i=de[e>>2]|0,(i|0)!=0):0){e=i+48|0;t=de[e>>2]|0;e=de[e+4>>2]|0;if(!((t&-256|0)==1126902528&(e|0)==1129074247)){de[r>>2]=de[51];Lt(2368,r)}if((t|0)==1126902529&(e|0)==1129074247)e=de[i+44>>2]|0;else e=i+80|0;de[n>>2]=e;i=de[i>>2]|0;e=de[i+4>>2]|0;if(Pi[de[(de[8>>2]|0)+16>>2]&7](8,i,n)|0){s=de[n>>2]|0;n=de[51]|0;s=Ai[de[(de[s>>2]|0)+8>>2]&1](s)|0;de[o>>2]=n;de[o+4>>2]=e;de[o+8>>2]=s;Lt(2282,o)}else{de[s>>2]=de[51];de[s+4>>2]=e;Lt(2327,s)}}Lt(2406,a)}function sr(){var e=0;e=ve;ve=ve+16|0;if(!(Le(196,6)|0)){ve=e;return}else Lt(2179,e)}function lr(e){e=e|0;var t=0;t=ve;ve=ve+16|0;Ur(e);if(!(Be(de[49]|0,0)|0)){ve=t;return}else Lt(2229,t)}function ur(e){e=e|0;var t=0,r=0;t=0;while(1){if((me[2427+t>>0]|0)==(e|0)){r=2;break}t=t+1|0;if((t|0)==87){t=87;e=2515;r=5;break}}if((r|0)==2)if(!t)e=2515;else{e=2515;r=5}if((r|0)==5)while(1){r=e;while(1){e=r+1|0;if(!(pe[r>>0]|0))break;else r=e}t=t+-1|0;if(!t)break;else r=5}return e|0}function hr(){var e=0;if(!(de[52]|0))e=264;else{e=(ze()|0)+60|0;e=de[e>>2]|0}return e|0}function cr(e){e=e|0;var t=0;if(e>>>0>4294963200){t=hr()|0;de[t>>2]=0-e;e=-1}return e|0}function fr(e,t){e=+e;t=t|0;var r=0,i=0,n=0;ee[te>>3]=e;r=de[te>>2]|0;i=de[te+4>>2]|0;n=Zr(r|0,i|0,52)|0;n=n&2047;switch(n|0){case 0:{if(e!=0.0){e=+fr(e*18446744073709552.0e3,t);r=(de[t>>2]|0)+-64|0}else r=0;de[t>>2]=r;break}case 2047:break;default:{de[t>>2]=n+-1022;de[te>>2]=r;de[te+4>>2]=i&-2146435073|1071644672;e=+ee[te>>3]}}return+e}function pr(e,t){e=+e;t=t|0;return+ +fr(e,t)}function dr(e,t,r){e=e|0;t=t|0;r=r|0;do{if(e){if(t>>>0<128){pe[e>>0]=t;e=1;break}if(t>>>0<2048){pe[e>>0]=t>>>6|192;pe[e+1>>0]=t&63|128;e=2;break}if(t>>>0<55296|(t&-8192|0)==57344){pe[e>>0]=t>>>12|224;pe[e+1>>0]=t>>>6&63|128;pe[e+2>>0]=t&63|128;e=3;break}if((t+-65536|0)>>>0<1048576){pe[e>>0]=t>>>18|240;pe[e+1>>0]=t>>>12&63|128;pe[e+2>>0]=t>>>6&63|128;pe[e+3>>0]=t&63|128;e=4;break}else{e=hr()|0;de[e>>2]=84;e=-1;break}}else e=1}while(0);return e|0}function mr(e,t){e=e|0;t=t|0;if(!e)e=0;else e=dr(e,t,0)|0;return e|0}function gr(e){e=e|0;var t=0,r=0;do{if(e){if((de[e+76>>2]|0)<=-1){t=Dr(e)|0;break}r=(kr(e)|0)==0;t=Dr(e)|0;if(!r)Sr(e)}else{if(!(de[65]|0))t=0;else t=gr(de[65]|0)|0;Ue(236);e=de[58]|0;if(e)do{if((de[e+76>>2]|0)>-1)r=kr(e)|0;else r=0;if((de[e+20>>2]|0)>>>0>(de[e+28>>2]|0)>>>0)t=Dr(e)|0|t;if(r)Sr(e);e=de[e+56>>2]|0}while((e|0)!=0);je(236)}}while(0);return t|0}function vr(e,t){e=e|0;t=t|0;var r=0,i=0,n=0,o=0,a=0;if((de[t+76>>2]|0)>=0?(kr(t)|0)!=0:0){if((pe[t+75>>0]|0)!=(e|0)?(i=t+20|0,n=de[i>>2]|0,n>>>0<(de[t+16>>2]|0)>>>0):0){de[i>>2]=n+1;pe[n>>0]=e;r=e&255}else r=Pr(t,e)|0;Sr(t)}else a=3;do{if((a|0)==3){if((pe[t+75>>0]|0)!=(e|0)?(o=t+20|0,r=de[o>>2]|0,r>>>0<(de[t+16>>2]|0)>>>0):0){de[o>>2]=r+1;pe[r>>0]=e;r=e&255;break}r=Pr(t,e)|0}}while(0);return r|0}function _r(e,t,r){e=e|0;t=t|0;r=r|0;var i=0,n=0,o=0,a=0;i=r+16|0;n=de[i>>2]|0;if(!n)if(!(Or(r)|0)){n=de[i>>2]|0;o=4}else i=0;else o=4;e:do{if((o|0)==4){a=r+20|0;o=de[a>>2]|0;if((n-o|0)>>>0>>0){i=Pi[de[r+36>>2]&7](r,e,t)|0;break}t:do{if((pe[r+75>>0]|0)>-1){i=t;while(1){if(!i){n=o;i=0;break t}n=i+-1|0;if((pe[e+n>>0]|0)==10)break;else i=n}if((Pi[de[r+36>>2]&7](r,e,i)|0)>>>0>>0)break e;t=t-i|0;e=e+i|0;n=de[a>>2]|0}else{n=o;i=0}}while(0);Qr(n|0,e|0,t|0)|0;de[a>>2]=(de[a>>2]|0)+t;i=i+t|0}}while(0);return i|0}function yr(e,t){e=e|0;t=t|0;var r=0,i=0;r=ve;ve=ve+16|0;i=r;de[i>>2]=t;t=xr(de[64]|0,e,i)|0;ve=r;return t|0}function br(e,t,r){e=e|0;t=t|0;r=r|0;var i=0,n=0;i=ve;ve=ve+16|0;n=i;de[n>>2]=r;r=Tr(e,t,n)|0;ve=i;return r|0}function xr(e,t,r){e=e|0;t=t|0;r=r|0;var i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0;m=ve;ve=ve+224|0;c=m+120|0;d=m+80|0;p=m;f=m+136|0;i=d;n=i+40|0;do{de[i>>2]=0;i=i+4|0}while((i|0)<(n|0));de[c>>2]=de[r>>2];if((Rr(0,t,c,p,d)|0)<0)r=-1;else{if((de[e+76>>2]|0)>-1)u=kr(e)|0;else u=0;r=de[e>>2]|0;h=r&32;if((pe[e+74>>0]|0)<1)de[e>>2]=r&-33;r=e+48|0;if(!(de[r>>2]|0)){n=e+44|0;o=de[n>>2]|0;de[n>>2]=f;a=e+28|0;de[a>>2]=f;s=e+20|0;de[s>>2]=f;de[r>>2]=80;l=e+16|0;de[l>>2]=f+80;i=Rr(e,t,c,p,d)|0;if(o){Pi[de[e+36>>2]&7](e,0,0)|0;i=(de[s>>2]|0)==0?-1:i;de[n>>2]=o;de[r>>2]=0;de[l>>2]=0;de[a>>2]=0;de[s>>2]=0}}else i=Rr(e,t,c,p,d)|0;r=de[e>>2]|0;de[e>>2]=r|h;if(u)Sr(e);r=(r&32|0)==0?i:-1}ve=m;return r|0}function wr(e,t,r,i){e=e|0;t=t|0;r=r|0;i=i|0;var n=0,o=0,a=0,s=0,l=0,u=0,h=0;h=ve;ve=ve+128|0;n=h+112|0;u=h;o=u;a=268;s=o+112|0;do{de[o>>2]=de[a>>2];o=o+4|0;a=a+4|0}while((o|0)<(s|0));if((t+-1|0)>>>0>2147483646)if(!t){t=1;l=4}else{t=hr()|0;de[t>>2]=75;t=-1}else{n=e;l=4}if((l|0)==4){l=-2-n|0;l=t>>>0>l>>>0?l:t;de[u+48>>2]=l;e=u+20|0;de[e>>2]=n;de[u+44>>2]=n;t=n+l|0;n=u+16|0;de[n>>2]=t;de[u+28>>2]=t;t=xr(u,r,i)|0;if(l){r=de[e>>2]|0;pe[r+(((r|0)==(de[n>>2]|0))<<31>>31)>>0]=0}}ve=h;return t|0}function Tr(e,t,r){e=e|0;t=t|0;r=r|0;return wr(e,2147483647,t,r)|0}function kr(e){e=e|0;return 0}function Sr(e){e=e|0;return}function Pr(e,t){e=e|0;t=t|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0;l=ve;ve=ve+16|0;s=l;a=t&255;pe[s>>0]=a;i=e+16|0;n=de[i>>2]|0;if(!n)if(!(Or(e)|0)){n=de[i>>2]|0;o=4}else r=-1;else o=4;do{if((o|0)==4){i=e+20|0;o=de[i>>2]|0;if(o>>>0>>0?(r=t&255,(r|0)!=(pe[e+75>>0]|0)):0){de[i>>2]=o+1;pe[o>>0]=a;break}if((Pi[de[e+36>>2]&7](e,s,1)|0)==1)r=me[s>>0]|0;else r=-1}}while(0);ve=l;return r|0}function Er(e){e=e|0;var t=0,r=0;t=ve;ve=ve+16|0;r=t;de[r>>2]=de[e+60>>2];e=cr(Pe(6,r|0)|0)|0;ve=t;return e|0}function Cr(e,t,r){e=e|0;t=t|0;r=r|0;var i=0,n=0,o=0;n=ve;ve=ve+32|0;o=n;i=n+20|0;de[o>>2]=de[e+60>>2];de[o+4>>2]=0;de[o+8>>2]=t;de[o+12>>2]=i;de[o+16>>2]=r;if((cr(qe(140,o|0)|0)|0)<0){de[i>>2]=-1;e=-1}else e=de[i>>2]|0;ve=n;return e|0}function Ar(e,t,r){e=e|0;t=t|0;r=r|0;var i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0;d=ve;ve=ve+48|0;c=d+16|0;h=d;i=d+32|0;f=e+28|0;n=de[f>>2]|0;de[i>>2]=n;p=e+20|0;n=(de[p>>2]|0)-n|0;de[i+4>>2]=n;de[i+8>>2]=t;de[i+12>>2]=r;l=e+60|0;u=e+44|0;t=2;n=n+r|0;while(1){if(!(de[52]|0)){de[c>>2]=de[l>>2];de[c+4>>2]=i;de[c+8>>2]=t;a=cr(Ge(146,c|0)|0)|0}else{He(7,e|0);de[h>>2]=de[l>>2];de[h+4>>2]=i;de[h+8>>2]=t;a=cr(Ge(146,h|0)|0)|0;ke(0)}if((n|0)==(a|0)){n=6;break}if((a|0)<0){n=8;break}n=n-a|0;o=de[i+4>>2]|0;if(a>>>0<=o>>>0)if((t|0)==2){de[f>>2]=(de[f>>2]|0)+a;s=o;t=2}else s=o;else{s=de[u>>2]|0;de[f>>2]=s;de[p>>2]=s;s=de[i+12>>2]|0;a=a-o|0;i=i+8|0;t=t+-1|0}de[i>>2]=(de[i>>2]|0)+a;de[i+4>>2]=s-a}if((n|0)==6){c=de[u>>2]|0;de[e+16>>2]=c+(de[e+48>>2]|0);e=c;de[f>>2]=e;de[p>>2]=e}else if((n|0)==8){de[e+16>>2]=0;de[f>>2]=0;de[p>>2]=0;de[e>>2]=de[e>>2]|32;if((t|0)==2)r=0;else r=r-(de[i+4>>2]|0)|0}ve=d;return r|0}function Ir(e,t,r){e=e|0;t=t|0;r=r|0;var i=0,n=0;n=ve;ve=ve+80|0;i=n;de[e+36>>2]=3;if((de[e>>2]&64|0)==0?(de[i>>2]=de[e+60>>2],de[i+4>>2]=21505,de[i+8>>2]=n+12,(Se(54,i|0)|0)!=0):0)pe[e+75>>0]=-1;i=Ar(e,t,r)|0;ve=n;return i|0}function Or(e){e=e|0;var t=0,r=0;t=e+74|0;r=pe[t>>0]|0;pe[t>>0]=r+255|r;t=de[e>>2]|0;if(!(t&8)){de[e+8>>2]=0;de[e+4>>2]=0;t=de[e+44>>2]|0;de[e+28>>2]=t;de[e+20>>2]=t;de[e+16>>2]=t+(de[e+48>>2]|0);t=0}else{de[e>>2]=t|32;t=-1}return t|0}function Mr(e,t,r){e=e|0;t=t|0;r=r|0;var i=0,n=0,o=0,a=0;o=t&255;i=(r|0)!=0;e:do{if(i&(e&3|0)!=0){n=t&255;while(1){if((pe[e>>0]|0)==n<<24>>24){a=6;break e}e=e+1|0;r=r+-1|0;i=(r|0)!=0;if(!(i&(e&3|0)!=0)){a=5;break}}}else a=5}while(0);if((a|0)==5)if(i)a=6;else r=0;e:do{if((a|0)==6){n=t&255;if((pe[e>>0]|0)!=n<<24>>24){i=_e(o,16843009)|0;t:do{if(r>>>0>3)while(1){o=de[e>>2]^i;if((o&-2139062144^-2139062144)&o+-16843009)break;e=e+4|0;r=r+-4|0;if(r>>>0<=3){a=11;break t}}else a=11}while(0);if((a|0)==11)if(!r){r=0;break}while(1){if((pe[e>>0]|0)==n<<24>>24)break e;e=e+1|0;r=r+-1|0;if(!r){r=0;break}}}}}while(0);return((r|0)!=0?e:0)|0}function Dr(e){e=e|0;var t=0,r=0,i=0,n=0,o=0,a=0;t=e+20|0;o=e+28|0;if((de[t>>2]|0)>>>0>(de[o>>2]|0)>>>0?(Pi[de[e+36>>2]&7](e,0,0)|0,(de[t>>2]|0)==0):0)t=-1;else{a=e+4|0;r=de[a>>2]|0;i=e+8|0;n=de[i>>2]|0;if(r>>>0>>0)Pi[de[e+40>>2]&7](e,r-n|0,1)|0;de[e+16>>2]=0;de[o>>2]=0;de[t>>2]=0;de[i>>2]=0;de[a>>2]=0;t=0}return t|0}function Rr(e,t,r,i,n){e=e|0;t=t|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0,l=0,u=0.0,h=0,c=0,f=0,p=0,d=0.0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,E=0,C=0,A=0,I=0,O=0,M=0,D=0,R=0,z=0,F=0,L=0,j=0,N=0,B=0,U=0,X=0,H=0,W=0,q=0,G=0,V=0,Y=0,Z=0,J=0,K=0,Q=0;Q=ve;ve=ve+624|0;V=Q+24|0;Z=Q+16|0;Y=Q+588|0;X=Q+576|0;G=Q;N=Q+536|0;K=Q+8|0;J=Q+528|0;I=(e|0)!=0;O=N+40|0;j=O;N=N+39|0;B=K+4|0;U=X+12|0;X=X+11|0;H=Y;W=U;q=W-H|0;M=-2-H|0;D=W+2|0;R=V+288|0;z=Y+9|0;F=z;L=Y+8|0;o=0;m=t;a=0;t=0;e:while(1){do{if((o|0)>-1)if((a|0)>(2147483647-o|0)){o=hr()|0;de[o>>2]=75;o=-1;break}else{o=a+o|0;break}}while(0);a=pe[m>>0]|0;if(!(a<<24>>24)){A=245;break}else s=m;t:while(1){switch(a<<24>>24){case 37:{a=s;A=9;break t}case 0:{a=s;break t}default:{}}C=s+1|0;a=pe[C>>0]|0;s=C}t:do{if((A|0)==9)while(1){A=0;if((pe[a+1>>0]|0)!=37)break t;s=s+1|0;a=a+2|0;if((pe[a>>0]|0)==37)A=9;else break}}while(0);v=s-m|0;if(I?(de[e>>2]&32|0)==0:0)_r(m,v,e)|0;if((s|0)!=(m|0)){m=a;a=v;continue}h=a+1|0;s=pe[h>>0]|0;l=(s<<24>>24)+-48|0;if(l>>>0<10){C=(pe[a+2>>0]|0)==36;h=C?a+3|0:h;s=pe[h>>0]|0;p=C?l:-1;t=C?1:t}else p=-1;a=s<<24>>24;t:do{if((a&-32|0)==32){l=0;while(1){if(!(1<>24)+-32|l;h=h+1|0;s=pe[h>>0]|0;a=s<<24>>24;if((a&-32|0)!=32){c=l;a=h;break}}}else{c=0;a=h}}while(0);do{if(s<<24>>24==42){l=a+1|0;s=(pe[l>>0]|0)+-48|0;if(s>>>0<10?(pe[a+2>>0]|0)==36:0){de[n+(s<<2)>>2]=10;t=1;a=a+3|0;s=de[i+((pe[l>>0]|0)+-48<<3)>>2]|0}else{if(t){o=-1;break e}if(!I){g=c;a=l;t=0;C=0;break}t=(de[r>>2]|0)+(4-1)&~(4-1);s=de[t>>2]|0;de[r>>2]=t+4;t=0;a=l}if((s|0)<0){g=c|8192;C=0-s|0}else{g=c;C=s}}else{l=(s<<24>>24)+-48|0;if(l>>>0<10){s=0;do{s=(s*10|0)+l|0;a=a+1|0;l=(pe[a>>0]|0)+-48|0}while(l>>>0<10);if((s|0)<0){o=-1;break e}else{g=c;C=s}}else{g=c;C=0}}}while(0);t:do{if((pe[a>>0]|0)==46){l=a+1|0;s=pe[l>>0]|0;if(s<<24>>24!=42){h=(s<<24>>24)+-48|0;if(h>>>0<10){a=l;s=0}else{a=l;h=0;break}while(1){s=(s*10|0)+h|0;a=a+1|0;h=(pe[a>>0]|0)+-48|0;if(h>>>0>=10){h=s;break t}}}l=a+2|0;s=(pe[l>>0]|0)+-48|0;if(s>>>0<10?(pe[a+3>>0]|0)==36:0){de[n+(s<<2)>>2]=10;a=a+4|0;h=de[i+((pe[l>>0]|0)+-48<<3)>>2]|0;break}if(t){o=-1;break e}if(I){a=(de[r>>2]|0)+(4-1)&~(4-1);h=de[a>>2]|0;de[r>>2]=a+4;a=l}else{a=l;h=0}}else h=-1}while(0);f=0;while(1){s=(pe[a>>0]|0)+-65|0;if(s>>>0>57){o=-1;break e}l=a+1|0;s=pe[5359+(f*58|0)+s>>0]|0;c=s&255;if((c+-1|0)>>>0<8){a=l;f=c}else{E=l;break}}if(!(s<<24>>24)){o=-1;break}l=(p|0)>-1;do{if(s<<24>>24==19)if(l){o=-1;break e}else A=52;else{if(l){de[n+(p<<2)>>2]=c;S=i+(p<<3)|0;P=de[S+4>>2]|0;A=G;de[A>>2]=de[S>>2];de[A+4>>2]=P;A=52;break}if(!I){o=0;break e}Lr(G,c,r)}}while(0);if((A|0)==52?(A=0,!I):0){m=E;a=v;continue}p=pe[a>>0]|0;p=(f|0)!=0&(p&15|0)==3?p&-33:p;l=g&-65537;P=(g&8192|0)==0?g:l;t:do{switch(p|0){case 110:switch(f|0){case 0:{de[de[G>>2]>>2]=o;m=E;a=v;continue e}case 1:{de[de[G>>2]>>2]=o;m=E;a=v;continue e}case 2:{m=de[G>>2]|0;de[m>>2]=o;de[m+4>>2]=((o|0)<0)<<31>>31;m=E;a=v;continue e}case 3:{$[de[G>>2]>>1]=o;m=E;a=v;continue e}case 4:{pe[de[G>>2]>>0]=o;m=E;a=v;continue e}case 6:{de[de[G>>2]>>2]=o;m=E;a=v;continue e}case 7:{m=de[G>>2]|0;de[m>>2]=o;de[m+4>>2]=((o|0)<0)<<31>>31;m=E;a=v;continue e}default:{m=E;a=v;continue e}}case 112:{f=P|8;h=h>>>0>8?h:8;p=120;A=64;break}case 88:case 120:{f=P;A=64;break}case 111:{l=G;s=de[l>>2]|0;l=de[l+4>>2]|0;if((s|0)==0&(l|0)==0)a=O;else{a=O;do{a=a+-1|0;pe[a>>0]=s&7|48;s=Zr(s|0,l|0,3)|0;l=re}while(!((s|0)==0&(l|0)==0))}if(!(P&8)){s=P;f=0;c=5839;A=77}else{f=j-a+1|0;s=P;h=(h|0)<(f|0)?f:h;f=0;c=5839;A=77}break}case 105:case 100:{s=G;a=de[s>>2]|0;s=de[s+4>>2]|0;if((s|0)<0){a=Vr(0,0,a|0,s|0)|0;s=re;l=G;de[l>>2]=a;de[l+4>>2]=s;l=1;c=5839;A=76;break t}if(!(P&2048)){c=P&1;l=c;c=(c|0)==0?5839:5841;A=76}else{l=1;c=5840;A=76}break}case 117:{s=G;a=de[s>>2]|0;s=de[s+4>>2]|0;l=0;c=5839;A=76;break}case 99:{pe[N>>0]=de[G>>2];m=N;s=1;f=0;p=5839;a=O;break}case 109:{a=hr()|0;a=ur(de[a>>2]|0)|0;A=82;break}case 115:{a=de[G>>2]|0;a=(a|0)!=0?a:5849;A=82;break}case 67:{de[K>>2]=de[G>>2];de[B>>2]=0;de[G>>2]=K;h=-1;A=86;break}case 83:{if(!h){Nr(e,32,C,0,P);a=0;A=98}else A=86;break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{u=+ee[G>>3];de[Z>>2]=0;ee[te>>3]=u;if((de[te+4>>2]|0)>=0)if(!(P&2048)){S=P&1;k=S;S=(S|0)==0?5857:5862}else{k=1;S=5859}else{u=-u;k=1;S=5856}ee[te>>3]=u;T=de[te+4>>2]&2146435072;do{if(T>>>0<2146435072|(T|0)==2146435072&0<0){d=+pr(u,Z)*2.0;s=d!=0.0;if(s)de[Z>>2]=(de[Z>>2]|0)+-1;x=p|32;if((x|0)==97){m=p&32;v=(m|0)==0?S:S+9|0;g=k|2;a=12-h|0;do{if(!(h>>>0>11|(a|0)==0)){u=8.0;do{a=a+-1|0;u=u*16.0}while((a|0)!=0);if((pe[v>>0]|0)==45){u=-(u+(-d-u));break}else{u=d+u-u;break}}else u=d}while(0);s=de[Z>>2]|0;a=(s|0)<0?0-s|0:s;a=jr(a,((a|0)<0)<<31>>31,U)|0;if((a|0)==(U|0)){pe[X>>0]=48;a=X}pe[a+-1>>0]=(s>>31&2)+43;f=a+-2|0;pe[f>>0]=p+15;c=(h|0)<1;l=(P&8|0)==0;s=Y;while(1){S=~~u;a=s+1|0;pe[s>>0]=me[5823+S>>0]|m;u=(u-+(S|0))*16.0;do{if((a-H|0)==1){if(l&(c&u==0.0))break;pe[a>>0]=46;a=s+2|0}}while(0);if(!(u!=0.0))break;else s=a}h=(h|0)!=0&(M+a|0)<(h|0)?D+h-f|0:q-f+a|0;l=h+g|0;Nr(e,32,C,l,P);if(!(de[e>>2]&32))_r(v,g,e)|0;Nr(e,48,C,l,P^65536);a=a-H|0;if(!(de[e>>2]&32))_r(Y,a,e)|0;s=W-f|0;Nr(e,48,h-(a+s)|0,0,0);if(!(de[e>>2]&32))_r(f,s,e)|0;Nr(e,32,C,l,P^8192);a=(l|0)<(C|0)?C:l;break}a=(h|0)<0?6:h;if(s){s=(de[Z>>2]|0)+-28|0;de[Z>>2]=s;u=d*268435456.0}else{u=d;s=de[Z>>2]|0}T=(s|0)<0?V:R;w=T;s=T;do{b=~~u>>>0;de[s>>2]=b;s=s+4|0;u=(u-+(b>>>0))*1.0e9}while(u!=0.0);l=s;s=de[Z>>2]|0;if((s|0)>0){c=T;while(1){f=(s|0)>29?29:s;h=l+-4|0;do{if(h>>>0>>0)h=c;else{s=0;do{b=Jr(de[h>>2]|0,0,f|0)|0;b=Kr(b|0,re|0,s|0,0)|0;s=re;y=ai(b|0,s|0,1e9,0)|0;de[h>>2]=y;s=oi(b|0,s|0,1e9,0)|0;h=h+-4|0}while(h>>>0>=c>>>0);if(!s){h=c;break}h=c+-4|0;de[h>>2]=s}}while(0);while(1){if(l>>>0<=h>>>0)break;s=l+-4|0;if(!(de[s>>2]|0))l=s;else break}s=(de[Z>>2]|0)-f|0;de[Z>>2]=s;if((s|0)>0)c=h;else break}}else h=T;if((s|0)<0){v=((a+25|0)/9|0)+1|0;_=(x|0)==102;m=h;while(1){g=0-s|0;g=(g|0)>9?9:g;do{if(m>>>0>>0){s=(1<>>g;h=0;f=m;do{b=de[f>>2]|0;de[f>>2]=(b>>>g)+h;h=_e(b&s,c)|0;f=f+4|0}while(f>>>0>>0);s=(de[m>>2]|0)==0?m+4|0:m;if(!h){h=s;break}de[l>>2]=h;h=s;l=l+4|0}else h=(de[m>>2]|0)==0?m+4|0:m}while(0);s=_?T:h;l=(l-s>>2|0)>(v|0)?s+(v<<2)|0:l;s=(de[Z>>2]|0)+g|0;de[Z>>2]=s;if((s|0)>=0){m=h;break}else m=h}}else m=h;do{if(m>>>0>>0){s=(w-m>>2)*9|0;c=de[m>>2]|0;if(c>>>0<10)break;else h=10;do{h=h*10|0;s=s+1|0}while(c>>>0>=h>>>0)}else s=0}while(0);y=(x|0)==103;b=(a|0)!=0;h=a-((x|0)!=102?s:0)+((b&y)<<31>>31)|0;if((h|0)<(((l-w>>2)*9|0)+-9|0)){f=h+9216|0;_=(f|0)/9|0;h=T+(_+-1023<<2)|0;f=((f|0)%9|0)+1|0;if((f|0)<9){c=10;do{c=c*10|0;f=f+1|0}while((f|0)!=9)}else c=10;g=de[h>>2]|0;v=(g>>>0)%(c>>>0)|0;if((v|0)==0?(T+(_+-1022<<2)|0)==(l|0):0)c=m;else A=163;do{if((A|0)==163){A=0;d=(((g>>>0)/(c>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;f=(c|0)/2|0;do{if(v>>>0>>0)u=.5;else{if((v|0)==(f|0)?(T+(_+-1022<<2)|0)==(l|0):0){u=1.0;break}u=1.5}}while(0);do{if(k){if((pe[S>>0]|0)!=45)break;d=-d;u=-u}}while(0);f=g-v|0;de[h>>2]=f;if(!(d+u!=d)){c=m;break}x=f+c|0;de[h>>2]=x;if(x>>>0>999999999){s=m;while(1){c=h+-4|0;de[h>>2]=0;if(c>>>0>>0){s=s+-4|0;de[s>>2]=0}x=(de[c>>2]|0)+1|0;de[c>>2]=x;if(x>>>0>999999999)h=c;else{m=s;h=c;break}}}s=(w-m>>2)*9|0;f=de[m>>2]|0;if(f>>>0<10){c=m;break}else c=10;do{c=c*10|0;s=s+1|0}while(f>>>0>=c>>>0);c=m}}while(0);x=h+4|0;m=c;l=l>>>0>x>>>0?x:l}v=0-s|0;while(1){if(l>>>0<=m>>>0){_=0;x=l;break}h=l+-4|0;if(!(de[h>>2]|0))l=h;else{_=1;x=l;break}}do{if(y){a=(b&1^1)+a|0;if((a|0)>(s|0)&(s|0)>-5){p=p+-1|0;a=a+-1-s|0}else{p=p+-2|0;a=a+-1|0}l=P&8;if(l)break;do{if(_){l=de[x+-4>>2]|0;if(!l){h=9;break}if(!((l>>>0)%10|0)){c=10;h=0}else{h=0;break}do{c=c*10|0;h=h+1|0}while(((l>>>0)%(c>>>0)|0|0)==0)}else h=9}while(0);l=((x-w>>2)*9|0)+-9|0;if((p|32|0)==102){l=l-h|0;l=(l|0)<0?0:l;a=(a|0)<(l|0)?a:l;l=0;break}else{l=l+s-h|0;l=(l|0)<0?0:l;a=(a|0)<(l|0)?a:l;l=0;break}}else l=P&8}while(0);g=a|l;c=(g|0)!=0&1;f=(p|32|0)==102;if(f){s=(s|0)>0?s:0;p=0}else{h=(s|0)<0?v:s;h=jr(h,((h|0)<0)<<31>>31,U)|0;if((W-h|0)<2)do{h=h+-1|0;pe[h>>0]=48}while((W-h|0)<2);pe[h+-1>>0]=(s>>31&2)+43;w=h+-2|0;pe[w>>0]=p;s=W-w|0;p=w}v=k+1+a+c+s|0;Nr(e,32,C,v,P);if(!(de[e>>2]&32))_r(S,k,e)|0;Nr(e,48,C,v,P^65536);do{if(f){h=m>>>0>T>>>0?T:m;s=h;do{l=jr(de[s>>2]|0,0,z)|0;do{if((s|0)==(h|0)){if((l|0)!=(z|0))break;pe[L>>0]=48;l=L}else{if(l>>>0<=Y>>>0)break;do{l=l+-1|0;pe[l>>0]=48}while(l>>>0>Y>>>0)}}while(0);if(!(de[e>>2]&32))_r(l,F-l|0,e)|0;s=s+4|0}while(s>>>0<=T>>>0);do{if(g){if(de[e>>2]&32)break;_r(5891,1,e)|0}}while(0);if((a|0)>0&s>>>0>>0){l=s;while(1){s=jr(de[l>>2]|0,0,z)|0;if(s>>>0>Y>>>0)do{s=s+-1|0;pe[s>>0]=48}while(s>>>0>Y>>>0);if(!(de[e>>2]&32))_r(s,(a|0)>9?9:a,e)|0;l=l+4|0;s=a+-9|0;if(!((a|0)>9&l>>>0>>0)){a=s;break}else a=s}}Nr(e,48,a+9|0,9,0)}else{f=_?x:m+4|0;if((a|0)>-1){c=(l|0)==0;h=m;do{s=jr(de[h>>2]|0,0,z)|0;if((s|0)==(z|0)){pe[L>>0]=48;s=L}do{if((h|0)==(m|0)){l=s+1|0;if(!(de[e>>2]&32))_r(s,1,e)|0;if(c&(a|0)<1){s=l;break}if(de[e>>2]&32){s=l;break}_r(5891,1,e)|0;s=l}else{if(s>>>0<=Y>>>0)break;do{s=s+-1|0;pe[s>>0]=48}while(s>>>0>Y>>>0)}}while(0);l=F-s|0;if(!(de[e>>2]&32))_r(s,(a|0)>(l|0)?l:a,e)|0;a=a-l|0;h=h+4|0}while(h>>>0>>0&(a|0)>-1)}Nr(e,48,a+18|0,18,0);if(de[e>>2]&32)break;_r(p,W-p|0,e)|0}}while(0);Nr(e,32,C,v,P^8192);a=(v|0)<(C|0)?C:v}else{f=(p&32|0)!=0;c=u!=u|0.0!=0.0;s=c?0:k;h=s+3|0;Nr(e,32,C,h,l);a=de[e>>2]|0;if(!(a&32)){_r(S,s,e)|0;a=de[e>>2]|0}if(!(a&32))_r(c?f?5883:5887:f?5875:5879,3,e)|0;Nr(e,32,C,h,P^8192);a=(h|0)<(C|0)?C:h}}while(0);m=E;continue e}default:{l=P;s=h;f=0;p=5839;a=O}}}while(0);t:do{if((A|0)==64){l=G;s=de[l>>2]|0;l=de[l+4>>2]|0;c=p&32;if(!((s|0)==0&(l|0)==0)){a=O;do{a=a+-1|0;pe[a>>0]=me[5823+(s&15)>>0]|c;s=Zr(s|0,l|0,4)|0;l=re}while(!((s|0)==0&(l|0)==0));A=G;if((f&8|0)==0|(de[A>>2]|0)==0&(de[A+4>>2]|0)==0){s=f;f=0;c=5839;A=77}else{s=f;f=2;c=5839+(p>>4)|0;A=77}}else{a=O;s=f;f=0;c=5839;A=77}}else if((A|0)==76){a=jr(a,s,O)|0;s=P;f=l;A=77}else if((A|0)==82){A=0;P=Mr(a,0,h)|0;S=(P|0)==0;m=a;s=S?h:P-a|0;f=0;p=5839;a=S?a+h|0:P}else if((A|0)==86){A=0;s=0;a=0;c=de[G>>2]|0;while(1){l=de[c>>2]|0;if(!l)break;a=mr(J,l)|0;if((a|0)<0|a>>>0>(h-s|0)>>>0)break;s=a+s|0;if(h>>>0>s>>>0)c=c+4|0;else break}if((a|0)<0){o=-1;break e}Nr(e,32,C,s,P);if(!s){a=0;A=98}else{l=0;h=de[G>>2]|0;while(1){a=de[h>>2]|0;if(!a){a=s;A=98;break t}a=mr(J,a)|0;l=a+l|0;if((l|0)>(s|0)){a=s;A=98;break t}if(!(de[e>>2]&32))_r(J,a,e)|0;if(l>>>0>=s>>>0){a=s;A=98;break}else h=h+4|0}}}}while(0);if((A|0)==98){A=0;Nr(e,32,C,a,P^8192);m=E;a=(C|0)>(a|0)?C:a;continue}if((A|0)==77){A=0;l=(h|0)>-1?s&-65537:s;s=G;s=(de[s>>2]|0)!=0|(de[s+4>>2]|0)!=0;if((h|0)!=0|s){s=(s&1^1)+(j-a)|0;m=a;s=(h|0)>(s|0)?h:s;p=c;a=O}else{m=O;s=0;p=c;a=O}}c=a-m|0;s=(s|0)<(c|0)?c:s;h=f+s|0;a=(C|0)<(h|0)?h:C;Nr(e,32,a,h,l);if(!(de[e>>2]&32))_r(p,f,e)|0;Nr(e,48,a,h,l^65536);Nr(e,48,s,c,0);if(!(de[e>>2]&32))_r(m,c,e)|0;Nr(e,32,a,h,l^8192);m=E}e:do{if((A|0)==245)if(!e)if(t){o=1;while(1){t=de[n+(o<<2)>>2]|0;if(!t)break;Lr(i+(o<<3)|0,t,r);o=o+1|0;if((o|0)>=10){o=1;break e}}if((o|0)<10)while(1){if(de[n+(o<<2)>>2]|0){o=-1;break e}o=o+1|0;if((o|0)>=10){o=1;break}}else o=1}else o=0}while(0);ve=Q;return o|0}function zr(e){e=e|0;if(!(de[e+68>>2]|0))Sr(e);return}function Fr(e,t,r){e=e|0;t=t|0;r=r|0;var i=0,n=0;i=e+20|0;n=de[i>>2]|0;e=(de[e+16>>2]|0)-n|0;e=e>>>0>r>>>0?r:e;Qr(n|0,t|0,e|0)|0;de[i>>2]=(de[i>>2]|0)+e;return r|0}function Lr(e,t,r){e=e|0;t=t|0;r=r|0;var i=0,n=0,o=0.0;e:do{if(t>>>0<=20)do{switch(t|0){case 9:{i=(de[r>>2]|0)+(4-1)&~(4-1);t=de[i>>2]|0;de[r>>2]=i+4;de[e>>2]=t;break e}case 10:{i=(de[r>>2]|0)+(4-1)&~(4-1);t=de[i>>2]|0;de[r>>2]=i+4;i=e;de[i>>2]=t;de[i+4>>2]=((t|0)<0)<<31>>31;break e}case 11:{i=(de[r>>2]|0)+(4-1)&~(4-1);t=de[i>>2]|0;de[r>>2]=i+4;i=e;de[i>>2]=t;de[i+4>>2]=0;break e}case 12:{i=(de[r>>2]|0)+(8-1)&~(8-1);t=i;n=de[t>>2]|0;t=de[t+4>>2]|0;de[r>>2]=i+8;i=e;de[i>>2]=n;de[i+4>>2]=t;break e}case 13:{n=(de[r>>2]|0)+(4-1)&~(4-1);i=de[n>>2]|0;de[r>>2]=n+4;i=(i&65535)<<16>>16;n=e;de[n>>2]=i;de[n+4>>2]=((i|0)<0)<<31>>31;break e}case 14:{n=(de[r>>2]|0)+(4-1)&~(4-1);i=de[n>>2]|0;de[r>>2]=n+4;n=e;de[n>>2]=i&65535;de[n+4>>2]=0;break e}case 15:{n=(de[r>>2]|0)+(4-1)&~(4-1);i=de[n>>2]|0;de[r>>2]=n+4;i=(i&255)<<24>>24;n=e;de[n>>2]=i;de[n+4>>2]=((i|0)<0)<<31>>31;break e}case 16:{n=(de[r>>2]|0)+(4-1)&~(4-1);i=de[n>>2]|0;de[r>>2]=n+4;n=e;de[n>>2]=i&255;de[n+4>>2]=0;break e}case 17:{n=(de[r>>2]|0)+(8-1)&~(8-1);o=+ee[n>>3];de[r>>2]=n+8;ee[e>>3]=o;break e}case 18:{n=(de[r>>2]|0)+(8-1)&~(8-1);o=+ee[n>>3];de[r>>2]=n+8;ee[e>>3]=o;break e}default:break e}}while(0)}while(0);return}function jr(e,t,r){e=e|0;t=t|0;r=r|0;var i=0;if(t>>>0>0|(t|0)==0&e>>>0>4294967295)while(1){i=ai(e|0,t|0,10,0)|0;r=r+-1|0;pe[r>>0]=i|48;i=oi(e|0,t|0,10,0)|0;if(t>>>0>9|(t|0)==9&e>>>0>4294967295){e=i;t=re}else{e=i;break}}if(e)while(1){r=r+-1|0;pe[r>>0]=(e>>>0)%10|0|48;if(e>>>0<10)break;else e=(e>>>0)/10|0}return r|0}function Nr(e,t,r,i,n){e=e|0;t=t|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0;s=ve;ve=ve+256|0;a=s;do{if((r|0)>(i|0)&(n&73728|0)==0){n=r-i|0;Yr(a|0,t|0,(n>>>0>256?256:n)|0)|0;t=de[e>>2]|0;o=(t&32|0)==0;if(n>>>0>255){i=r-i|0;do{if(o){_r(a,256,e)|0;t=de[e>>2]|0}n=n+-256|0;o=(t&32|0)==0}while(n>>>0>255);if(o)n=i&255;else break}else if(!o)break;_r(a,n,e)|0}}while(0);ve=s;return}function Br(e){e=e|0;var t=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,T=0,k=0,S=0,P=0,E=0,C=0,A=0,I=0,O=0,M=0,D=0,R=0,z=0,F=0,L=0;do{if(e>>>0<245){p=e>>>0<11?16:e+11&-8;e=p>>>3;s=de[151]|0;r=s>>>e;if(r&3){e=(r&1^1)+e|0;i=e<<1;r=644+(i<<2)|0;i=644+(i+2<<2)|0;n=de[i>>2]|0;o=n+8|0;a=de[o>>2]|0;do{if((r|0)!=(a|0)){if(a>>>0<(de[155]|0)>>>0)Xe();t=a+12|0;if((de[t>>2]|0)==(n|0)){de[t>>2]=r;de[i>>2]=a;break}else Xe()}else de[151]=s&~(1<>2]=L|3;L=n+(L|4)|0;de[L>>2]=de[L>>2]|1;L=o;return L|0}a=de[153]|0;if(p>>>0>a>>>0){if(r){i=2<>>12&16;i=i>>>l;n=i>>>5&8;i=i>>>n;o=i>>>2&4;i=i>>>o;r=i>>>1&2;i=i>>>r;e=i>>>1&1;e=(n|l|o|r|e)+(i>>>e)|0;i=e<<1;r=644+(i<<2)|0;i=644+(i+2<<2)|0;o=de[i>>2]|0;l=o+8|0;n=de[l>>2]|0;do{if((r|0)!=(n|0)){if(n>>>0<(de[155]|0)>>>0)Xe();t=n+12|0;if((de[t>>2]|0)==(o|0)){de[t>>2]=r;de[i>>2]=n;u=de[153]|0;break}else Xe()}else{de[151]=s&~(1<>2]=p|3;s=o+p|0;de[o+(p|4)>>2]=a|1;de[o+L>>2]=a;if(u){n=de[156]|0;r=u>>>3;t=r<<1;i=644+(t<<2)|0;e=de[151]|0;r=1<>2]|0;if(t>>>0<(de[155]|0)>>>0)Xe();else{h=e;c=t}}else{de[151]=e|r;h=644+(t+2<<2)|0;c=i}de[h>>2]=n;de[c+12>>2]=n;de[n+8>>2]=c;de[n+12>>2]=i}de[153]=a;de[156]=s;L=l;return L|0}e=de[152]|0;if(e){r=(e&0-e)+-1|0;F=r>>>12&16;r=r>>>F;z=r>>>5&8;r=r>>>z;L=r>>>2&4;r=r>>>L;e=r>>>1&2;r=r>>>e;i=r>>>1&1;i=de[908+((z|F|L|e|i)+(r>>>i)<<2)>>2]|0;r=(de[i+4>>2]&-8)-p|0;e=i;while(1){t=de[e+16>>2]|0;if(!t){t=de[e+20>>2]|0;if(!t){l=r;break}}e=(de[t+4>>2]&-8)-p|0;L=e>>>0>>0;r=L?e:r;e=t;i=L?t:i}o=de[155]|0;if(i>>>0>>0)Xe();s=i+p|0;if(i>>>0>=s>>>0)Xe();a=de[i+24>>2]|0;r=de[i+12>>2]|0;do{if((r|0)==(i|0)){e=i+20|0;t=de[e>>2]|0;if(!t){e=i+16|0;t=de[e>>2]|0;if(!t){f=0;break}}while(1){r=t+20|0;n=de[r>>2]|0;if(n){t=n;e=r;continue}r=t+16|0;n=de[r>>2]|0;if(!n)break;else{t=n;e=r}}if(e>>>0>>0)Xe();else{de[e>>2]=0;f=t;break}}else{n=de[i+8>>2]|0;if(n>>>0>>0)Xe();t=n+12|0;if((de[t>>2]|0)!=(i|0))Xe();e=r+8|0;if((de[e>>2]|0)==(i|0)){de[t>>2]=r;de[e>>2]=n;f=r;break}else Xe()}}while(0);do{if(a){t=de[i+28>>2]|0;e=908+(t<<2)|0;if((i|0)==(de[e>>2]|0)){de[e>>2]=f;if(!f){de[152]=de[152]&~(1<>>0<(de[155]|0)>>>0)Xe();t=a+16|0;if((de[t>>2]|0)==(i|0))de[t>>2]=f;else de[a+20>>2]=f;if(!f)break}e=de[155]|0;if(f>>>0>>0)Xe();de[f+24>>2]=a;t=de[i+16>>2]|0;do{if(t)if(t>>>0>>0)Xe();else{de[f+16>>2]=t;de[t+24>>2]=f;break}}while(0);t=de[i+20>>2]|0;if(t)if(t>>>0<(de[155]|0)>>>0)Xe();else{de[f+20>>2]=t;de[t+24>>2]=f;break}}}while(0);if(l>>>0<16){L=l+p|0;de[i+4>>2]=L|3;L=i+(L+4)|0;de[L>>2]=de[L>>2]|1}else{de[i+4>>2]=p|3;de[i+(p|4)>>2]=l|1;de[i+(l+p)>>2]=l;t=de[153]|0;if(t){o=de[156]|0;r=t>>>3;t=r<<1;n=644+(t<<2)|0;e=de[151]|0;r=1<>2]|0;if(e>>>0<(de[155]|0)>>>0)Xe();else{d=t;m=e}}else{de[151]=e|r;d=644+(t+2<<2)|0;m=n}de[d>>2]=o;de[m+12>>2]=o;de[o+8>>2]=m;de[o+12>>2]=n}de[153]=l;de[156]=s}L=i+8|0;return L|0}else m=p}else m=p}else if(e>>>0<=4294967231){e=e+11|0;c=e&-8;h=de[152]|0;if(h){r=0-c|0;e=e>>>8;if(e)if(c>>>0>16777215)u=31;else{m=(e+1048320|0)>>>16&8;b=e<>>16&4;b=b<>>16&2;u=14-(d|m|u)+(b<>>15)|0;u=c>>>(u+7|0)&1|u<<1}else u=0;e=de[908+(u<<2)>>2]|0;e:do{if(!e){n=0;e=0;b=86}else{a=r;n=0;s=c<<((u|0)==31?0:25-(u>>>1)|0);l=e;e=0;while(1){o=de[l+4>>2]&-8;r=o-c|0;if(r>>>0>>0)if((o|0)==(c|0)){o=l;e=l;b=90;break e}else e=l;else r=a;b=de[l+20>>2]|0;l=de[l+16+(s>>>31<<2)>>2]|0;n=(b|0)==0|(b|0)==(l|0)?n:b;if(!l){b=86;break}else{a=r;s=s<<1}}}}while(0);if((b|0)==86){if((n|0)==0&(e|0)==0){e=2<>>12&16;e=e>>>f;h=e>>>5&8;e=e>>>h;d=e>>>2&4;e=e>>>d;m=e>>>1&2;e=e>>>m;n=e>>>1&1;n=de[908+((h|f|d|m|n)+(e>>>n)<<2)>>2]|0;e=0}if(!n){s=r;l=e}else{o=n;b=90}}if((b|0)==90)while(1){b=0;m=(de[o+4>>2]&-8)-c|0;n=m>>>0>>0;r=n?m:r;e=n?o:e;n=de[o+16>>2]|0;if(n){o=n;b=90;continue}o=de[o+20>>2]|0;if(!o){s=r;l=e;break}else b=90}if((l|0)!=0?s>>>0<((de[153]|0)-c|0)>>>0:0){n=de[155]|0;if(l>>>0>>0)Xe();a=l+c|0;if(l>>>0>=a>>>0)Xe();o=de[l+24>>2]|0;r=de[l+12>>2]|0;do{if((r|0)==(l|0)){e=l+20|0;t=de[e>>2]|0;if(!t){e=l+16|0;t=de[e>>2]|0;if(!t){p=0;break}}while(1){r=t+20|0;i=de[r>>2]|0;if(i){t=i;e=r;continue}r=t+16|0;i=de[r>>2]|0;if(!i)break;else{t=i;e=r}}if(e>>>0>>0)Xe();else{de[e>>2]=0;p=t;break}}else{i=de[l+8>>2]|0;if(i>>>0>>0)Xe();t=i+12|0;if((de[t>>2]|0)!=(l|0))Xe();e=r+8|0;if((de[e>>2]|0)==(l|0)){de[t>>2]=r;de[e>>2]=i;p=r;break}else Xe()}}while(0);do{if(o){t=de[l+28>>2]|0;e=908+(t<<2)|0;if((l|0)==(de[e>>2]|0)){de[e>>2]=p;if(!p){de[152]=de[152]&~(1<>>0<(de[155]|0)>>>0)Xe();t=o+16|0;if((de[t>>2]|0)==(l|0))de[t>>2]=p;else de[o+20>>2]=p;if(!p)break}e=de[155]|0;if(p>>>0>>0)Xe();de[p+24>>2]=o;t=de[l+16>>2]|0;do{if(t)if(t>>>0>>0)Xe();else{de[p+16>>2]=t;de[t+24>>2]=p;break}}while(0);t=de[l+20>>2]|0;if(t)if(t>>>0<(de[155]|0)>>>0)Xe();else{de[p+20>>2]=t;de[t+24>>2]=p;break}}}while(0);e:do{if(s>>>0>=16){de[l+4>>2]=c|3;de[l+(c|4)>>2]=s|1;de[l+(s+c)>>2]=s;t=s>>>3;if(s>>>0<256){e=t<<1;i=644+(e<<2)|0;r=de[151]|0;t=1<>2]|0;if(e>>>0<(de[155]|0)>>>0)Xe();else{v=t;_=e}}else{de[151]=r|t;v=644+(e+2<<2)|0;_=i}de[v>>2]=a;de[_+12>>2]=a;de[l+(c+8)>>2]=_;de[l+(c+12)>>2]=i;break}t=s>>>8;if(t)if(s>>>0>16777215)i=31;else{F=(t+1048320|0)>>>16&8;L=t<>>16&4;L=L<>>16&2;i=14-(z|F|i)+(L<>>15)|0;i=s>>>(i+7|0)&1|i<<1}else i=0;t=908+(i<<2)|0;de[l+(c+28)>>2]=i;de[l+(c+20)>>2]=0;de[l+(c+16)>>2]=0;e=de[152]|0;r=1<>2]=a;de[l+(c+24)>>2]=t;de[l+(c+12)>>2]=a;de[l+(c+8)>>2]=a;break}t=de[t>>2]|0;t:do{if((de[t+4>>2]&-8|0)!=(s|0)){i=s<<((i|0)==31?0:25-(i>>>1)|0);while(1){e=t+16+(i>>>31<<2)|0;r=de[e>>2]|0;if(!r)break;if((de[r+4>>2]&-8|0)==(s|0)){T=r;break t}else{i=i<<1;t=r}}if(e>>>0<(de[155]|0)>>>0)Xe();else{de[e>>2]=a;de[l+(c+24)>>2]=t;de[l+(c+12)>>2]=a;de[l+(c+8)>>2]=a;break e}}else T=t}while(0);t=T+8|0;e=de[t>>2]|0;L=de[155]|0;if(e>>>0>=L>>>0&T>>>0>=L>>>0){de[e+12>>2]=a;de[t>>2]=a;de[l+(c+8)>>2]=e;de[l+(c+12)>>2]=T;de[l+(c+24)>>2]=0;break}else Xe()}else{L=s+c|0;de[l+4>>2]=L|3;L=l+(L+4)|0;de[L>>2]=de[L>>2]|1}}while(0);L=l+8|0;return L|0}else m=c}else m=c}else m=-1}while(0);r=de[153]|0;if(r>>>0>=m>>>0){t=r-m|0;e=de[156]|0;if(t>>>0>15){de[156]=e+m;de[153]=t;de[e+(m+4)>>2]=t|1;de[e+r>>2]=t;de[e+4>>2]=m|3}else{de[153]=0;de[156]=0;de[e+4>>2]=r|3;L=e+(r+4)|0;de[L>>2]=de[L>>2]|1}L=e+8|0;return L|0}e=de[154]|0;if(e>>>0>m>>>0){F=e-m|0;de[154]=F;L=de[157]|0;de[157]=L+m;de[L+(m+4)>>2]=F|1;de[L+4>>2]=m|3;L=L+8|0;return L|0}do{if(!(de[269]|0)){e=De(30)|0;if(!(e+-1&e)){de[271]=e;de[270]=e;de[272]=-1;de[273]=-1;de[274]=0;de[262]=0;T=(We(0)|0)&-16^1431655768;de[269]=T;break}else Xe()}}while(0);l=m+48|0;s=de[271]|0;u=m+47|0;a=s+u|0;s=0-s|0;h=a&s;if(h>>>0<=m>>>0){L=0;return L|0}e=de[261]|0;if((e|0)!=0?(_=de[259]|0,T=_+h|0,T>>>0<=_>>>0|T>>>0>e>>>0):0){L=0;return L|0}e:do{if(!(de[262]&4)){e=de[157]|0;t:do{if(e){n=1052;while(1){r=de[n>>2]|0;if(r>>>0<=e>>>0?(g=n+4|0,(r+(de[g>>2]|0)|0)>>>0>e>>>0):0){o=n;e=g;break}n=de[n+8>>2]|0;if(!n){b=174;break t}}r=a-(de[154]|0)&s;if(r>>>0<2147483647){n=Ie(r|0)|0;T=(n|0)==((de[o>>2]|0)+(de[e>>2]|0)|0);e=T?r:0;if(T){if((n|0)!=(-1|0)){x=n;d=e;b=194;break e}}else b=184}else e=0}else b=174}while(0);do{if((b|0)==174){o=Ie(0)|0;if((o|0)!=(-1|0)){e=o;r=de[270]|0;n=r+-1|0;if(!(n&e))r=h;else r=h-e+(n+e&0-r)|0;e=de[259]|0;n=e+r|0;if(r>>>0>m>>>0&r>>>0<2147483647){T=de[261]|0;if((T|0)!=0?n>>>0<=e>>>0|n>>>0>T>>>0:0){e=0;break}n=Ie(r|0)|0;T=(n|0)==(o|0);e=T?r:0;if(T){x=o;d=e;b=194;break e}else b=184}else e=0}else e=0}}while(0);t:do{if((b|0)==184){o=0-r|0;do{if(l>>>0>r>>>0&(r>>>0<2147483647&(n|0)!=(-1|0))?(y=de[271]|0,y=u-r+y&0-y,y>>>0<2147483647):0)if((Ie(y|0)|0)==(-1|0)){Ie(o|0)|0;break t}else{r=y+r|0;break}}while(0);if((n|0)!=(-1|0)){x=n;d=r;b=194;break e}}}while(0);de[262]=de[262]|4;b=191}else{e=0;b=191}}while(0);if((((b|0)==191?h>>>0<2147483647:0)?(x=Ie(h|0)|0,w=Ie(0)|0,x>>>0>>0&((x|0)!=(-1|0)&(w|0)!=(-1|0))):0)?(k=w-x|0,S=k>>>0>(m+40|0)>>>0,S):0){d=S?k:e;b=194}if((b|0)==194){e=(de[259]|0)+d|0;de[259]=e;if(e>>>0>(de[260]|0)>>>0)de[260]=e;a=de[157]|0;e:do{if(a){o=1052;do{e=de[o>>2]|0;r=o+4|0;n=de[r>>2]|0;if((x|0)==(e+n|0)){P=e;E=r;C=n;A=o;b=204;break}o=de[o+8>>2]|0}while((o|0)!=0);if(((b|0)==204?(de[A+12>>2]&8|0)==0:0)?a>>>0>>0&a>>>0>=P>>>0:0){de[E>>2]=C+d;L=(de[154]|0)+d|0;F=a+8|0;F=(F&7|0)==0?0:0-F&7;z=L-F|0;de[157]=a+F;de[154]=z;de[a+(F+4)>>2]=z|1;de[a+(L+4)>>2]=40;de[158]=de[273];break}e=de[155]|0;if(x>>>0>>0){de[155]=x;e=x}r=x+d|0;o=1052;while(1){if((de[o>>2]|0)==(r|0)){n=o;r=o;b=212;break}o=de[o+8>>2]|0;if(!o){r=1052;break}}if((b|0)==212)if(!(de[r+12>>2]&8)){de[n>>2]=x;f=r+4|0;de[f>>2]=(de[f>>2]|0)+d;f=x+8|0;f=(f&7|0)==0?0:0-f&7;u=x+(d+8)|0;u=(u&7|0)==0?0:0-u&7;t=x+(u+d)|0;c=f+m|0;p=x+c|0;h=t-(x+f)-m|0;de[x+(f+4)>>2]=m|3;t:do{if((t|0)!=(a|0)){if((t|0)==(de[156]|0)){L=(de[153]|0)+h|0;de[153]=L;de[156]=p;de[x+(c+4)>>2]=L|1;de[x+(L+c)>>2]=L;break}s=d+4|0;r=de[x+(s+u)>>2]|0;if((r&3|0)==1){l=r&-8;o=r>>>3;r:do{if(r>>>0>=256){a=de[x+((u|24)+d)>>2]|0;i=de[x+(d+12+u)>>2]|0;do{if((i|0)==(t|0)){n=u|16;i=x+(s+n)|0;r=de[i>>2]|0;if(!r){i=x+(n+d)|0;r=de[i>>2]|0;if(!r){R=0;break}}while(1){n=r+20|0;o=de[n>>2]|0;if(o){r=o;i=n;continue}n=r+16|0;o=de[n>>2]|0;if(!o)break;else{r=o;i=n}}if(i>>>0>>0)Xe();else{de[i>>2]=0;R=r;break}}else{n=de[x+((u|8)+d)>>2]|0;if(n>>>0>>0)Xe();e=n+12|0;if((de[e>>2]|0)!=(t|0))Xe();r=i+8|0;if((de[r>>2]|0)==(t|0)){de[e>>2]=i;de[r>>2]=n;R=i;break}else Xe()}}while(0);if(!a)break;e=de[x+(d+28+u)>>2]|0;r=908+(e<<2)|0;do{if((t|0)!=(de[r>>2]|0)){if(a>>>0<(de[155]|0)>>>0)Xe();e=a+16|0;if((de[e>>2]|0)==(t|0))de[e>>2]=R;else de[a+20>>2]=R;if(!R)break r}else{de[r>>2]=R;if(R)break;de[152]=de[152]&~(1<>>0>>0)Xe();de[R+24>>2]=a;t=u|16;e=de[x+(t+d)>>2]|0;do{if(e)if(e>>>0>>0)Xe();else{de[R+16>>2]=e;de[e+24>>2]=R;break}}while(0);t=de[x+(s+t)>>2]|0;if(!t)break;if(t>>>0<(de[155]|0)>>>0)Xe();else{de[R+20>>2]=t;de[t+24>>2]=R;break}}else{i=de[x+((u|8)+d)>>2]|0;n=de[x+(d+12+u)>>2]|0;r=644+(o<<1<<2)|0;do{if((i|0)!=(r|0)){if(i>>>0>>0)Xe();if((de[i+12>>2]|0)==(t|0))break;Xe()}}while(0);if((n|0)==(i|0)){de[151]=de[151]&~(1<>>0>>0)Xe();e=n+8|0;if((de[e>>2]|0)==(t|0)){I=e;break}Xe()}}while(0);de[i+12>>2]=n;de[I>>2]=i}}while(0);t=x+((l|u)+d)|0;n=l+h|0}else n=h;t=t+4|0;de[t>>2]=de[t>>2]&-2;de[x+(c+4)>>2]=n|1;de[x+(n+c)>>2]=n;t=n>>>3;if(n>>>0<256){e=t<<1;i=644+(e<<2)|0;r=de[151]|0;t=1<>2]|0;if(e>>>0>=(de[155]|0)>>>0){z=t;F=e;break}Xe()}}while(0);de[z>>2]=p;de[F+12>>2]=p;de[x+(c+8)>>2]=F;de[x+(c+12)>>2]=i;break}t=n>>>8;do{if(!t)i=0;else{if(n>>>0>16777215){i=31;break}z=(t+1048320|0)>>>16&8;F=t<>>16&4;F=F<>>16&2;i=14-(R|z|i)+(F<>>15)|0;i=n>>>(i+7|0)&1|i<<1}}while(0);t=908+(i<<2)|0;de[x+(c+28)>>2]=i;de[x+(c+20)>>2]=0;de[x+(c+16)>>2]=0;e=de[152]|0;r=1<>2]=p;de[x+(c+24)>>2]=t;de[x+(c+12)>>2]=p;de[x+(c+8)>>2]=p;break}t=de[t>>2]|0;r:do{if((de[t+4>>2]&-8|0)!=(n|0)){i=n<<((i|0)==31?0:25-(i>>>1)|0);while(1){e=t+16+(i>>>31<<2)|0;r=de[e>>2]|0;if(!r)break;if((de[r+4>>2]&-8|0)==(n|0)){L=r;break r}else{i=i<<1;t=r}}if(e>>>0<(de[155]|0)>>>0)Xe();else{de[e>>2]=p;de[x+(c+24)>>2]=t;de[x+(c+12)>>2]=p;de[x+(c+8)>>2]=p;break t}}else L=t}while(0);t=L+8|0;e=de[t>>2]|0;F=de[155]|0;if(e>>>0>=F>>>0&L>>>0>=F>>>0){de[e+12>>2]=p;de[t>>2]=p;de[x+(c+8)>>2]=e;de[x+(c+12)>>2]=L;de[x+(c+24)>>2]=0;break}else Xe()}else{L=(de[154]|0)+h|0;de[154]=L;de[157]=p;de[x+(c+4)>>2]=L|1}}while(0);L=x+(f|8)|0;return L|0}else r=1052;while(1){e=de[r>>2]|0;if(e>>>0<=a>>>0?(t=de[r+4>>2]|0,i=e+t|0,i>>>0>a>>>0):0)break;r=de[r+8>>2]|0}n=e+(t+-39)|0;e=e+(t+-47+((n&7|0)==0?0:0-n&7))|0;n=a+16|0;e=e>>>0>>0?a:e;t=e+8|0;r=x+8|0;r=(r&7|0)==0?0:0-r&7;L=d+-40-r|0;de[157]=x+r;de[154]=L;de[x+(r+4)>>2]=L|1;de[x+(d+-36)>>2]=40;de[158]=de[273];r=e+4|0;de[r>>2]=27;de[t>>2]=de[263];de[t+4>>2]=de[264];de[t+8>>2]=de[265];de[t+12>>2]=de[266];de[263]=x;de[264]=d;de[266]=0;de[265]=t;t=e+28|0;de[t>>2]=7;if((e+32|0)>>>0>>0)do{L=t;t=t+4|0;de[t>>2]=7}while((L+8|0)>>>0>>0);if((e|0)!=(a|0)){o=e-a|0;de[r>>2]=de[r>>2]&-2;de[a+4>>2]=o|1;de[e>>2]=o;t=o>>>3;if(o>>>0<256){e=t<<1;i=644+(e<<2)|0;r=de[151]|0;t=1<>2]|0;if(e>>>0<(de[155]|0)>>>0)Xe();else{O=t;M=e}}else{de[151]=r|t;O=644+(e+2<<2)|0;M=i}de[O>>2]=a;de[M+12>>2]=a;de[a+8>>2]=M;de[a+12>>2]=i;break}t=o>>>8;if(t)if(o>>>0>16777215)i=31;else{F=(t+1048320|0)>>>16&8;L=t<>>16&4;L=L<>>16&2;i=14-(z|F|i)+(L<>>15)|0;i=o>>>(i+7|0)&1|i<<1}else i=0;r=908+(i<<2)|0;de[a+28>>2]=i;de[a+20>>2]=0;de[n>>2]=0;t=de[152]|0;e=1<>2]=a;de[a+24>>2]=r;de[a+12>>2]=a;de[a+8>>2]=a;break}t=de[r>>2]|0;t:do{if((de[t+4>>2]&-8|0)!=(o|0)){i=o<<((i|0)==31?0:25-(i>>>1)|0);while(1){e=t+16+(i>>>31<<2)|0;r=de[e>>2]|0;if(!r)break;if((de[r+4>>2]&-8|0)==(o|0)){D=r;break t}else{i=i<<1;t=r}}if(e>>>0<(de[155]|0)>>>0)Xe();else{de[e>>2]=a;de[a+24>>2]=t;de[a+12>>2]=a;de[a+8>>2]=a;break e}}else D=t}while(0);t=D+8|0;e=de[t>>2]|0;L=de[155]|0;if(e>>>0>=L>>>0&D>>>0>=L>>>0){de[e+12>>2]=a;de[t>>2]=a;de[a+8>>2]=e;de[a+12>>2]=D;de[a+24>>2]=0;break}else Xe()}}else{L=de[155]|0;if((L|0)==0|x>>>0>>0)de[155]=x;de[263]=x;de[264]=d;de[266]=0;de[160]=de[269];de[159]=-1;t=0;do{L=t<<1;F=644+(L<<2)|0;de[644+(L+3<<2)>>2]=F;de[644+(L+2<<2)>>2]=F;t=t+1|0}while((t|0)!=32);L=x+8|0;L=(L&7|0)==0?0:0-L&7;F=d+-40-L|0;de[157]=x+L;de[154]=F;de[x+(L+4)>>2]=F|1;de[x+(d+-36)>>2]=40;de[158]=de[273]}}while(0);t=de[154]|0;if(t>>>0>m>>>0){F=t-m|0;de[154]=F;L=de[157]|0;de[157]=L+m;de[L+(m+4)>>2]=F|1;de[L+4>>2]=m|3;L=L+8|0;return L|0}}L=hr()|0;de[L>>2]=12;L=0;return L|0}function Ur(e){e=e|0;var t=0,r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0,y=0;if(!e)return;t=e+-8|0;s=de[155]|0;if(t>>>0>>0)Xe();r=de[e+-4>>2]|0;i=r&3;if((i|0)==1)Xe();p=r&-8;m=e+(p+-8)|0;do{if(!(r&1)){t=de[t>>2]|0;if(!i)return;l=-8-t|0;h=e+l|0;c=t+p|0;if(h>>>0>>0)Xe();if((h|0)==(de[156]|0)){t=e+(p+-4)|0;r=de[t>>2]|0;if((r&3|0)!=3){y=h;o=c;break}de[153]=c;de[t>>2]=r&-2;de[e+(l+4)>>2]=c|1;de[m>>2]=c;return}n=t>>>3;if(t>>>0<256){i=de[e+(l+8)>>2]|0;r=de[e+(l+12)>>2]|0;t=644+(n<<1<<2)|0;if((i|0)!=(t|0)){if(i>>>0>>0)Xe();if((de[i+12>>2]|0)!=(h|0))Xe()}if((r|0)==(i|0)){de[151]=de[151]&~(1<>>0>>0)Xe();t=r+8|0;if((de[t>>2]|0)==(h|0))a=t;else Xe()}else a=r+8|0;de[i+12>>2]=r;de[a>>2]=i;y=h;o=c;break}a=de[e+(l+24)>>2]|0;i=de[e+(l+12)>>2]|0;do{if((i|0)==(h|0)){r=e+(l+20)|0;t=de[r>>2]|0;if(!t){r=e+(l+16)|0;t=de[r>>2]|0;if(!t){u=0;break}}while(1){i=t+20|0;n=de[i>>2]|0;if(n){t=n;r=i;continue}i=t+16|0;n=de[i>>2]|0;if(!n)break;else{t=n;r=i}}if(r>>>0>>0)Xe();else{de[r>>2]=0;u=t;break}}else{n=de[e+(l+8)>>2]|0;if(n>>>0>>0)Xe();t=n+12|0;if((de[t>>2]|0)!=(h|0))Xe();r=i+8|0;if((de[r>>2]|0)==(h|0)){de[t>>2]=i;de[r>>2]=n;u=i;break}else Xe()}}while(0);if(a){t=de[e+(l+28)>>2]|0;r=908+(t<<2)|0;if((h|0)==(de[r>>2]|0)){de[r>>2]=u;if(!u){de[152]=de[152]&~(1<>>0<(de[155]|0)>>>0)Xe();t=a+16|0;if((de[t>>2]|0)==(h|0))de[t>>2]=u;else de[a+20>>2]=u;if(!u){y=h;o=c;break}}r=de[155]|0;if(u>>>0>>0)Xe();de[u+24>>2]=a;t=de[e+(l+16)>>2]|0;do{if(t)if(t>>>0>>0)Xe();else{de[u+16>>2]=t;de[t+24>>2]=u;break}}while(0);t=de[e+(l+20)>>2]|0;if(t)if(t>>>0<(de[155]|0)>>>0)Xe();else{de[u+20>>2]=t;de[t+24>>2]=u;y=h;o=c;break}else{y=h;o=c}}else{y=h;o=c}}else{y=t;o=p}}while(0);if(y>>>0>=m>>>0)Xe();t=e+(p+-4)|0;r=de[t>>2]|0;if(!(r&1))Xe();if(!(r&2)){if((m|0)==(de[157]|0)){_=(de[154]|0)+o|0;de[154]=_;de[157]=y;de[y+4>>2]=_|1;if((y|0)!=(de[156]|0))return;de[156]=0;de[153]=0;return}if((m|0)==(de[156]|0)){_=(de[153]|0)+o|0;de[153]=_;de[156]=y;de[y+4>>2]=_|1;de[y+_>>2]=_;return}o=(r&-8)+o|0;n=r>>>3;do{if(r>>>0>=256){a=de[e+(p+16)>>2]|0;t=de[e+(p|4)>>2]|0;do{if((t|0)==(m|0)){r=e+(p+12)|0;t=de[r>>2]|0;if(!t){r=e+(p+8)|0;t=de[r>>2]|0;if(!t){d=0;break}}while(1){i=t+20|0;n=de[i>>2]|0;if(n){t=n;r=i;continue}i=t+16|0;n=de[i>>2]|0;if(!n)break;else{t=n;r=i}}if(r>>>0<(de[155]|0)>>>0)Xe();else{de[r>>2]=0;d=t;break}}else{r=de[e+p>>2]|0;if(r>>>0<(de[155]|0)>>>0)Xe();i=r+12|0;if((de[i>>2]|0)!=(m|0))Xe();n=t+8|0;if((de[n>>2]|0)==(m|0)){de[i>>2]=t;de[n>>2]=r;d=t;break}else Xe()}}while(0);if(a){t=de[e+(p+20)>>2]|0;r=908+(t<<2)|0;if((m|0)==(de[r>>2]|0)){de[r>>2]=d;if(!d){de[152]=de[152]&~(1<>>0<(de[155]|0)>>>0)Xe();t=a+16|0;if((de[t>>2]|0)==(m|0))de[t>>2]=d;else de[a+20>>2]=d;if(!d)break}r=de[155]|0;if(d>>>0>>0)Xe();de[d+24>>2]=a;t=de[e+(p+8)>>2]|0;do{if(t)if(t>>>0>>0)Xe();else{de[d+16>>2]=t;de[t+24>>2]=d;break}}while(0);t=de[e+(p+12)>>2]|0;if(t)if(t>>>0<(de[155]|0)>>>0)Xe();else{de[d+20>>2]=t;de[t+24>>2]=d;break}}}else{i=de[e+p>>2]|0;r=de[e+(p|4)>>2]|0;t=644+(n<<1<<2)|0;if((i|0)!=(t|0)){if(i>>>0<(de[155]|0)>>>0)Xe();if((de[i+12>>2]|0)!=(m|0))Xe()}if((r|0)==(i|0)){de[151]=de[151]&~(1<>>0<(de[155]|0)>>>0)Xe();t=r+8|0;if((de[t>>2]|0)==(m|0))f=t;else Xe()}else f=r+8|0;de[i+12>>2]=r;de[f>>2]=i}}while(0);de[y+4>>2]=o|1;de[y+o>>2]=o;if((y|0)==(de[156]|0)){de[153]=o;return}}else{de[t>>2]=r&-2;de[y+4>>2]=o|1;de[y+o>>2]=o}t=o>>>3;if(o>>>0<256){r=t<<1;n=644+(r<<2)|0;i=de[151]|0;t=1<>2]|0;if(r>>>0<(de[155]|0)>>>0)Xe();else{g=t;v=r}}else{de[151]=i|t;g=644+(r+2<<2)|0;v=n}de[g>>2]=y;de[v+12>>2]=y;de[y+8>>2]=v;de[y+12>>2]=n;return}t=o>>>8;if(t)if(o>>>0>16777215)n=31;else{g=(t+1048320|0)>>>16&8;v=t<>>16&4;v=v<>>16&2;n=14-(m|g|n)+(v<>>15)|0;n=o>>>(n+7|0)&1|n<<1}else n=0;t=908+(n<<2)|0;de[y+28>>2]=n;de[y+20>>2]=0;de[y+16>>2]=0;r=de[152]|0;i=1<>2]|0;t:do{if((de[t+4>>2]&-8|0)!=(o|0)){n=o<<((n|0)==31?0:25-(n>>>1)|0);while(1){r=t+16+(n>>>31<<2)|0;i=de[r>>2]|0;if(!i)break;if((de[i+4>>2]&-8|0)==(o|0)){_=i;break t}else{n=n<<1;t=i}}if(r>>>0<(de[155]|0)>>>0)Xe();else{de[r>>2]=y;de[y+24>>2]=t;de[y+12>>2]=y;de[y+8>>2]=y;break e}}else _=t}while(0);t=_+8|0;r=de[t>>2]|0;v=de[155]|0;if(r>>>0>=v>>>0&_>>>0>=v>>>0){de[r+12>>2]=y;de[t>>2]=y;de[y+8>>2]=r;de[y+12>>2]=_;de[y+24>>2]=0;break}else Xe()}else{de[152]=r|i;de[t>>2]=y;de[y+24>>2]=t;de[y+12>>2]=y;de[y+8>>2]=y}}while(0);y=(de[159]|0)+-1|0;de[159]=y;if(!y)t=1060;else return;while(1){t=de[t>>2]|0;if(!t)break;else t=t+8|0}de[159]=-1;return}function Xr(e,t){e=e|0;t=t|0;var r=0,i=0;if(!e){e=Br(t)|0;return e|0}if(t>>>0>4294967231){e=hr()|0;de[e>>2]=12;e=0;return e|0}r=Wr(e+-8|0,t>>>0<11?16:t+11&-8)|0;if(r){e=r+8|0;return e|0}r=Br(t)|0;if(!r){e=0;return e|0}i=de[e+-4>>2]|0;i=(i&-8)-((i&3|0)==0?8:4)|0;Qr(r|0,e|0,(i>>>0>>0?i:t)|0)|0;Ur(e);e=r;return e|0}function Hr(e){e=e|0;var t=0;if(!e){t=0;return t|0}e=de[e+-4>>2]|0;t=e&3;if((t|0)==1){t=0;return t|0}t=(e&-8)-((t|0)==0?8:4)|0;return t|0}function Wr(e,t){e=e|0;t=t|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0;p=e+4|0;d=de[p>>2]|0;l=d&-8;h=e+l|0;s=de[155]|0;r=d&3;if(!((r|0)!=1&e>>>0>=s>>>0&e>>>0>>0))Xe();i=e+(l|4)|0;n=de[i>>2]|0;if(!(n&1))Xe();if(!r){if(t>>>0<256){e=0;return e|0}if(l>>>0>=(t+4|0)>>>0?(l-t|0)>>>0<=de[271]<<1>>>0:0)return e|0;e=0;return e|0}if(l>>>0>=t>>>0){r=l-t|0;if(r>>>0<=15)return e|0;de[p>>2]=d&1|t|2;de[e+(t+4)>>2]=r|3;de[i>>2]=de[i>>2]|1;qr(e+t|0,r);return e|0}if((h|0)==(de[157]|0)){r=(de[154]|0)+l|0;if(r>>>0<=t>>>0){e=0;return e|0}f=r-t|0;de[p>>2]=d&1|t|2;de[e+(t+4)>>2]=f|1;de[157]=e+t;de[154]=f;return e|0}if((h|0)==(de[156]|0)){i=(de[153]|0)+l|0;if(i>>>0>>0){e=0;return e|0}r=i-t|0;if(r>>>0>15){de[p>>2]=d&1|t|2;de[e+(t+4)>>2]=r|1;de[e+i>>2]=r;i=e+(i+4)|0;de[i>>2]=de[i>>2]&-2;i=e+t|0}else{de[p>>2]=d&1|i|2;i=e+(i+4)|0;de[i>>2]=de[i>>2]|1;i=0;r=0}de[153]=r;de[156]=i;return e|0}if(n&2){e=0;return e|0}c=(n&-8)+l|0;if(c>>>0>>0){e=0;return e|0}f=c-t|0;o=n>>>3;do{if(n>>>0>=256){a=de[e+(l+24)>>2]|0;o=de[e+(l+12)>>2]|0;do{if((o|0)==(h|0)){i=e+(l+20)|0;r=de[i>>2]|0;if(!r){i=e+(l+16)|0;r=de[i>>2]|0;if(!r){u=0;break}}while(1){n=r+20|0;o=de[n>>2]|0;if(o){r=o;i=n;continue}n=r+16|0;o=de[n>>2]|0;if(!o)break;else{r=o;i=n}}if(i>>>0>>0)Xe();else{de[i>>2]=0;u=r;break}}else{n=de[e+(l+8)>>2]|0;if(n>>>0>>0)Xe();r=n+12|0;if((de[r>>2]|0)!=(h|0))Xe();i=o+8|0;if((de[i>>2]|0)==(h|0)){de[r>>2]=o;de[i>>2]=n;u=o;break}else Xe()}}while(0);if(a){r=de[e+(l+28)>>2]|0;i=908+(r<<2)|0;if((h|0)==(de[i>>2]|0)){de[i>>2]=u;if(!u){de[152]=de[152]&~(1<>>0<(de[155]|0)>>>0)Xe();r=a+16|0;if((de[r>>2]|0)==(h|0))de[r>>2]=u;else de[a+20>>2]=u;if(!u)break}i=de[155]|0;if(u>>>0>>0)Xe();de[u+24>>2]=a;r=de[e+(l+16)>>2]|0;do{if(r)if(r>>>0>>0)Xe();else{de[u+16>>2]=r;de[r+24>>2]=u;break}}while(0);r=de[e+(l+20)>>2]|0;if(r)if(r>>>0<(de[155]|0)>>>0)Xe();else{de[u+20>>2]=r;de[r+24>>2]=u;break}}}else{n=de[e+(l+8)>>2]|0;i=de[e+(l+12)>>2]|0;r=644+(o<<1<<2)|0;if((n|0)!=(r|0)){if(n>>>0>>0)Xe();if((de[n+12>>2]|0)!=(h|0))Xe()}if((i|0)==(n|0)){de[151]=de[151]&~(1<>>0>>0)Xe();r=i+8|0;if((de[r>>2]|0)==(h|0))a=r;else Xe()}else a=i+8|0;de[n+12>>2]=i;de[a>>2]=n}}while(0);if(f>>>0<16){de[p>>2]=c|d&1|2;t=e+(c|4)|0;de[t>>2]=de[t>>2]|1;return e|0}else{de[p>>2]=d&1|t|2;de[e+(t+4)>>2]=f|3;d=e+(c|4)|0;de[d>>2]=de[d>>2]|1;qr(e+t|0,f);return e|0}return 0}function qr(e,t){e=e|0;t=t|0;var r=0,i=0,n=0,o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0,m=0,g=0,v=0,_=0;m=e+t|0;r=de[e+4>>2]|0;do{if(!(r&1)){u=de[e>>2]|0;if(!(r&3))return;f=e+(0-u)|0;c=u+t|0;l=de[155]|0;if(f>>>0>>0)Xe();if((f|0)==(de[156]|0)){i=e+(t+4)|0;r=de[i>>2]|0;if((r&3|0)!=3){_=f;a=c;break}de[153]=c;de[i>>2]=r&-2;de[e+(4-u)>>2]=c|1;de[m>>2]=c;return}o=u>>>3;if(u>>>0<256){n=de[e+(8-u)>>2]|0;i=de[e+(12-u)>>2]|0;r=644+(o<<1<<2)|0;if((n|0)!=(r|0)){if(n>>>0>>0)Xe();if((de[n+12>>2]|0)!=(f|0))Xe()}if((i|0)==(n|0)){de[151]=de[151]&~(1<>>0>>0)Xe();r=i+8|0;if((de[r>>2]|0)==(f|0))s=r;else Xe()}else s=i+8|0;de[n+12>>2]=i;de[s>>2]=n;_=f;a=c;break}s=de[e+(24-u)>>2]|0;n=de[e+(12-u)>>2]|0;do{if((n|0)==(f|0)){n=16-u|0;i=e+(n+4)|0;r=de[i>>2]|0;if(!r){i=e+n|0;r=de[i>>2]|0;if(!r){h=0;break}}while(1){n=r+20|0;o=de[n>>2]|0;if(o){r=o;i=n;continue}n=r+16|0;o=de[n>>2]|0;if(!o)break;else{r=o;i=n}}if(i>>>0>>0)Xe();else{de[i>>2]=0;h=r;break}}else{o=de[e+(8-u)>>2]|0;if(o>>>0>>0)Xe();r=o+12|0;if((de[r>>2]|0)!=(f|0))Xe();i=n+8|0;if((de[i>>2]|0)==(f|0)){de[r>>2]=n;de[i>>2]=o;h=n;break}else Xe()}}while(0);if(s){r=de[e+(28-u)>>2]|0;i=908+(r<<2)|0;if((f|0)==(de[i>>2]|0)){de[i>>2]=h;if(!h){de[152]=de[152]&~(1<>>0<(de[155]|0)>>>0)Xe();r=s+16|0;if((de[r>>2]|0)==(f|0))de[r>>2]=h;else de[s+20>>2]=h;if(!h){_=f;a=c;break}}n=de[155]|0;if(h>>>0>>0)Xe();de[h+24>>2]=s;r=16-u|0;i=de[e+r>>2]|0;do{if(i)if(i>>>0>>0)Xe();else{de[h+16>>2]=i;de[i+24>>2]=h;break}}while(0);r=de[e+(r+4)>>2]|0;if(r)if(r>>>0<(de[155]|0)>>>0)Xe();else{de[h+20>>2]=r;de[r+24>>2]=h;_=f;a=c;break}else{_=f;a=c}}else{_=f;a=c}}else{_=e;a=t}}while(0);l=de[155]|0;if(m>>>0>>0)Xe();r=e+(t+4)|0;i=de[r>>2]|0;if(!(i&2)){if((m|0)==(de[157]|0)){v=(de[154]|0)+a|0;de[154]=v;de[157]=_;de[_+4>>2]=v|1;if((_|0)!=(de[156]|0))return;de[156]=0;de[153]=0;return}if((m|0)==(de[156]|0)){v=(de[153]|0)+a|0;de[153]=v;de[156]=_;de[_+4>>2]=v|1;de[_+v>>2]=v;return}a=(i&-8)+a|0;o=i>>>3;do{if(i>>>0>=256){s=de[e+(t+24)>>2]|0;n=de[e+(t+12)>>2]|0;do{if((n|0)==(m|0)){i=e+(t+20)|0;r=de[i>>2]|0;if(!r){i=e+(t+16)|0;r=de[i>>2]|0;if(!r){d=0;break}}while(1){n=r+20|0;o=de[n>>2]|0;if(o){r=o;i=n;continue}n=r+16|0;o=de[n>>2]|0;if(!o)break;else{r=o;i=n}}if(i>>>0>>0)Xe();else{de[i>>2]=0;d=r;break}}else{o=de[e+(t+8)>>2]|0;if(o>>>0>>0)Xe();r=o+12|0;if((de[r>>2]|0)!=(m|0))Xe();i=n+8|0;if((de[i>>2]|0)==(m|0)){de[r>>2]=n;de[i>>2]=o;d=n;break}else Xe()}}while(0);if(s){r=de[e+(t+28)>>2]|0;i=908+(r<<2)|0;if((m|0)==(de[i>>2]|0)){de[i>>2]=d;if(!d){de[152]=de[152]&~(1<>>0<(de[155]|0)>>>0)Xe();r=s+16|0;if((de[r>>2]|0)==(m|0))de[r>>2]=d;else de[s+20>>2]=d;if(!d)break}i=de[155]|0;if(d>>>0>>0)Xe();de[d+24>>2]=s;r=de[e+(t+16)>>2]|0;do{if(r)if(r>>>0>>0)Xe();else{de[d+16>>2]=r;de[r+24>>2]=d;break}}while(0);r=de[e+(t+20)>>2]|0;if(r)if(r>>>0<(de[155]|0)>>>0)Xe();else{de[d+20>>2]=r;de[r+24>>2]=d;break}}}else{n=de[e+(t+8)>>2]|0;i=de[e+(t+12)>>2]|0;r=644+(o<<1<<2)|0;if((n|0)!=(r|0)){if(n>>>0>>0)Xe();if((de[n+12>>2]|0)!=(m|0))Xe()}if((i|0)==(n|0)){de[151]=de[151]&~(1<>>0>>0)Xe();r=i+8|0;if((de[r>>2]|0)==(m|0))p=r;else Xe()}else p=i+8|0;de[n+12>>2]=i;de[p>>2]=n}}while(0);de[_+4>>2]=a|1;de[_+a>>2]=a;if((_|0)==(de[156]|0)){de[153]=a;return}}else{de[r>>2]=i&-2;de[_+4>>2]=a|1;de[_+a>>2]=a}r=a>>>3;if(a>>>0<256){i=r<<1;o=644+(i<<2)|0;n=de[151]|0;r=1<>2]|0;if(i>>>0<(de[155]|0)>>>0)Xe();else{g=r;v=i}}else{de[151]=n|r;g=644+(i+2<<2)|0;v=o}de[g>>2]=_;de[v+12>>2]=_;de[_+8>>2]=v;de[_+12>>2]=o;return}r=a>>>8;if(r)if(a>>>0>16777215)o=31;else{g=(r+1048320|0)>>>16&8;v=r<>>16&4;v=v<>>16&2;o=14-(m|g|o)+(v<>>15)|0;o=a>>>(o+7|0)&1|o<<1}else o=0;r=908+(o<<2)|0;de[_+28>>2]=o;de[_+20>>2]=0;de[_+16>>2]=0;i=de[152]|0;n=1<>2]=_;de[_+24>>2]=r;de[_+12>>2]=_;de[_+8>>2]=_;return}r=de[r>>2]|0;e:do{if((de[r+4>>2]&-8|0)!=(a|0)){o=a<<((o|0)==31?0:25-(o>>>1)|0);while(1){i=r+16+(o>>>31<<2)|0;n=de[i>>2]|0;if(!n)break;if((de[n+4>>2]&-8|0)==(a|0)){r=n;break e}else{o=o<<1;r=n}}if(i>>>0<(de[155]|0)>>>0)Xe();de[i>>2]=_;de[_+24>>2]=r;de[_+12>>2]=_;de[_+8>>2]=_;return}}while(0);i=r+8|0;n=de[i>>2]|0;v=de[155]|0;if(!(n>>>0>=v>>>0&r>>>0>=v>>>0))Xe();de[n+12>>2]=_;de[i>>2]=_;de[_+8>>2]=n;de[_+12>>2]=r;de[_+24>>2]=0;return}function Gr(){}function Vr(e,t,r,i){e=e|0;t=t|0;r=r|0;i=i|0;i=t-i-(r>>>0>e>>>0|0)>>>0;return(re=i,e-r>>>0|0)|0}function Yr(e,t,r){e=e|0;t=t|0;r=r|0;var i=0,n=0,o=0,a=0;i=e+r|0;if((r|0)>=20){t=t&255;o=e&3;a=t|t<<8|t<<16|t<<24;n=i&~3;if(o){o=e+4-o|0;while((e|0)<(o|0)){pe[e>>0]=t;e=e+1|0}}while((e|0)<(n|0)){de[e>>2]=a;e=e+4|0}}while((e|0)<(i|0)){pe[e>>0]=t;e=e+1|0}return e-r|0}function Zr(e,t,r){e=e|0;t=t|0;r=r|0;if((r|0)<32){re=t>>>r;return e>>>r|(t&(1<>>r-32|0}function Jr(e,t,r){e=e|0;t=t|0;r=r|0;if((r|0)<32){re=t<>>32-r;return e<>>0;return(re=t+i+(r>>>0>>0|0)>>>0,r|0)|0}function Qr(e,t,r){e=e|0;t=t|0;r=r|0;var i=0;if((r|0)>=4096)return Me(e|0,t|0,r|0)|0;i=e|0;if((e&3)==(t&3)){while(e&3){if(!r)return i|0;pe[e>>0]=pe[t>>0]|0;e=e+1|0;t=t+1|0;r=r-1|0}while((r|0)>=4){de[e>>2]=de[t>>2];e=e+4|0;t=t+4|0;r=r-4|0}}while((r|0)>0){pe[e>>0]=pe[t>>0]|0;e=e+1|0;t=t+1|0;r=r-1|0}return i|0}function $r(e,t,r){e=e|0;t=t|0;r=r|0;if((r|0)<32){re=t>>r;return e>>>r|(t&(1<>r-32|0}function ei(e){e=e|0;var t=0;t=pe[g+(e&255)>>0]|0;if((t|0)<8)return t|0;t=pe[g+(e>>8&255)>>0]|0;if((t|0)<8)return t+8|0;t=pe[g+(e>>16&255)>>0]|0;if((t|0)<8)return t+16|0;return(pe[g+(e>>>24)>>0]|0)+24|0}function ti(e,t){e=e|0;t=t|0;var r=0,i=0,n=0,o=0;o=e&65535;n=t&65535;r=_e(n,o)|0;i=e>>>16;e=(r>>>16)+(_e(n,i)|0)|0;n=t>>>16;t=_e(n,o)|0;return(re=(e>>>16)+(_e(n,i)|0)+(((e&65535)+t|0)>>>16)|0,e+t<<16|r&65535|0)|0}function ri(e,t,r,i){e=e|0;t=t|0;r=r|0;i=i|0;var n=0,o=0,a=0,s=0,l=0,u=0;u=t>>31|((t|0)<0?-1:0)<<1;l=((t|0)<0?-1:0)>>31|((t|0)<0?-1:0)<<1;o=i>>31|((i|0)<0?-1:0)<<1;n=((i|0)<0?-1:0)>>31|((i|0)<0?-1:0)<<1;s=Vr(u^e,l^t,u,l)|0;a=re;e=o^u;t=n^l;return Vr((si(s,a,Vr(o^r,n^i,o,n)|0,re,0)|0)^e,re^t,e,t)|0}function ii(e,t,r,i){e=e|0;t=t|0;r=r|0;i=i|0;var n=0,o=0,a=0,s=0,l=0,u=0;n=ve;ve=ve+16|0;s=n|0;a=t>>31|((t|0)<0?-1:0)<<1;o=((t|0)<0?-1:0)>>31|((t|0)<0?-1:0)<<1;u=i>>31|((i|0)<0?-1:0)<<1;l=((i|0)<0?-1:0)>>31|((i|0)<0?-1:0)<<1;e=Vr(a^e,o^t,a,o)|0;t=re;si(e,t,Vr(u^r,l^i,u,l)|0,re,s)|0;i=Vr(de[s>>2]^a,de[s+4>>2]^o,a,o)|0;r=re;ve=n;return(re=r,i)|0}function ni(e,t,r,i){e=e|0;t=t|0;r=r|0;i=i|0;var n=0,o=0;n=e;o=r;r=ti(n,o)|0;e=re;return(re=(_e(t,o)|0)+(_e(i,n)|0)+e|e&0,r|0|0)|0}function oi(e,t,r,i){e=e|0;t=t|0;r=r|0;i=i|0;return si(e,t,r,i,0)|0}function ai(e,t,r,i){e=e|0;t=t|0;r=r|0;i=i|0;var n=0,o=0;o=ve;ve=ve+16|0;n=o|0;si(e,t,r,i,n)|0;ve=o;return(re=de[n+4>>2]|0,de[n>>2]|0)|0}function si(e,t,r,i,n){e=e|0;t=t|0;r=r|0;i=i|0;n=n|0;var o=0,a=0,s=0,l=0,u=0,h=0,c=0,f=0,p=0,d=0;h=e;l=t;u=l;a=r;f=i;s=f;if(!u){o=(n|0)!=0;if(!s){if(o){de[n>>2]=(h>>>0)%(a>>>0);de[n+4>>2]=0}f=0;n=(h>>>0)/(a>>>0)>>>0;return(re=f,n)|0}else{if(!o){f=0;n=0;return(re=f,n)|0}de[n>>2]=e|0;de[n+4>>2]=t&0;f=0;n=0;return(re=f,n)|0}}o=(s|0)==0;do{if(a){if(!o){o=(ae(s|0)|0)-(ae(u|0)|0)|0;if(o>>>0<=31){c=o+1|0;s=31-o|0;t=o-31>>31;a=c;e=h>>>(c>>>0)&t|u<>>(c>>>0)&t;o=0;s=h<>2]=e|0;de[n+4>>2]=l|t&0;f=0;n=0;return(re=f,n)|0}o=a-1|0;if(o&a){s=(ae(a|0)|0)+33-(ae(u|0)|0)|0;d=64-s|0;c=32-s|0;l=c>>31;p=s-32|0;t=p>>31;a=s;e=c-1>>31&u>>>(p>>>0)|(u<>>(s>>>0))&t;t=t&u>>>(s>>>0);o=h<>>(p>>>0))&l|h<>31;break}if(n){de[n>>2]=o&h;de[n+4>>2]=0}if((a|0)==1){p=l|t&0;d=e|0|0;return(re=p,d)|0}else{d=ei(a|0)|0;p=u>>>(d>>>0)|0;d=u<<32-d|h>>>(d>>>0)|0;return(re=p,d)|0}}else{if(o){if(n){de[n>>2]=(u>>>0)%(a>>>0);de[n+4>>2]=0}p=0;d=(u>>>0)/(a>>>0)>>>0;return(re=p,d)|0}if(!h){if(n){de[n>>2]=0;de[n+4>>2]=(u>>>0)%(s>>>0)}p=0;d=(u>>>0)/(s>>>0)>>>0;return(re=p,d)|0}o=s-1|0;if(!(o&s)){if(n){de[n>>2]=e|0;de[n+4>>2]=o&u|t&0}p=0;d=u>>>((ei(s|0)|0)>>>0);return(re=p,d)|0}o=(ae(s|0)|0)-(ae(u|0)|0)|0;if(o>>>0<=30){t=o+1|0;s=31-o|0;a=t;e=u<>>(t>>>0);t=u>>>(t>>>0);o=0;s=h<>2]=e|0;de[n+4>>2]=l|t&0;p=0;d=0;return(re=p,d)|0}}while(0);if(!a){u=s;l=0;s=0}else{c=r|0|0;h=f|i&0;u=Kr(c|0,h|0,-1,-1)|0;r=re;l=s;s=0;do{i=l;l=o>>>31|l<<1;o=s|o<<1;i=e<<1|i>>>31|0;f=e>>>31|t<<1|0;Vr(u,r,i,f)|0;d=re;p=d>>31|((d|0)<0?-1:0)<<1;s=p&1;e=Vr(i,f,p&c,(((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1)&h)|0;t=re;a=a-1|0}while((a|0)!=0);u=l;l=0}a=0;if(n){de[n>>2]=e;de[n+4>>2]=t}p=(o|0)>>>31|(u|a)<<1|(a<<1|o>>>31)&0|l;d=(o<<1|0>>>31)&-2|s;return(re=p,d)|0}function li(e,t,r,i){e=e|0;t=t|0;r=r|0;i=i|0;return Pi[e&7](t|0,r|0,i|0)|0}function ui(e,t,r,i,n,o){e=e|0;t=t|0;r=r|0;i=i|0;n=n|0;o=o|0;Ei[e&3](t|0,r|0,i|0,n|0,o|0)}function hi(e,t){e=e|0;t=t|0;Ci[e&7](t|0)}function ci(e,t){e=e|0;t=t|0;return Ai[e&1](t|0)|0}function fi(e,t,r,i){e=e|0;t=t|0;r=r|0;i=i|0;Ii[e&0](t|0,r|0,i|0)}function pi(e){e=e|0;Oi[e&3]()}function di(e,t,r,i,n,o,a){e=e|0;t=t|0;r=r|0;i=i|0;n=n|0;o=o|0;a=a|0;Mi[e&3](t|0,r|0,i|0,n|0,o|0,a|0)}function mi(e,t,r,i,n,o){e=e|0;t=t|0;r=r|0;i=i|0;n=n|0;o=o|0;return Di[e&1](t|0,r|0,i|0,n|0,o|0)|0}function gi(e,t,r,i,n){e=e|0;t=t|0;r=r|0;i=i|0;n=n|0;Ri[e&3](t|0,r|0,i|0,n|0)}function vi(e,t,r){e=e|0;t=t|0;r=r|0;se(0);return 0}function _i(e,t,r,i,n){e=e|0;t=t|0;r=r|0;i=i|0;n=n|0;se(1)}function yi(e){e=e|0;se(2)}function bi(e){e=e|0;se(3);return 0}function xi(e,t,r){e=e|0;t=t|0;r=r|0;se(4)}function wi(){se(5)}function Ti(e,t,r,i,n,o){e=e|0;t=t|0;r=r|0;i=i|0;n=n|0;o=o|0;se(6)}function ki(e,t,r,i,n){e=e|0;t=t|0;r=r|0;i=i|0;n=n|0;se(7);return 0}function Si(e,t,r,i){e=e|0;t=t|0;r=r|0;i=i|0;se(8)}var Pi=[vi,Yt,Fr,Ar,Cr,Ir,vi,vi];var Ei=[_i,tr,er,_i];var Ci=[yi,Ht,Gt,Wt,qt,Vt,lr,zr];var Ai=[bi,Er];var Ii=[xi];var Oi=[wi,ar,sr,wi];var Mi=[Ti,ir,rr,Ti];var Di=[ki,lt];var Ri=[Si,Jt,Kt,Si];return{___cxa_can_catch:nr,_crn_get_levels:Tt,_crn_get_uncompressed_size:St,_crn_decompress:Pt,_i64Add:Kr,_crn_get_width:xt,___cxa_is_pointer_type:or,_i64Subtract:Vr,_memset:Yr,_malloc:Br,_free:Ur,_memcpy:Qr,_bitshift64Lshr:Zr,_fflush:gr,_bitshift64Shl:Jr,_crn_get_height:wt,___errno_location:hr,_crn_get_dxt_format:kt,runPostSets:Gr,_emscripten_replace_memory:Ye,stackAlloc:Ze,stackSave:Je,stackRestore:Ke,establishStackSpace:Qe,setThrew:$e,setTempRet0:rt,getTempRet0:it,dynCall_iiii:li,dynCall_viiiii:ui,dynCall_vi:hi,dynCall_ii:ci,dynCall_viii:fi,dynCall_v:pi,dynCall_viiiiii:di,dynCall_iiiiii:mi,dynCall_viiii:gi}}(e.Ya,e.Za,buffer);e.___cxa_can_catch=Z.___cxa_can_catch,e._crn_get_levels=Z._crn_get_levels,e.runPostSets=Z.runPostSets,e._crn_get_uncompressed_size=Z._crn_get_uncompressed_size,e._crn_decompress=Z._crn_decompress;var zc=e._i64Add=Z._i64Add;e._crn_get_height=Z._crn_get_height,e.___cxa_is_pointer_type=Z.___cxa_is_pointer_type;var nb=e._i64Subtract=Z._i64Subtract,qb=e._memset=Z._memset,Ea=e._malloc=Z._malloc,Bc=e._memcpy=Z._memcpy,Xa=e._emscripten_replace_memory=Z._emscripten_replace_memory;e._crn_get_dxt_format=Z._crn_get_dxt_format;var rb=e._bitshift64Lshr=Z._bitshift64Lshr,Na=e._free=Z._free;e._fflush=Z._fflush,e._crn_get_width=Z._crn_get_width,e.___errno_location=Z.___errno_location;var sb=e._bitshift64Shl=Z._bitshift64Shl;function ia(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}e.dynCall_iiii=Z.dynCall_iiii,e.dynCall_viiiii=Z.dynCall_viiiii,e.dynCall_vi=Z.dynCall_vi,e.dynCall_ii=Z.dynCall_ii,e.dynCall_viii=Z.dynCall_viii,e.dynCall_v=Z.dynCall_v,e.dynCall_viiiiii=Z.dynCall_viiiiii,e.dynCall_iiiiii=Z.dynCall_iiiiii,e.dynCall_viiii=Z.dynCall_viiii,n.aa=Z.stackAlloc,n.ua=Z.stackSave,n.ba=Z.stackRestore,n.Cd=Z.establishStackSpace,n.rb=Z.setTempRet0,n.fb=Z.getTempRet0,ia.prototype=Error(),ia.prototype.constructor=ia;var rd=null,jb=function t(){e.calledRun||td(),e.calledRun||(jb=t)};function td(t){function r(){if(!e.calledRun&&(e.calledRun=!0,!na)){if(Ha||(Ha=!0,ab(cb)),ab(db),e.onRuntimeInitialized&&e.onRuntimeInitialized(),e._main&&vd&&e.callMain(t),e.postRun)for("function"==typeof e.postRun&&(e.postRun=[e.postRun]);e.postRun.length;)gb(e.postRun.shift());ab(eb)}}if(t=t||e.arguments,null===rd&&(rd=Date.now()),!(0>8&255,e>>16&255,e>>24&255)}!function(s){s.loadFromArrayBuffer=function(e,t,r){return new i(t).loadFromArrayBuffer(e,r)};var i=function(l){function e(e,t,r,i,n,o,a){var s=l.call(this)||this;return s.complete=!1,s.isCompressedImage=!0,s.preserveSource=!0,s.onload=null,s.baseTexture=null,s.init(e,t,r,i,n,o,a),s}return __extends(e,l),e.prototype.init=function(e,t,r,i,n,o,a){void 0===i&&(i=-1),void 0===n&&(n=-1),this.src=e,this.resize(i,n),this._width=i,this._height=n,this.data=t,this.type=r,this.levels=o,this.internalFormat=a;var s=this.complete;return this.complete=!!t,!s&&this.complete&&this.onload&&this.onload({target:this}),this.update(),this},e.prototype.dispose=function(){this.data=null},e.prototype.bind=function(e){e.premultiplyAlpha=!1,l.prototype.bind.call(this,e)},e.prototype.upload=function(e,t,r){var i=e.state.gl;if(r.compressed=!1,e.texture.initCompressed(),null===this.data)throw"Trying to create a second (or more) webgl texture from the same CompressedImage : "+this.src;for(var n=this.levels,o=this.width,a=this.height,s=0,l=0;l>=1)<1&&(o=1),(a>>=1)<1&&(a=1),s+=u}return this._internalLoader.free(),this.preserveSource||(this.data=null),!0},e.prototype.style=function(e,t,r){var i=e.state.gl,n=this.levels;return t.scaleMode===PIXI.SCALE_MODES.LINEAR?1>2)*(t+3>>2)*8;case 33778:case 33779:case 35987:case 34798:return(e+3>>2)*(t+3>>2)*16;default:return 0}},h.type="DDS",h}(e.AbstractInternalLoader);e.DDSLoader=l}(pixi_compressed_textures||(pixi_compressed_textures={})),function(h){var e,c=((e={})[0]=35841,e[1]=35843,e[2]=35840,e[3]=35842,e[6]=36196,e[7]=33776,e[9]=33778,e[5]=33779,e),t=function(t){function e(e){return t.call(this,e)||this}return __extends(e,t),e.prototype.load=function(e){if(!h.DDSLoader.test(e))throw"Invalid magic number in PVR header";var t=new Int32Array(e,0,13),r=t[2],i=c[r]||-1,n=t[7],o=t[6],a=t[11],s=t[12]+52,l=new Uint8Array(e,s),u=this._image;return this._format=i,u.init(u.src,l,"PVR",n,o,a,i),u},e.test=function(e){return 55727696===new Int32Array(e,0,1)[0]},e.prototype.levelBufferSize=function(e,t,r){switch(void 0===r&&(r=0),this._format){case 33776:case 36196:return(e+3>>2)*(t+3>>2)*8;case 33778:case 33779:return(e+3>>2)*(t+3>>2)*16;case 35840:case 35842:return Math.floor((Math.max(e,8)*Math.max(t,8)*4+7)/8);case 35841:case 35843:return Math.floor((Math.max(e,16)*Math.max(t,8)*2+7)/8);default:return 0}},e.type="PVR",e}(h.AbstractInternalLoader);h.PVRTCLoader=t}(pixi_compressed_textures||(pixi_compressed_textures={}));var __awaiter=this&&this.__awaiter||function(e,a,s,l){return new(s||(s=Promise))(function(t,r){function i(e){try{o(l.next(e))}catch(e){r(e)}}function n(e){try{o(l.throw(e))}catch(e){r(e)}}function o(e){e.done?t(e.value):function(t){return t instanceof s?t:new s(function(e){e(t)})}(e.value).then(i,n)}o((l=l.apply(e,a||[])).next())})},__generator=this&&this.__generator||function(r,i){var n,o,a,e,s={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return e={next:t(0),throw:t(1),return:t(2)},"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function t(t){return function(e){return function(t){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,o&&(a=2&t[0]?o.return:t[0]?o.throw||((a=o.return)&&a.call(o),0):o.next)&&!(a=a.call(o,t[1])).done)return a;switch(o=0,a&&(t=[2&t[0],a.value]),t[0]){case 0:case 1:a=t;break;case 4:return s.label++,{value:t[1],done:!1};case 5:s.label++,o=t[1],t=[0];continue;case 7:t=s.ops.pop(),s.trys.pop();continue;default:if(!(a=0<(a=s.trys).length&&a[a.length-1])&&(6===t[0]||2===t[0])){s=0;continue}if(3===t[0]&&(!a||t[1]>a[0]&&t[1] 0.0) {\n c.rgb /= c.a;\n\n vec3 rgb = pow(c.rgb, vec3(1. / gamma));\n rgb = mix(vec3(.5), mix(vec3(dot(vec3(.2125, .7154, .0721), rgb)), rgb, saturation), contrast);\n rgb.r *= red;\n rgb.g *= green;\n rgb.b *= blue;\n c.rgb = rgb * brightness;\n\n c.rgb *= c.a;\n }\n\n gl_FragColor = c * alpha;\n}\n"),Object.assign(this,{gamma:1,saturation:1,contrast:1,brightness:1,red:1,green:1,blue:1,alpha:1},e)}return t&&(e.__proto__=t),((e.prototype=Object.create(t&&t.prototype)).constructor=e).prototype.apply=function(e,t,r,i){this.uniforms.gamma=Math.max(this.gamma,1e-4),this.uniforms.saturation=this.saturation,this.uniforms.contrast=this.contrast,this.uniforms.brightness=this.brightness,this.uniforms.red=this.red,this.uniforms.green=this.green,this.uniforms.blue=this.blue,this.uniforms.alpha=this.alpha,e.applyFilter(this,t,r,i)},e}(n.Filter),d=function(i){function e(e,t,r){void 0===e&&(e=4),void 0===t&&(t=3),void 0===r&&(r=!1),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}",r?"\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec2 uOffset;\nuniform vec4 filterClamp;\n\nvoid main(void)\n{\n vec4 color = vec4(0.0);\n\n // Sample top left pixel\n color += texture2D(uSampler, clamp(vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y + uOffset.y), filterClamp.xy, filterClamp.zw));\n\n // Sample top right pixel\n color += texture2D(uSampler, clamp(vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y + uOffset.y), filterClamp.xy, filterClamp.zw));\n\n // Sample bottom right pixel\n color += texture2D(uSampler, clamp(vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y - uOffset.y), filterClamp.xy, filterClamp.zw));\n\n // Sample bottom left pixel\n color += texture2D(uSampler, clamp(vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y - uOffset.y), filterClamp.xy, filterClamp.zw));\n\n // Average\n color *= 0.25;\n\n gl_FragColor = color;\n}\n":"\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec2 uOffset;\n\nvoid main(void)\n{\n vec4 color = vec4(0.0);\n\n // Sample top left pixel\n color += texture2D(uSampler, vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y + uOffset.y));\n\n // Sample top right pixel\n color += texture2D(uSampler, vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y + uOffset.y));\n\n // Sample bottom right pixel\n color += texture2D(uSampler, vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y - uOffset.y));\n\n // Sample bottom left pixel\n color += texture2D(uSampler, vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y - uOffset.y));\n\n // Average\n color *= 0.25;\n\n gl_FragColor = color;\n}"),this.uniforms.uOffset=new Float32Array(2),this._pixelSize=new f.Point,this.pixelSize=1,this._clamp=r,this._kernels=null,Array.isArray(e)?this.kernels=e:(this._blur=e,this.quality=t)}i&&(e.__proto__=i);var t={kernels:{configurable:!0},clamp:{configurable:!0},pixelSize:{configurable:!0},quality:{configurable:!0},blur:{configurable:!0}};return((e.prototype=Object.create(i&&i.prototype)).constructor=e).prototype.apply=function(e,t,r,i){var n,o=this.pixelSize.x/t._frame.width,a=this.pixelSize.y/t._frame.height;if(1===this._quality||0===this._blur)n=this._kernels[0]+.5,this.uniforms.uOffset[0]=n*o,this.uniforms.uOffset[1]=n*a,e.applyFilter(this,t,r,i);else{for(var s,l=e.getFilterTexture(),u=t,h=l,c=this._quality-1,f=0;f threshold) {\n gl_FragColor = color;\n } else {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n }\n}\n"),this.threshold=e}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var r={threshold:{configurable:!0}};return r.threshold.get=function(){return this.uniforms.threshold},r.threshold.set=function(e){this.uniforms.threshold=e},Object.defineProperties(e.prototype,r),e}(n.Filter),i=function(a){function e(e){a.call(this,c,"uniform sampler2D uSampler;\nvarying vec2 vTextureCoord;\n\nuniform sampler2D bloomTexture;\nuniform float bloomScale;\nuniform float brightness;\n\nvoid main() {\n vec4 color = texture2D(uSampler, vTextureCoord);\n color.rgb *= brightness;\n vec4 bloomColor = vec4(texture2D(bloomTexture, vTextureCoord).rgb, 0.0);\n bloomColor.rgb *= bloomScale;\n gl_FragColor = color + bloomColor;\n}\n"),"number"==typeof e&&(e={threshold:e}),e=Object.assign({threshold:.5,bloomScale:1,brightness:1,kernels:null,blur:8,quality:4,pixelSize:1,resolution:p.settings.RESOLUTION},e),this.bloomScale=e.bloomScale,this.brightness=e.brightness;var t=e.kernels,r=e.blur,i=e.quality,n=e.pixelSize,o=e.resolution;this._extractFilter=new m(e.threshold),this._extractFilter.resolution=o,this._blurFilter=t?new d(t):new d(r,i),this.pixelSize=n,this.resolution=o}a&&(e.__proto__=a);var t={resolution:{configurable:!0},threshold:{configurable:!0},kernels:{configurable:!0},blur:{configurable:!0},quality:{configurable:!0},pixelSize:{configurable:!0}};return((e.prototype=Object.create(a&&a.prototype)).constructor=e).prototype.apply=function(e,t,r,i,n){var o=e.getFilterTexture();this._extractFilter.apply(e,t,o,!0,n);var a=e.getFilterTexture();this._blurFilter.apply(e,o,a,!0,n),this.uniforms.bloomScale=this.bloomScale,this.uniforms.brightness=this.brightness,this.uniforms.bloomTexture=a,e.applyFilter(this,t,r,i),e.returnFilterTexture(a),e.returnFilterTexture(o)},t.resolution.get=function(){return this._resolution},t.resolution.set=function(e){this._resolution=e,this._extractFilter&&(this._extractFilter.resolution=e),this._blurFilter&&(this._blurFilter.resolution=e)},t.threshold.get=function(){return this._extractFilter.threshold},t.threshold.set=function(e){this._extractFilter.threshold=e},t.kernels.get=function(){return this._blurFilter.kernels},t.kernels.set=function(e){this._blurFilter.kernels=e},t.blur.get=function(){return this._blurFilter.blur},t.blur.set=function(e){this._blurFilter.blur=e},t.quality.get=function(){return this._blurFilter.quality},t.quality.set=function(e){this._blurFilter.quality=e},t.pixelSize.get=function(){return this._blurFilter.pixelSize},t.pixelSize.set=function(e){this._blurFilter.pixelSize=e},Object.defineProperties(e.prototype,t),e}(n.Filter),o=function(t){function e(e){void 0===e&&(e=8),t.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\n\nuniform vec4 filterArea;\nuniform float pixelSize;\nuniform sampler2D uSampler;\n\nvec2 mapCoord( vec2 coord )\n{\n coord *= filterArea.xy;\n coord += filterArea.zw;\n\n return coord;\n}\n\nvec2 unmapCoord( vec2 coord )\n{\n coord -= filterArea.zw;\n coord /= filterArea.xy;\n\n return coord;\n}\n\nvec2 pixelate(vec2 coord, vec2 size)\n{\n return floor( coord / size ) * size;\n}\n\nvec2 getMod(vec2 coord, vec2 size)\n{\n return mod( coord , size) / size;\n}\n\nfloat character(float n, vec2 p)\n{\n p = floor(p*vec2(4.0, -4.0) + 2.5);\n\n if (clamp(p.x, 0.0, 4.0) == p.x)\n {\n if (clamp(p.y, 0.0, 4.0) == p.y)\n {\n if (int(mod(n/exp2(p.x + 5.0*p.y), 2.0)) == 1) return 1.0;\n }\n }\n return 0.0;\n}\n\nvoid main()\n{\n vec2 coord = mapCoord(vTextureCoord);\n\n // get the rounded color..\n vec2 pixCoord = pixelate(coord, vec2(pixelSize));\n pixCoord = unmapCoord(pixCoord);\n\n vec4 color = texture2D(uSampler, pixCoord);\n\n // determine the character to use\n float gray = (color.r + color.g + color.b) / 3.0;\n\n float n = 65536.0; // .\n if (gray > 0.2) n = 65600.0; // :\n if (gray > 0.3) n = 332772.0; // *\n if (gray > 0.4) n = 15255086.0; // o\n if (gray > 0.5) n = 23385164.0; // &\n if (gray > 0.6) n = 15252014.0; // 8\n if (gray > 0.7) n = 13199452.0; // @\n if (gray > 0.8) n = 11512810.0; // #\n\n // get the mod..\n vec2 modd = getMod(coord, vec2(pixelSize));\n\n gl_FragColor = color * character( n, vec2(-1.0) + modd * 2.0);\n\n}\n"),this.size=e}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var r={size:{configurable:!0}};return r.size.get=function(){return this.uniforms.pixelSize},r.size.set=function(e){this.uniforms.pixelSize=e},Object.defineProperties(e.prototype,r),e}(n.Filter),a=function(t){function e(e){void 0===e&&(e={}),t.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec4 filterArea;\n\nuniform float transformX;\nuniform float transformY;\nuniform vec3 lightColor;\nuniform float lightAlpha;\nuniform vec3 shadowColor;\nuniform float shadowAlpha;\n\nvoid main(void) {\n vec2 transform = vec2(1.0 / filterArea) * vec2(transformX, transformY);\n vec4 color = texture2D(uSampler, vTextureCoord);\n float light = texture2D(uSampler, vTextureCoord - transform).a;\n float shadow = texture2D(uSampler, vTextureCoord + transform).a;\n\n color.rgb = mix(color.rgb, lightColor, clamp((color.a - light) * lightAlpha, 0.0, 1.0));\n color.rgb = mix(color.rgb, shadowColor, clamp((color.a - shadow) * shadowAlpha, 0.0, 1.0));\n gl_FragColor = vec4(color.rgb * color.a, color.a);\n}\n"),this.uniforms.lightColor=new Float32Array(3),this.uniforms.shadowColor=new Float32Array(3),e=Object.assign({rotation:45,thickness:2,lightColor:16777215,lightAlpha:.7,shadowColor:0,shadowAlpha:.7},e),this.rotation=e.rotation,this.thickness=e.thickness,this.lightColor=e.lightColor,this.lightAlpha=e.lightAlpha,this.shadowColor=e.shadowColor,this.shadowAlpha=e.shadowAlpha}t&&(e.__proto__=t);var r={rotation:{configurable:!0},thickness:{configurable:!0},lightColor:{configurable:!0},lightAlpha:{configurable:!0},shadowColor:{configurable:!0},shadowAlpha:{configurable:!0}};return((e.prototype=Object.create(t&&t.prototype)).constructor=e).prototype._updateTransform=function(){this.uniforms.transformX=this._thickness*Math.cos(this._angle),this.uniforms.transformY=this._thickness*Math.sin(this._angle)},r.rotation.get=function(){return this._angle/f.DEG_TO_RAD},r.rotation.set=function(e){this._angle=e*f.DEG_TO_RAD,this._updateTransform()},r.thickness.get=function(){return this._thickness},r.thickness.set=function(e){this._thickness=e,this._updateTransform()},r.lightColor.get=function(){return l.rgb2hex(this.uniforms.lightColor)},r.lightColor.set=function(e){l.hex2rgb(e,this.uniforms.lightColor)},r.lightAlpha.get=function(){return this.uniforms.lightAlpha},r.lightAlpha.set=function(e){this.uniforms.lightAlpha=e},r.shadowColor.get=function(){return l.rgb2hex(this.uniforms.shadowColor)},r.shadowColor.set=function(e){l.hex2rgb(e,this.uniforms.shadowColor)},r.shadowAlpha.get=function(){return this.uniforms.shadowAlpha},r.shadowAlpha.set=function(e){this.uniforms.shadowAlpha=e},Object.defineProperties(e.prototype,r),e}(n.Filter),g=function(a){function e(e,t,r,i){var n,o;void 0===e&&(e=2),void 0===t&&(t=4),void 0===r&&(r=p.settings.RESOLUTION),void 0===i&&(i=5),a.call(this),"number"==typeof e?o=n=e:e instanceof f.Point?(n=e.x,o=e.y):Array.isArray(e)&&(n=e[0],o=e[1]),this.blurXFilter=new h.BlurFilterPass(!0,n,t,r,i),this.blurYFilter=new h.BlurFilterPass(!1,o,t,r,i),this.blurYFilter.blendMode=s.BLEND_MODES.SCREEN,this.defaultFilter=new u.AlphaFilter}a&&(e.__proto__=a);var t={blur:{configurable:!0},blurX:{configurable:!0},blurY:{configurable:!0}};return((e.prototype=Object.create(a&&a.prototype)).constructor=e).prototype.apply=function(e,t,r){var i=e.getFilterTexture(!0);this.defaultFilter.apply(e,t,r),this.blurXFilter.apply(e,t,i),this.blurYFilter.apply(e,i,r),e.returnFilterTexture(i)},t.blur.get=function(){return this.blurXFilter.blur},t.blur.set=function(e){this.blurXFilter.blur=this.blurYFilter.blur=e},t.blurX.get=function(){return this.blurXFilter.blur},t.blurX.set=function(e){this.blurXFilter.blur=e},t.blurY.get=function(){return this.blurYFilter.blur},t.blurY.set=function(e){this.blurYFilter.blur=e},Object.defineProperties(e.prototype,t),e}(n.Filter),v=function(i){function e(e,t,r){i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","uniform float radius;\nuniform float strength;\nuniform vec2 center;\nuniform sampler2D uSampler;\nvarying vec2 vTextureCoord;\n\nuniform vec4 filterArea;\nuniform vec4 filterClamp;\nuniform vec2 dimensions;\n\nvoid main()\n{\n vec2 coord = vTextureCoord * filterArea.xy;\n coord -= center * dimensions.xy;\n float distance = length(coord);\n if (distance < radius) {\n float percent = distance / radius;\n if (strength > 0.0) {\n coord *= mix(1.0, smoothstep(0.0, radius / distance, percent), strength * 0.75);\n } else {\n coord *= mix(1.0, pow(percent, 1.0 + strength * 0.75) * radius / distance, 1.0 - percent);\n }\n }\n coord += center * dimensions.xy;\n coord /= filterArea.xy;\n vec2 clampedCoord = clamp(coord, filterClamp.xy, filterClamp.zw);\n vec4 color = texture2D(uSampler, clampedCoord);\n if (coord != clampedCoord) {\n color *= max(0.0, 1.0 - length(coord - clampedCoord));\n }\n\n gl_FragColor = color;\n}\n"),this.uniforms.dimensions=new Float32Array(2),this.center=e||[.5,.5],this.radius="number"==typeof t?t:100,this.strength="number"==typeof r?r:1}i&&(e.__proto__=i);var t={radius:{configurable:!0},strength:{configurable:!0},center:{configurable:!0}};return((e.prototype=Object.create(i&&i.prototype)).constructor=e).prototype.apply=function(e,t,r,i){this.uniforms.dimensions[0]=t.filterFrame.width,this.uniforms.dimensions[1]=t.filterFrame.height,e.applyFilter(this,t,r,i)},t.radius.get=function(){return this.uniforms.radius},t.radius.set=function(e){this.uniforms.radius=e},t.strength.get=function(){return this.uniforms.strength},t.strength.set=function(e){this.uniforms.strength=e},t.center.get=function(){return this.uniforms.center},t.center.set=function(e){this.uniforms.center=e},Object.defineProperties(e.prototype,t),e}(n.Filter),_=function(i){function e(e,t,r){void 0===t&&(t=!1),void 0===r&&(r=1),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform sampler2D colorMap;\nuniform float _mix;\nuniform float _size;\nuniform float _sliceSize;\nuniform float _slicePixelSize;\nuniform float _sliceInnerSize;\nvoid main() {\n vec4 color = texture2D(uSampler, vTextureCoord.xy);\n\n vec4 adjusted;\n if (color.a > 0.0) {\n color.rgb /= color.a;\n float innerWidth = _size - 1.0;\n float zSlice0 = min(floor(color.b * innerWidth), innerWidth);\n float zSlice1 = min(zSlice0 + 1.0, innerWidth);\n float xOffset = _slicePixelSize * 0.5 + color.r * _sliceInnerSize;\n float s0 = xOffset + (zSlice0 * _sliceSize);\n float s1 = xOffset + (zSlice1 * _sliceSize);\n float yOffset = _sliceSize * 0.5 + color.g * (1.0 - _sliceSize);\n vec4 slice0Color = texture2D(colorMap, vec2(s0,yOffset));\n vec4 slice1Color = texture2D(colorMap, vec2(s1,yOffset));\n float zOffset = fract(color.b * innerWidth);\n adjusted = mix(slice0Color, slice1Color, zOffset);\n\n color.rgb *= color.a;\n }\n gl_FragColor = vec4(mix(color, adjusted, _mix).rgb, color.a);\n\n}"),this._size=0,this._sliceSize=0,this._slicePixelSize=0,this._sliceInnerSize=0,this._scaleMode=null,this._nearest=!1,this.nearest=t,this.mix=r,this.colorMap=e}i&&(e.__proto__=i);var t={colorSize:{configurable:!0},colorMap:{configurable:!0},nearest:{configurable:!0}};return((e.prototype=Object.create(i&&i.prototype)).constructor=e).prototype.apply=function(e,t,r,i){this.uniforms._mix=this.mix,e.applyFilter(this,t,r,i)},t.colorSize.get=function(){return this._size},t.colorMap.get=function(){return this._colorMap},t.colorMap.set=function(e){e instanceof n.Texture||(e=n.Texture.from(e)),e&&e.baseTexture&&(e.baseTexture.scaleMode=this._scaleMode,e.baseTexture.mipmap=!1,this._size=e.height,this._sliceSize=1/this._size,this._slicePixelSize=this._sliceSize/this._size,this._sliceInnerSize=this._slicePixelSize*(this._size-1),this.uniforms._size=this._size,this.uniforms._sliceSize=this._sliceSize,this.uniforms._slicePixelSize=this._slicePixelSize,this.uniforms._sliceInnerSize=this._sliceInnerSize,this.uniforms.colorMap=e),this._colorMap=e},t.nearest.get=function(){return this._nearest},t.nearest.set=function(e){this._nearest=e,this._scaleMode=e?s.SCALE_MODES.NEAREST:s.SCALE_MODES.LINEAR;var t=this._colorMap;t&&t.baseTexture&&(t.baseTexture._glTextures={},t.baseTexture.scaleMode=this._scaleMode,t.baseTexture.mipmap=!1,t._updateID++,t.baseTexture.emit("update",t.baseTexture))},e.prototype.updateColorMap=function(){var e=this._colorMap;e&&e.baseTexture&&(e._updateID++,e.baseTexture.emit("update",e.baseTexture),this.colorMap=e)},e.prototype.destroy=function(e){this._colorMap&&this._colorMap.destroy(e),i.prototype.destroy.call(this)},Object.defineProperties(e.prototype,t),e}(n.Filter),y=function(i){function e(e,t,r){void 0===e&&(e=16711680),void 0===t&&(t=0),void 0===r&&(r=.4),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec3 originalColor;\nuniform vec3 newColor;\nuniform float epsilon;\nvoid main(void) {\n vec4 currentColor = texture2D(uSampler, vTextureCoord);\n vec3 colorDiff = originalColor - (currentColor.rgb / max(currentColor.a, 0.0000000001));\n float colorDistance = length(colorDiff);\n float doReplace = step(colorDistance, epsilon);\n gl_FragColor = vec4(mix(currentColor.rgb, (newColor + colorDiff) * currentColor.a, doReplace), currentColor.a);\n}\n"),this.uniforms.originalColor=new Float32Array(3),this.uniforms.newColor=new Float32Array(3),this.originalColor=e,this.newColor=t,this.epsilon=r}i&&(e.__proto__=i),(e.prototype=Object.create(i&&i.prototype)).constructor=e;var t={originalColor:{configurable:!0},newColor:{configurable:!0},epsilon:{configurable:!0}};return t.originalColor.set=function(e){var t=this.uniforms.originalColor;"number"==typeof e?(l.hex2rgb(e,t),this._originalColor=e):(t[0]=e[0],t[1]=e[1],t[2]=e[2],this._originalColor=l.rgb2hex(t))},t.originalColor.get=function(){return this._originalColor},t.newColor.set=function(e){var t=this.uniforms.newColor;"number"==typeof e?(l.hex2rgb(e,t),this._newColor=e):(t[0]=e[0],t[1]=e[1],t[2]=e[2],this._newColor=l.rgb2hex(t))},t.newColor.get=function(){return this._newColor},t.epsilon.set=function(e){this.uniforms.epsilon=e},t.epsilon.get=function(){return this.uniforms.epsilon},Object.defineProperties(e.prototype,t),e}(n.Filter),b=function(i){function e(e,t,r){void 0===t&&(t=200),void 0===r&&(r=200),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying mediump vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec2 texelSize;\nuniform float matrix[9];\n\nvoid main(void)\n{\n vec4 c11 = texture2D(uSampler, vTextureCoord - texelSize); // top left\n vec4 c12 = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y - texelSize.y)); // top center\n vec4 c13 = texture2D(uSampler, vec2(vTextureCoord.x + texelSize.x, vTextureCoord.y - texelSize.y)); // top right\n\n vec4 c21 = texture2D(uSampler, vec2(vTextureCoord.x - texelSize.x, vTextureCoord.y)); // mid left\n vec4 c22 = texture2D(uSampler, vTextureCoord); // mid center\n vec4 c23 = texture2D(uSampler, vec2(vTextureCoord.x + texelSize.x, vTextureCoord.y)); // mid right\n\n vec4 c31 = texture2D(uSampler, vec2(vTextureCoord.x - texelSize.x, vTextureCoord.y + texelSize.y)); // bottom left\n vec4 c32 = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y + texelSize.y)); // bottom center\n vec4 c33 = texture2D(uSampler, vTextureCoord + texelSize); // bottom right\n\n gl_FragColor =\n c11 * matrix[0] + c12 * matrix[1] + c13 * matrix[2] +\n c21 * matrix[3] + c22 * matrix[4] + c23 * matrix[5] +\n c31 * matrix[6] + c32 * matrix[7] + c33 * matrix[8];\n\n gl_FragColor.a = c22.a;\n}\n"),this.uniforms.texelSize=new Float32Array(2),this.uniforms.matrix=new Float32Array(9),void 0!==e&&(this.matrix=e),this.width=t,this.height=r}i&&(e.__proto__=i),(e.prototype=Object.create(i&&i.prototype)).constructor=e;var t={matrix:{configurable:!0},width:{configurable:!0},height:{configurable:!0}};return t.matrix.get=function(){return this.uniforms.matrix},t.matrix.set=function(e){var r=this;e.forEach(function(e,t){return r.uniforms.matrix[t]=e})},t.width.get=function(){return 1/this.uniforms.texelSize[0]},t.width.set=function(e){this.uniforms.texelSize[0]=1/e},t.height.get=function(){return 1/this.uniforms.texelSize[1]},t.height.set=function(e){this.uniforms.texelSize[1]=1/e},Object.defineProperties(e.prototype,t),e}(n.Filter),x=function(e){function t(){e.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n float lum = length(texture2D(uSampler, vTextureCoord.xy).rgb);\n\n gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n\n if (lum < 1.00)\n {\n if (mod(gl_FragCoord.x + gl_FragCoord.y, 10.0) == 0.0)\n {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n }\n }\n\n if (lum < 0.75)\n {\n if (mod(gl_FragCoord.x - gl_FragCoord.y, 10.0) == 0.0)\n {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n }\n }\n\n if (lum < 0.50)\n {\n if (mod(gl_FragCoord.x + gl_FragCoord.y - 5.0, 10.0) == 0.0)\n {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n }\n }\n\n if (lum < 0.3)\n {\n if (mod(gl_FragCoord.x - gl_FragCoord.y - 5.0, 10.0) == 0.0)\n {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n }\n }\n}\n")}return e&&(t.__proto__=e),(t.prototype=Object.create(e&&e.prototype)).constructor=t}(n.Filter),w=function(t){function e(e){t.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec4 filterArea;\nuniform vec2 dimensions;\n\nconst float SQRT_2 = 1.414213;\n\nconst float light = 1.0;\n\nuniform float curvature;\nuniform float lineWidth;\nuniform float lineContrast;\nuniform bool verticalLine;\nuniform float noise;\nuniform float noiseSize;\n\nuniform float vignetting;\nuniform float vignettingAlpha;\nuniform float vignettingBlur;\n\nuniform float seed;\nuniform float time;\n\nfloat rand(vec2 co) {\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvoid main(void)\n{\n vec2 pixelCoord = vTextureCoord.xy * filterArea.xy;\n vec2 coord = pixelCoord / dimensions;\n\n vec2 dir = vec2(coord - vec2(0.5, 0.5));\n\n float _c = curvature > 0. ? curvature : 1.;\n float k = curvature > 0. ?(length(dir * dir) * 0.25 * _c * _c + 0.935 * _c) : 1.;\n vec2 uv = dir * k;\n\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n vec3 rgb = gl_FragColor.rgb;\n\n\n if (noise > 0.0 && noiseSize > 0.0)\n {\n pixelCoord.x = floor(pixelCoord.x / noiseSize);\n pixelCoord.y = floor(pixelCoord.y / noiseSize);\n float _noise = rand(pixelCoord * noiseSize * seed) - 0.5;\n rgb += _noise * noise;\n }\n\n if (lineWidth > 0.0) {\n float v = (verticalLine ? uv.x * dimensions.x : uv.y * dimensions.y) * min(1.0, 2.0 / lineWidth ) / _c;\n float j = 1. + cos(v * 1.2 - time) * 0.5 * lineContrast;\n rgb *= j;\n float segment = verticalLine ? mod((dir.x + .5) * dimensions.x, 4.) : mod((dir.y + .5) * dimensions.y, 4.);\n rgb *= 0.99 + ceil(segment) * 0.015;\n }\n\n if (vignetting > 0.0)\n {\n float outter = SQRT_2 - vignetting * SQRT_2;\n float darker = clamp((outter - length(dir) * SQRT_2) / ( 0.00001 + vignettingBlur * SQRT_2), 0.0, 1.0);\n rgb *= darker + (1.0 - darker) * (1.0 - vignettingAlpha);\n }\n\n gl_FragColor.rgb = rgb;\n}\n"),this.uniforms.dimensions=new Float32Array(2),this.time=0,this.seed=0,Object.assign(this,{curvature:1,lineWidth:1,lineContrast:.25,verticalLine:!1,noise:0,noiseSize:1,seed:0,vignetting:.3,vignettingAlpha:1,vignettingBlur:.3,time:0},e)}t&&(e.__proto__=t);var r={curvature:{configurable:!0},lineWidth:{configurable:!0},lineContrast:{configurable:!0},verticalLine:{configurable:!0},noise:{configurable:!0},noiseSize:{configurable:!0},vignetting:{configurable:!0},vignettingAlpha:{configurable:!0},vignettingBlur:{configurable:!0}};return((e.prototype=Object.create(t&&t.prototype)).constructor=e).prototype.apply=function(e,t,r,i){this.uniforms.dimensions[0]=t.filterFrame.width,this.uniforms.dimensions[1]=t.filterFrame.height,this.uniforms.seed=this.seed,this.uniforms.time=this.time,e.applyFilter(this,t,r,i)},r.curvature.set=function(e){this.uniforms.curvature=e},r.curvature.get=function(){return this.uniforms.curvature},r.lineWidth.set=function(e){this.uniforms.lineWidth=e},r.lineWidth.get=function(){return this.uniforms.lineWidth},r.lineContrast.set=function(e){this.uniforms.lineContrast=e},r.lineContrast.get=function(){return this.uniforms.lineContrast},r.verticalLine.set=function(e){this.uniforms.verticalLine=e},r.verticalLine.get=function(){return this.uniforms.verticalLine},r.noise.set=function(e){this.uniforms.noise=e},r.noise.get=function(){return this.uniforms.noise},r.noiseSize.set=function(e){this.uniforms.noiseSize=e},r.noiseSize.get=function(){return this.uniforms.noiseSize},r.vignetting.set=function(e){this.uniforms.vignetting=e},r.vignetting.get=function(){return this.uniforms.vignetting},r.vignettingAlpha.set=function(e){this.uniforms.vignettingAlpha=e},r.vignettingAlpha.get=function(){return this.uniforms.vignettingAlpha},r.vignettingBlur.set=function(e){this.uniforms.vignettingBlur=e},r.vignettingBlur.get=function(){return this.uniforms.vignettingBlur},Object.defineProperties(e.prototype,r),e}(n.Filter),T=function(r){function e(e,t){void 0===e&&(e=1),void 0===t&&(t=5),r.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform vec4 filterArea;\nuniform sampler2D uSampler;\n\nuniform float angle;\nuniform float scale;\n\nfloat pattern()\n{\n float s = sin(angle), c = cos(angle);\n vec2 tex = vTextureCoord * filterArea.xy;\n vec2 point = vec2(\n c * tex.x - s * tex.y,\n s * tex.x + c * tex.y\n ) * scale;\n return (sin(point.x) * sin(point.y)) * 4.0;\n}\n\nvoid main()\n{\n vec4 color = texture2D(uSampler, vTextureCoord);\n float average = (color.r + color.g + color.b) / 3.0;\n gl_FragColor = vec4(vec3(average * 10.0 - 5.0 + pattern()), color.a);\n}\n"),this.scale=e,this.angle=t}r&&(e.__proto__=r),(e.prototype=Object.create(r&&r.prototype)).constructor=e;var t={scale:{configurable:!0},angle:{configurable:!0}};return t.scale.get=function(){return this.uniforms.scale},t.scale.set=function(e){this.uniforms.scale=e},t.angle.get=function(){return this.uniforms.angle},t.angle.set=function(e){this.uniforms.angle=e},Object.defineProperties(e.prototype,t),e}(n.Filter),k=function(c){function e(e){e&&e.constructor!==Object&&(console.warn("DropShadowFilter now uses options instead of (rotation, distance, blur, color, alpha)"),e={rotation:e},void 0!==arguments[1]&&(e.distance=arguments[1]),void 0!==arguments[2]&&(e.blur=arguments[2]),void 0!==arguments[3]&&(e.color=arguments[3]),void 0!==arguments[4]&&(e.alpha=arguments[4])),e=Object.assign({rotation:45,distance:5,color:0,alpha:.5,shadowOnly:!1,kernels:null,blur:2,quality:3,pixelSize:1,resolution:p.settings.RESOLUTION},e),c.call(this);var t=e.kernels,r=e.blur,i=e.quality,n=e.pixelSize,o=e.resolution;this._tintFilter=new c("attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform float alpha;\nuniform vec3 color;\n\nuniform vec2 shift;\nuniform vec4 inputSize;\n\nvoid main(void){\n vec4 sample = texture2D(uSampler, vTextureCoord - shift * inputSize.zw);\n\n // Un-premultiply alpha before applying the color\n if (sample.a > 0.0) {\n sample.rgb /= sample.a;\n }\n\n // Premultiply alpha again\n sample.rgb = color.rgb * sample.a;\n\n // alpha user alpha\n sample *= alpha;\n\n gl_FragColor = sample;\n}"),this._tintFilter.uniforms.color=new Float32Array(4),this._tintFilter.uniforms.shift=new f.Point,this._tintFilter.resolution=o,this._blurFilter=t?new d(t):new d(r,i),this.pixelSize=n,this.resolution=o;var a=e.shadowOnly,s=e.rotation,l=e.distance,u=e.alpha,h=e.color;this.shadowOnly=a,this.rotation=s,this.distance=l,this.alpha=u,this.color=h,this._updatePadding()}c&&(e.__proto__=c);var t={resolution:{configurable:!0},distance:{configurable:!0},rotation:{configurable:!0},alpha:{configurable:!0},color:{configurable:!0},kernels:{configurable:!0},blur:{configurable:!0},quality:{configurable:!0},pixelSize:{configurable:!0}};return((e.prototype=Object.create(c&&c.prototype)).constructor=e).prototype.apply=function(e,t,r,i){var n=e.getFilterTexture();this._tintFilter.apply(e,t,n,!0),this._blurFilter.apply(e,n,r,i),!0!==this.shadowOnly&&e.applyFilter(this,t,r,!1),e.returnFilterTexture(n)},e.prototype._updatePadding=function(){this.padding=this.distance+2*this.blur},e.prototype._updateShift=function(){this._tintFilter.uniforms.shift.set(this.distance*Math.cos(this.angle),this.distance*Math.sin(this.angle))},t.resolution.get=function(){return this._resolution},t.resolution.set=function(e){this._resolution=e,this._tintFilter&&(this._tintFilter.resolution=e),this._blurFilter&&(this._blurFilter.resolution=e)},t.distance.get=function(){return this._distance},t.distance.set=function(e){this._distance=e,this._updatePadding(),this._updateShift()},t.rotation.get=function(){return this.angle/f.DEG_TO_RAD},t.rotation.set=function(e){this.angle=e*f.DEG_TO_RAD,this._updateShift()},t.alpha.get=function(){return this._tintFilter.uniforms.alpha},t.alpha.set=function(e){this._tintFilter.uniforms.alpha=e},t.color.get=function(){return l.rgb2hex(this._tintFilter.uniforms.color)},t.color.set=function(e){l.hex2rgb(e,this._tintFilter.uniforms.color)},t.kernels.get=function(){return this._blurFilter.kernels},t.kernels.set=function(e){this._blurFilter.kernels=e},t.blur.get=function(){return this._blurFilter.blur},t.blur.set=function(e){this._blurFilter.blur=e,this._updatePadding()},t.quality.get=function(){return this._blurFilter.quality},t.quality.set=function(e){this._blurFilter.quality=e},t.pixelSize.get=function(){return this._blurFilter.pixelSize},t.pixelSize.set=function(e){this._blurFilter.pixelSize=e},Object.defineProperties(e.prototype,t),e}(n.Filter),S=function(t){function e(e){void 0===e&&(e=5),t.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float strength;\nuniform vec4 filterArea;\n\n\nvoid main(void)\n{\n\tvec2 onePixel = vec2(1.0 / filterArea);\n\n\tvec4 color;\n\n\tcolor.rgb = vec3(0.5);\n\n\tcolor -= texture2D(uSampler, vTextureCoord - onePixel) * strength;\n\tcolor += texture2D(uSampler, vTextureCoord + onePixel) * strength;\n\n\tcolor.rgb = vec3((color.r + color.g + color.b) / 3.0);\n\n\tfloat alpha = texture2D(uSampler, vTextureCoord).a;\n\n\tgl_FragColor = vec4(color.rgb * alpha, alpha);\n}\n"),this.strength=e}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var r={strength:{configurable:!0}};return r.strength.get=function(){return this.uniforms.strength},r.strength.set=function(e){this.uniforms.strength=e},Object.defineProperties(e.prototype,r),e}(n.Filter),P=function(t){function e(e){void 0===e&&(e={}),t.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","// precision highp float;\n\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec4 filterArea;\nuniform vec4 filterClamp;\nuniform vec2 dimensions;\nuniform float aspect;\n\nuniform sampler2D displacementMap;\nuniform float offset;\nuniform float sinDir;\nuniform float cosDir;\nuniform int fillMode;\n\nuniform float seed;\nuniform vec2 red;\nuniform vec2 green;\nuniform vec2 blue;\n\nconst int TRANSPARENT = 0;\nconst int ORIGINAL = 1;\nconst int LOOP = 2;\nconst int CLAMP = 3;\nconst int MIRROR = 4;\n\nvoid main(void)\n{\n vec2 coord = (vTextureCoord * filterArea.xy) / dimensions;\n\n if (coord.x > 1.0 || coord.y > 1.0) {\n return;\n }\n\n float cx = coord.x - 0.5;\n float cy = (coord.y - 0.5) * aspect;\n float ny = (-sinDir * cx + cosDir * cy) / aspect + 0.5;\n\n // displacementMap: repeat\n // ny = ny > 1.0 ? ny - 1.0 : (ny < 0.0 ? 1.0 + ny : ny);\n\n // displacementMap: mirror\n ny = ny > 1.0 ? 2.0 - ny : (ny < 0.0 ? -ny : ny);\n\n vec4 dc = texture2D(displacementMap, vec2(0.5, ny));\n\n float displacement = (dc.r - dc.g) * (offset / filterArea.x);\n\n coord = vTextureCoord + vec2(cosDir * displacement, sinDir * displacement * aspect);\n\n if (fillMode == CLAMP) {\n coord = clamp(coord, filterClamp.xy, filterClamp.zw);\n } else {\n if( coord.x > filterClamp.z ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.x -= filterClamp.z;\n } else if (fillMode == MIRROR) {\n coord.x = filterClamp.z * 2.0 - coord.x;\n }\n } else if( coord.x < filterClamp.x ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.x += filterClamp.z;\n } else if (fillMode == MIRROR) {\n coord.x *= -filterClamp.z;\n }\n }\n\n if( coord.y > filterClamp.w ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.y -= filterClamp.w;\n } else if (fillMode == MIRROR) {\n coord.y = filterClamp.w * 2.0 - coord.y;\n }\n } else if( coord.y < filterClamp.y ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.y += filterClamp.w;\n } else if (fillMode == MIRROR) {\n coord.y *= -filterClamp.w;\n }\n }\n }\n\n gl_FragColor.r = texture2D(uSampler, coord + red * (1.0 - seed * 0.4) / filterArea.xy).r;\n gl_FragColor.g = texture2D(uSampler, coord + green * (1.0 - seed * 0.3) / filterArea.xy).g;\n gl_FragColor.b = texture2D(uSampler, coord + blue * (1.0 - seed * 0.2) / filterArea.xy).b;\n gl_FragColor.a = texture2D(uSampler, coord).a;\n}\n"),this.uniforms.dimensions=new Float32Array(2),e=Object.assign({slices:5,offset:100,direction:0,fillMode:0,average:!1,seed:0,red:[0,0],green:[0,0],blue:[0,0],minSize:8,sampleSize:512},e),this.direction=e.direction,this.red=e.red,this.green=e.green,this.blue=e.blue,this.offset=e.offset,this.fillMode=e.fillMode,this.average=e.average,this.seed=e.seed,this.minSize=e.minSize,this.sampleSize=e.sampleSize,this._canvas=document.createElement("canvas"),this._canvas.width=4,this._canvas.height=this.sampleSize,this.texture=n.Texture.from(this._canvas,{scaleMode:s.SCALE_MODES.NEAREST}),this._slices=0,this.slices=e.slices}t&&(e.__proto__=t);var r={sizes:{configurable:!0},offsets:{configurable:!0},slices:{configurable:!0},direction:{configurable:!0},red:{configurable:!0},green:{configurable:!0},blue:{configurable:!0}};return((e.prototype=Object.create(t&&t.prototype)).constructor=e).prototype.apply=function(e,t,r,i){var n=t.filterFrame.width,o=t.filterFrame.height;this.uniforms.dimensions[0]=n,this.uniforms.dimensions[1]=o,this.uniforms.aspect=o/n,this.uniforms.seed=this.seed,this.uniforms.offset=this.offset,this.uniforms.fillMode=this.fillMode,e.applyFilter(this,t,r,i)},e.prototype._randomizeSizes=function(){var e=this._sizes,t=this._slices-1,r=this.sampleSize,i=Math.min(this.minSize/r,.9/this._slices);if(this.average){for(var n=this._slices,o=1,a=0;a>0,i=e[t];e[t]=e[r],e[r]=i}},e.prototype._randomizeOffsets=function(){for(var e=0;e>0,t,1+a>>0),n+=a}r.baseTexture.update(),this.uniforms.displacementMap=r},r.sizes.set=function(e){for(var t=Math.min(this._slices,e.length),r=0;rthis._maxColors)throw"Length of replacements ("+i+") exceeds the maximum colors length ("+this._maxColors+")";t[3*i]=-1;for(var n=0;n 0.5) then: 1 - 2 * (1 - dst) * (1 - src)\n return vec3((dst.x <= 0.5) ? (2.0 * src.x * dst.x) : (1.0 - 2.0 * (1.0 - dst.x) * (1.0 - src.x)),\n (dst.y <= 0.5) ? (2.0 * src.y * dst.y) : (1.0 - 2.0 * (1.0 - dst.y) * (1.0 - src.y)),\n (dst.z <= 0.5) ? (2.0 * src.z * dst.z) : (1.0 - 2.0 * (1.0 - dst.z) * (1.0 - src.z)));\n}\n\n\nvoid main()\n{\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n vec3 color = gl_FragColor.rgb;\n\n if (sepia > 0.0)\n {\n float gray = (color.x + color.y + color.z) / 3.0;\n vec3 grayscale = vec3(gray);\n\n color = Overlay(SEPIA_RGB, grayscale);\n\n color = grayscale + sepia * (color - grayscale);\n }\n\n vec2 coord = vTextureCoord * filterArea.xy / dimensions.xy;\n\n if (vignetting > 0.0)\n {\n float outter = SQRT_2 - vignetting * SQRT_2;\n vec2 dir = vec2(vec2(0.5, 0.5) - coord);\n dir.y *= dimensions.y / dimensions.x;\n float darker = clamp((outter - length(dir) * SQRT_2) / ( 0.00001 + vignettingBlur * SQRT_2), 0.0, 1.0);\n color.rgb *= darker + (1.0 - darker) * (1.0 - vignettingAlpha);\n }\n\n if (scratchDensity > seed && scratch != 0.0)\n {\n float phase = seed * 256.0;\n float s = mod(floor(phase), 2.0);\n float dist = 1.0 / scratchDensity;\n float d = distance(coord, vec2(seed * dist, abs(s - seed * dist)));\n if (d < seed * 0.6 + 0.4)\n {\n highp float period = scratchDensity * 10.0;\n\n float xx = coord.x * period + phase;\n float aa = abs(mod(xx, 0.5) * 4.0);\n float bb = mod(floor(xx / 0.5), 2.0);\n float yy = (1.0 - bb) * aa + bb * (2.0 - aa);\n\n float kk = 2.0 * period;\n float dw = scratchWidth / dimensions.x * (0.75 + seed);\n float dh = dw * kk;\n\n float tine = (yy - (2.0 - dh));\n\n if (tine > 0.0) {\n float _sign = sign(scratch);\n\n tine = s * tine / period + scratch + 0.1;\n tine = clamp(tine + 1.0, 0.5 + _sign * 0.5, 1.5 + _sign * 0.5);\n\n color.rgb *= tine;\n }\n }\n }\n\n if (noise > 0.0 && noiseSize > 0.0)\n {\n vec2 pixelCoord = vTextureCoord.xy * filterArea.xy;\n pixelCoord.x = floor(pixelCoord.x / noiseSize);\n pixelCoord.y = floor(pixelCoord.y / noiseSize);\n // vec2 d = pixelCoord * noiseSize * vec2(1024.0 + seed * 512.0, 1024.0 - seed * 512.0);\n // float _noise = snoise(d) * 0.5;\n float _noise = rand(pixelCoord * noiseSize * seed) - 0.5;\n color += _noise * noise;\n }\n\n gl_FragColor.rgb = color;\n}\n"),this.uniforms.dimensions=new Float32Array(2),"number"==typeof e?(this.seed=e,e=null):this.seed=t,Object.assign(this,{sepia:.3,noise:.3,noiseSize:1,scratch:.5,scratchDensity:.3,scratchWidth:1,vignetting:.3,vignettingAlpha:1,vignettingBlur:.3},e)}r&&(e.__proto__=r);var t={sepia:{configurable:!0},noise:{configurable:!0},noiseSize:{configurable:!0},scratch:{configurable:!0},scratchDensity:{configurable:!0},scratchWidth:{configurable:!0},vignetting:{configurable:!0},vignettingAlpha:{configurable:!0},vignettingBlur:{configurable:!0}};return((e.prototype=Object.create(r&&r.prototype)).constructor=e).prototype.apply=function(e,t,r,i){this.uniforms.dimensions[0]=t.filterFrame.width,this.uniforms.dimensions[1]=t.filterFrame.height,this.uniforms.seed=this.seed,e.applyFilter(this,t,r,i)},t.sepia.set=function(e){this.uniforms.sepia=e},t.sepia.get=function(){return this.uniforms.sepia},t.noise.set=function(e){this.uniforms.noise=e},t.noise.get=function(){return this.uniforms.noise},t.noiseSize.set=function(e){this.uniforms.noiseSize=e},t.noiseSize.get=function(){return this.uniforms.noiseSize},t.scratch.set=function(e){this.uniforms.scratch=e},t.scratch.get=function(){return this.uniforms.scratch},t.scratchDensity.set=function(e){this.uniforms.scratchDensity=e},t.scratchDensity.get=function(){return this.uniforms.scratchDensity},t.scratchWidth.set=function(e){this.uniforms.scratchWidth=e},t.scratchWidth.get=function(){return this.uniforms.scratchWidth},t.vignetting.set=function(e){this.uniforms.vignetting=e},t.vignetting.get=function(){return this.uniforms.vignetting},t.vignettingAlpha.set=function(e){this.uniforms.vignettingAlpha=e},t.vignettingAlpha.get=function(){return this.uniforms.vignettingAlpha},t.vignettingBlur.set=function(e){this.uniforms.vignettingBlur=e},t.vignettingBlur.get=function(){return this.uniforms.vignettingBlur},Object.defineProperties(e.prototype,t),e}(n.Filter),M=function(o){function a(e,t,r){void 0===e&&(e=1),void 0===t&&(t=0),void 0===r&&(r=.1);var i=Math.max(r*a.MAX_SAMPLES,a.MIN_SAMPLES),n=(2*Math.PI/i).toFixed(7);o.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec2 thickness;\nuniform vec4 outlineColor;\nuniform vec4 filterClamp;\n\nconst float DOUBLE_PI = 3.14159265358979323846264 * 2.;\n\nvoid main(void) {\n vec4 ownColor = texture2D(uSampler, vTextureCoord);\n vec4 curColor;\n float maxAlpha = 0.;\n vec2 displaced;\n for (float angle = 0.; angle <= DOUBLE_PI; angle += ${angleStep}) {\n displaced.x = vTextureCoord.x + thickness.x * cos(angle);\n displaced.y = vTextureCoord.y + thickness.y * sin(angle);\n curColor = texture2D(uSampler, clamp(displaced, filterClamp.xy, filterClamp.zw));\n maxAlpha = max(maxAlpha, curColor.a);\n }\n float resultAlpha = max(maxAlpha, ownColor.a);\n gl_FragColor = vec4((ownColor.rgb + outlineColor.rgb * (1. - ownColor.a)) * resultAlpha, resultAlpha);\n}\n".replace(/\$\{angleStep\}/,n)),this.uniforms.thickness=new Float32Array([0,0]),this.thickness=e,this.uniforms.outlineColor=new Float32Array([0,0,0,1]),this.color=t,this.quality=r}o&&(a.__proto__=o);var e={color:{configurable:!0}};return((a.prototype=Object.create(o&&o.prototype)).constructor=a).prototype.apply=function(e,t,r,i){this.uniforms.thickness[0]=this.thickness/t._frame.width,this.uniforms.thickness[1]=this.thickness/t._frame.height,e.applyFilter(this,t,r,i)},e.color.get=function(){return l.rgb2hex(this.uniforms.outlineColor)},e.color.set=function(e){l.hex2rgb(e,this.uniforms.outlineColor)},Object.defineProperties(a.prototype,e),a}(n.Filter);M.MIN_SAMPLES=1,M.MAX_SAMPLES=100;var D=function(t){function e(e){void 0===e&&(e=10),t.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform vec2 size;\nuniform sampler2D uSampler;\n\nuniform vec4 filterArea;\n\nvec2 mapCoord( vec2 coord )\n{\n coord *= filterArea.xy;\n coord += filterArea.zw;\n\n return coord;\n}\n\nvec2 unmapCoord( vec2 coord )\n{\n coord -= filterArea.zw;\n coord /= filterArea.xy;\n\n return coord;\n}\n\nvec2 pixelate(vec2 coord, vec2 size)\n{\n\treturn floor( coord / size ) * size;\n}\n\nvoid main(void)\n{\n vec2 coord = mapCoord(vTextureCoord);\n\n coord = pixelate(coord, size);\n\n coord = unmapCoord(coord);\n\n gl_FragColor = texture2D(uSampler, coord);\n}\n"),this.size=e}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var r={size:{configurable:!0}};return r.size.get=function(){return this.uniforms.size},r.size.set=function(e){"number"==typeof e&&(e=[e,e]),this.uniforms.size=e},Object.defineProperties(e.prototype,r),e}(n.Filter),R=function(n){function e(e,t,r,i){void 0===e&&(e=0),void 0===t&&(t=[0,0]),void 0===r&&(r=5),void 0===i&&(i=-1),n.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec4 filterArea;\n\nuniform float uRadian;\nuniform vec2 uCenter;\nuniform float uRadius;\nuniform int uKernelSize;\n\nconst int MAX_KERNEL_SIZE = 2048;\n\nvoid main(void)\n{\n vec4 color = texture2D(uSampler, vTextureCoord);\n\n if (uKernelSize == 0)\n {\n gl_FragColor = color;\n return;\n }\n\n float aspect = filterArea.y / filterArea.x;\n vec2 center = uCenter.xy / filterArea.xy;\n float gradient = uRadius / filterArea.x * 0.3;\n float radius = uRadius / filterArea.x - gradient * 0.5;\n int k = uKernelSize - 1;\n\n vec2 coord = vTextureCoord;\n vec2 dir = vec2(center - coord);\n float dist = length(vec2(dir.x, dir.y * aspect));\n\n float radianStep = uRadian;\n if (radius >= 0.0 && dist > radius) {\n float delta = dist - radius;\n float gap = gradient;\n float scale = 1.0 - abs(delta / gap);\n if (scale <= 0.0) {\n gl_FragColor = color;\n return;\n }\n radianStep *= scale;\n }\n radianStep /= float(k);\n\n float s = sin(radianStep);\n float c = cos(radianStep);\n mat2 rotationMatrix = mat2(vec2(c, -s), vec2(s, c));\n\n for(int i = 0; i < MAX_KERNEL_SIZE - 1; i++) {\n if (i == k) {\n break;\n }\n\n coord -= center;\n coord.y *= aspect;\n coord = rotationMatrix * coord;\n coord.y /= aspect;\n coord += center;\n\n vec4 sample = texture2D(uSampler, coord);\n\n // switch to pre-multiplied alpha to correctly blur transparent images\n // sample.rgb *= sample.a;\n\n color += sample;\n }\n\n gl_FragColor = color / float(uKernelSize);\n}\n"),this._angle=0,this.angle=e,this.center=t,this.kernelSize=r,this.radius=i}n&&(e.__proto__=n);var t={angle:{configurable:!0},center:{configurable:!0},radius:{configurable:!0}};return((e.prototype=Object.create(n&&n.prototype)).constructor=e).prototype.apply=function(e,t,r,i){this.uniforms.uKernelSize=0!==this._angle?this.kernelSize:0,e.applyFilter(this,t,r,i)},t.angle.set=function(e){this._angle=e,this.uniforms.uRadian=e*Math.PI/180},t.angle.get=function(){return this._angle},t.center.get=function(){return this.uniforms.uCenter},t.center.set=function(e){this.uniforms.uCenter=e},t.radius.get=function(){return this.uniforms.uRadius},t.radius.set=function(e){(e<0||e===1/0)&&(e=-1),this.uniforms.uRadius=e},Object.defineProperties(e.prototype,t),e}(n.Filter),z=function(t){function e(e){t.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec4 filterArea;\nuniform vec4 filterClamp;\nuniform vec2 dimensions;\n\nuniform bool mirror;\nuniform float boundary;\nuniform vec2 amplitude;\nuniform vec2 waveLength;\nuniform vec2 alpha;\nuniform float time;\n\nfloat rand(vec2 co) {\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvoid main(void)\n{\n vec2 pixelCoord = vTextureCoord.xy * filterArea.xy;\n vec2 coord = pixelCoord / dimensions;\n\n if (coord.y < boundary) {\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n return;\n }\n\n float k = (coord.y - boundary) / (1. - boundary + 0.0001);\n float areaY = boundary * dimensions.y / filterArea.y;\n float v = areaY + areaY - vTextureCoord.y;\n float y = mirror ? v : vTextureCoord.y;\n\n float _amplitude = ((amplitude.y - amplitude.x) * k + amplitude.x ) / filterArea.x;\n float _waveLength = ((waveLength.y - waveLength.x) * k + waveLength.x) / filterArea.y;\n float _alpha = (alpha.y - alpha.x) * k + alpha.x;\n\n float x = vTextureCoord.x + cos(v * 6.28 / _waveLength - time) * _amplitude;\n x = clamp(x, filterClamp.x, filterClamp.z);\n\n vec4 color = texture2D(uSampler, vec2(x, y));\n\n gl_FragColor = color * _alpha;\n}\n"),this.uniforms.amplitude=new Float32Array(2),this.uniforms.waveLength=new Float32Array(2),this.uniforms.alpha=new Float32Array(2),this.uniforms.dimensions=new Float32Array(2),Object.assign(this,{mirror:!0,boundary:.5,amplitude:[0,20],waveLength:[30,100],alpha:[1,1],time:0},e)}t&&(e.__proto__=t);var r={mirror:{configurable:!0},boundary:{configurable:!0},amplitude:{configurable:!0},waveLength:{configurable:!0},alpha:{configurable:!0}};return((e.prototype=Object.create(t&&t.prototype)).constructor=e).prototype.apply=function(e,t,r,i){this.uniforms.dimensions[0]=t.filterFrame.width,this.uniforms.dimensions[1]=t.filterFrame.height,this.uniforms.time=this.time,e.applyFilter(this,t,r,i)},r.mirror.set=function(e){this.uniforms.mirror=e},r.mirror.get=function(){return this.uniforms.mirror},r.boundary.set=function(e){this.uniforms.boundary=e},r.boundary.get=function(){return this.uniforms.boundary},r.amplitude.set=function(e){this.uniforms.amplitude[0]=e[0],this.uniforms.amplitude[1]=e[1]},r.amplitude.get=function(){return this.uniforms.amplitude},r.waveLength.set=function(e){this.uniforms.waveLength[0]=e[0],this.uniforms.waveLength[1]=e[1]},r.waveLength.get=function(){return this.uniforms.waveLength},r.alpha.set=function(e){this.uniforms.alpha[0]=e[0],this.uniforms.alpha[1]=e[1]},r.alpha.get=function(){return this.uniforms.alpha},Object.defineProperties(e.prototype,r),e}(n.Filter),F=function(i){function e(e,t,r){void 0===e&&(e=[-10,0]),void 0===t&&(t=[0,10]),void 0===r&&(r=[0,0]),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 filterArea;\nuniform vec2 red;\nuniform vec2 green;\nuniform vec2 blue;\n\nvoid main(void)\n{\n gl_FragColor.r = texture2D(uSampler, vTextureCoord + red/filterArea.xy).r;\n gl_FragColor.g = texture2D(uSampler, vTextureCoord + green/filterArea.xy).g;\n gl_FragColor.b = texture2D(uSampler, vTextureCoord + blue/filterArea.xy).b;\n gl_FragColor.a = texture2D(uSampler, vTextureCoord).a;\n}\n"),this.red=e,this.green=t,this.blue=r}i&&(e.__proto__=i),(e.prototype=Object.create(i&&i.prototype)).constructor=e;var t={red:{configurable:!0},green:{configurable:!0},blue:{configurable:!0}};return t.red.get=function(){return this.uniforms.red},t.red.set=function(e){this.uniforms.red=e},t.green.get=function(){return this.uniforms.green},t.green.set=function(e){this.uniforms.green=e},t.blue.get=function(){return this.uniforms.blue},t.blue.set=function(e){this.uniforms.blue=e},Object.defineProperties(e.prototype,t),e}(n.Filter),L=function(i){function e(e,t,r){void 0===e&&(e=[0,0]),void 0===t&&(t={}),void 0===r&&(r=0),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec4 filterArea;\nuniform vec4 filterClamp;\n\nuniform vec2 center;\n\nuniform float amplitude;\nuniform float wavelength;\n// uniform float power;\nuniform float brightness;\nuniform float speed;\nuniform float radius;\n\nuniform float time;\n\nconst float PI = 3.14159;\n\nvoid main()\n{\n float halfWavelength = wavelength * 0.5 / filterArea.x;\n float maxRadius = radius / filterArea.x;\n float currentRadius = time * speed / filterArea.x;\n\n float fade = 1.0;\n\n if (maxRadius > 0.0) {\n if (currentRadius > maxRadius) {\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n return;\n }\n fade = 1.0 - pow(currentRadius / maxRadius, 2.0);\n }\n\n vec2 dir = vec2(vTextureCoord - center / filterArea.xy);\n dir.y *= filterArea.y / filterArea.x;\n float dist = length(dir);\n\n if (dist <= 0.0 || dist < currentRadius - halfWavelength || dist > currentRadius + halfWavelength) {\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n return;\n }\n\n vec2 diffUV = normalize(dir);\n\n float diff = (dist - currentRadius) / halfWavelength;\n\n float p = 1.0 - pow(abs(diff), 2.0);\n\n // float powDiff = diff * pow(p, 2.0) * ( amplitude * fade );\n float powDiff = 1.25 * sin(diff * PI) * p * ( amplitude * fade );\n\n vec2 offset = diffUV * powDiff / filterArea.xy;\n\n // Do clamp :\n vec2 coord = vTextureCoord + offset;\n vec2 clampedCoord = clamp(coord, filterClamp.xy, filterClamp.zw);\n vec4 color = texture2D(uSampler, clampedCoord);\n if (coord != clampedCoord) {\n color *= max(0.0, 1.0 - length(coord - clampedCoord));\n }\n\n // No clamp :\n // gl_FragColor = texture2D(uSampler, vTextureCoord + offset);\n\n color.rgb *= 1.0 + (brightness - 1.0) * p * fade;\n\n gl_FragColor = color;\n}\n"),this.center=e,Array.isArray(t)&&(console.warn("Deprecated Warning: ShockwaveFilter params Array has been changed to options Object."),t={}),t=Object.assign({amplitude:30,wavelength:160,brightness:1,speed:500,radius:-1},t),this.amplitude=t.amplitude,this.wavelength=t.wavelength,this.brightness=t.brightness,this.speed=t.speed,this.radius=t.radius,this.time=r}i&&(e.__proto__=i);var t={center:{configurable:!0},amplitude:{configurable:!0},wavelength:{configurable:!0},brightness:{configurable:!0},speed:{configurable:!0},radius:{configurable:!0}};return((e.prototype=Object.create(i&&i.prototype)).constructor=e).prototype.apply=function(e,t,r,i){this.uniforms.time=this.time,e.applyFilter(this,t,r,i)},t.center.get=function(){return this.uniforms.center},t.center.set=function(e){this.uniforms.center=e},t.amplitude.get=function(){return this.uniforms.amplitude},t.amplitude.set=function(e){this.uniforms.amplitude=e},t.wavelength.get=function(){return this.uniforms.wavelength},t.wavelength.set=function(e){this.uniforms.wavelength=e},t.brightness.get=function(){return this.uniforms.brightness},t.brightness.set=function(e){this.uniforms.brightness=e},t.speed.get=function(){return this.uniforms.speed},t.speed.set=function(e){this.uniforms.speed=e},t.radius.get=function(){return this.uniforms.radius},t.radius.set=function(e){this.uniforms.radius=e},Object.defineProperties(e.prototype,t),e}(n.Filter),j=function(i){function e(e,t,r){void 0===t&&(t=0),void 0===r&&(r=1),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform sampler2D uLightmap;\nuniform vec4 filterArea;\nuniform vec2 dimensions;\nuniform vec4 ambientColor;\nvoid main() {\n vec4 diffuseColor = texture2D(uSampler, vTextureCoord);\n vec2 lightCoord = (vTextureCoord * filterArea.xy) / dimensions;\n vec4 light = texture2D(uLightmap, lightCoord);\n vec3 ambient = ambientColor.rgb * ambientColor.a;\n vec3 intensity = ambient + light.rgb;\n vec3 finalColor = diffuseColor.rgb * intensity;\n gl_FragColor = vec4(finalColor, diffuseColor.a);\n}\n"),this.uniforms.dimensions=new Float32Array(2),this.uniforms.ambientColor=new Float32Array([0,0,0,r]),this.texture=e,this.color=t}i&&(e.__proto__=i);var t={texture:{configurable:!0},color:{configurable:!0},alpha:{configurable:!0}};return((e.prototype=Object.create(i&&i.prototype)).constructor=e).prototype.apply=function(e,t,r,i){this.uniforms.dimensions[0]=t.filterFrame.width,this.uniforms.dimensions[1]=t.filterFrame.height,e.applyFilter(this,t,r,i)},t.texture.get=function(){return this.uniforms.uLightmap},t.texture.set=function(e){this.uniforms.uLightmap=e},t.color.set=function(e){var t=this.uniforms.ambientColor;"number"==typeof e?(l.hex2rgb(e,t),this._color=e):(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],this._color=l.rgb2hex(t))},t.color.get=function(){return this._color},t.alpha.get=function(){return this.uniforms.ambientColor[3]},t.alpha.set=function(e){this.uniforms.ambientColor[3]=e},Object.defineProperties(e.prototype,t),e}(n.Filter),N=function(n){function e(e,t,r,i){void 0===e&&(e=100),void 0===t&&(t=600),void 0===r&&(r=null),void 0===i&&(i=null),n.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float blur;\nuniform float gradientBlur;\nuniform vec2 start;\nuniform vec2 end;\nuniform vec2 delta;\nuniform vec2 texSize;\n\nfloat random(vec3 scale, float seed)\n{\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n}\n\nvoid main(void)\n{\n vec4 color = vec4(0.0);\n float total = 0.0;\n\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vTextureCoord * texSize - start, normal)) / gradientBlur) * blur;\n\n for (float t = -30.0; t <= 30.0; t++)\n {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 sample = texture2D(uSampler, vTextureCoord + delta / texSize * percent * radius);\n sample.rgb *= sample.a;\n color += sample * weight;\n total += weight;\n }\n\n color /= total;\n color.rgb /= color.a + 0.00001;\n\n gl_FragColor = color;\n}\n"),this.uniforms.blur=e,this.uniforms.gradientBlur=t,this.uniforms.start=r||new f.Point(0,window.innerHeight/2),this.uniforms.end=i||new f.Point(600,window.innerHeight/2),this.uniforms.delta=new f.Point(30,30),this.uniforms.texSize=new f.Point(window.innerWidth,window.innerHeight),this.updateDelta()}n&&(e.__proto__=n);var t={blur:{configurable:!0},gradientBlur:{configurable:!0},start:{configurable:!0},end:{configurable:!0}};return((e.prototype=Object.create(n&&n.prototype)).constructor=e).prototype.updateDelta=function(){this.uniforms.delta.x=0,this.uniforms.delta.y=0},t.blur.get=function(){return this.uniforms.blur},t.blur.set=function(e){this.uniforms.blur=e},t.gradientBlur.get=function(){return this.uniforms.gradientBlur},t.gradientBlur.set=function(e){this.uniforms.gradientBlur=e},t.start.get=function(){return this.uniforms.start},t.start.set=function(e){this.uniforms.start=e,this.updateDelta()},t.end.get=function(){return this.uniforms.end},t.end.set=function(e){this.uniforms.end=e,this.updateDelta()},Object.defineProperties(e.prototype,t),e}(n.Filter),B=function(e){function t(){e.apply(this,arguments)}return e&&(t.__proto__=e),((t.prototype=Object.create(e&&e.prototype)).constructor=t).prototype.updateDelta=function(){var e=this.uniforms.end.x-this.uniforms.start.x,t=this.uniforms.end.y-this.uniforms.start.y,r=Math.sqrt(e*e+t*t);this.uniforms.delta.x=e/r,this.uniforms.delta.y=t/r},t}(N),U=function(e){function t(){e.apply(this,arguments)}return e&&(t.__proto__=e),((t.prototype=Object.create(e&&e.prototype)).constructor=t).prototype.updateDelta=function(){var e=this.uniforms.end.x-this.uniforms.start.x,t=this.uniforms.end.y-this.uniforms.start.y,r=Math.sqrt(e*e+t*t);this.uniforms.delta.x=-t/r,this.uniforms.delta.y=e/r},t}(N),X=function(n){function e(e,t,r,i){void 0===e&&(e=100),void 0===t&&(t=600),void 0===r&&(r=null),void 0===i&&(i=null),n.call(this),this.tiltShiftXFilter=new B(e,t,r,i),this.tiltShiftYFilter=new U(e,t,r,i)}n&&(e.__proto__=n);var t={blur:{configurable:!0},gradientBlur:{configurable:!0},start:{configurable:!0},end:{configurable:!0}};return((e.prototype=Object.create(n&&n.prototype)).constructor=e).prototype.apply=function(e,t,r){var i=e.getFilterTexture();this.tiltShiftXFilter.apply(e,t,i),this.tiltShiftYFilter.apply(e,i,r),e.returnFilterTexture(i)},t.blur.get=function(){return this.tiltShiftXFilter.blur},t.blur.set=function(e){this.tiltShiftXFilter.blur=this.tiltShiftYFilter.blur=e},t.gradientBlur.get=function(){return this.tiltShiftXFilter.gradientBlur},t.gradientBlur.set=function(e){this.tiltShiftXFilter.gradientBlur=this.tiltShiftYFilter.gradientBlur=e},t.start.get=function(){return this.tiltShiftXFilter.start},t.start.set=function(e){this.tiltShiftXFilter.start=this.tiltShiftYFilter.start=e},t.end.get=function(){return this.tiltShiftXFilter.end},t.end.set=function(e){this.tiltShiftXFilter.end=this.tiltShiftYFilter.end=e},Object.defineProperties(e.prototype,t),e}(n.Filter),H=function(i){function e(e,t,r){void 0===e&&(e=200),void 0===t&&(t=4),void 0===r&&(r=20),i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float radius;\nuniform float angle;\nuniform vec2 offset;\nuniform vec4 filterArea;\n\nvec2 mapCoord( vec2 coord )\n{\n coord *= filterArea.xy;\n coord += filterArea.zw;\n\n return coord;\n}\n\nvec2 unmapCoord( vec2 coord )\n{\n coord -= filterArea.zw;\n coord /= filterArea.xy;\n\n return coord;\n}\n\nvec2 twist(vec2 coord)\n{\n coord -= offset;\n\n float dist = length(coord);\n\n if (dist < radius)\n {\n float ratioDist = (radius - dist) / radius;\n float angleMod = ratioDist * ratioDist * angle;\n float s = sin(angleMod);\n float c = cos(angleMod);\n coord = vec2(coord.x * c - coord.y * s, coord.x * s + coord.y * c);\n }\n\n coord += offset;\n\n return coord;\n}\n\nvoid main(void)\n{\n\n vec2 coord = mapCoord(vTextureCoord);\n\n coord = twist(coord);\n\n coord = unmapCoord(coord);\n\n gl_FragColor = texture2D(uSampler, coord );\n\n}\n"),this.radius=e,this.angle=t,this.padding=r}i&&(e.__proto__=i),(e.prototype=Object.create(i&&i.prototype)).constructor=e;var t={offset:{configurable:!0},radius:{configurable:!0},angle:{configurable:!0}};return t.offset.get=function(){return this.uniforms.offset},t.offset.set=function(e){this.uniforms.offset=e},t.radius.get=function(){return this.uniforms.radius},t.radius.set=function(e){this.uniforms.radius=e},t.angle.get=function(){return this.uniforms.angle},t.angle.set=function(e){this.uniforms.angle=e},Object.defineProperties(e.prototype,t),e}(n.Filter),W=function(n){function e(e,t,r,i){void 0===e&&(e=.1),void 0===t&&(t=[0,0]),void 0===r&&(r=0),void 0===i&&(i=-1),n.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}","varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec4 filterArea;\n\nuniform vec2 uCenter;\nuniform float uStrength;\nuniform float uInnerRadius;\nuniform float uRadius;\n\nconst float MAX_KERNEL_SIZE = 32.0;\n\n// author: http://byteblacksmith.com/improvements-to-the-canonical-one-liner-glsl-rand-for-opengl-es-2-0/\nhighp float rand(vec2 co, float seed) {\n const highp float a = 12.9898, b = 78.233, c = 43758.5453;\n highp float dt = dot(co + seed, vec2(a, b)), sn = mod(dt, 3.14159);\n return fract(sin(sn) * c + seed);\n}\n\nvoid main() {\n\n float minGradient = uInnerRadius * 0.3;\n float innerRadius = (uInnerRadius + minGradient * 0.5) / filterArea.x;\n\n float gradient = uRadius * 0.3;\n float radius = (uRadius - gradient * 0.5) / filterArea.x;\n\n float countLimit = MAX_KERNEL_SIZE;\n\n vec2 dir = vec2(uCenter.xy / filterArea.xy - vTextureCoord);\n float dist = length(vec2(dir.x, dir.y * filterArea.y / filterArea.x));\n\n float strength = uStrength;\n\n float delta = 0.0;\n float gap;\n if (dist < innerRadius) {\n delta = innerRadius - dist;\n gap = minGradient;\n } else if (radius >= 0.0 && dist > radius) { // radius < 0 means it's infinity\n delta = dist - radius;\n gap = gradient;\n }\n\n if (delta > 0.0) {\n float normalCount = gap / filterArea.x;\n delta = (normalCount - delta) / normalCount;\n countLimit *= delta;\n strength *= delta;\n if (countLimit < 1.0)\n {\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n return;\n }\n }\n\n // randomize the lookup values to hide the fixed number of samples\n float offset = rand(vTextureCoord, 0.0);\n\n float total = 0.0;\n vec4 color = vec4(0.0);\n\n dir *= strength;\n\n for (float t = 0.0; t < MAX_KERNEL_SIZE; t++) {\n float percent = (t + offset) / MAX_KERNEL_SIZE;\n float weight = 4.0 * (percent - percent * percent);\n vec2 p = vTextureCoord + dir * percent;\n vec4 sample = texture2D(uSampler, p);\n\n // switch to pre-multiplied alpha to correctly blur transparent images\n // sample.rgb *= sample.a;\n\n color += sample * weight;\n total += weight;\n\n if (t > countLimit){\n break;\n }\n }\n\n color /= total;\n // switch back from pre-multiplied alpha\n // color.rgb /= color.a + 0.00001;\n\n gl_FragColor = color;\n}\n"),this.center=t,this.strength=e,this.innerRadius=r,this.radius=i}n&&(e.__proto__=n),(e.prototype=Object.create(n&&n.prototype)).constructor=e;var t={center:{configurable:!0},strength:{configurable:!0},innerRadius:{configurable:!0},radius:{configurable:!0}};return t.center.get=function(){return this.uniforms.uCenter},t.center.set=function(e){this.uniforms.uCenter=e},t.strength.get=function(){return this.uniforms.uStrength},t.strength.set=function(e){this.uniforms.uStrength=e},t.innerRadius.get=function(){return this.uniforms.uInnerRadius},t.innerRadius.set=function(e){this.uniforms.uInnerRadius=e},t.radius.get=function(){return this.uniforms.uRadius},t.radius.set=function(e){(e<0||e===1/0)&&(e=-1),this.uniforms.uRadius=e},Object.defineProperties(e.prototype,t),e}(n.Filter);return e.AdjustmentFilter=t,e.AdvancedBloomFilter=i,e.AsciiFilter=o,e.BevelFilter=a,e.BloomFilter=g,e.BulgePinchFilter=v,e.CRTFilter=w,e.ColorMapFilter=_,e.ColorReplaceFilter=y,e.ConvolutionFilter=b,e.CrossHatchFilter=x,e.DotFilter=T,e.DropShadowFilter=k,e.EmbossFilter=S,e.GlitchFilter=P,e.GlowFilter=E,e.GodrayFilter=C,e.KawaseBlurFilter=d,e.MotionBlurFilter=A,e.MultiColorReplaceFilter=I,e.OldFilmFilter=O,e.OutlineFilter=M,e.PixelateFilter=D,e.RGBSplitFilter=F,e.RadialBlurFilter=R,e.ReflectionFilter=z,e.ShockwaveFilter=L,e.SimpleLightmapFilter=j,e.TiltShiftAxisFilter=N,e.TiltShiftFilter=X,e.TiltShiftXFilter=B,e.TiltShiftYFilter=U,e.TwistFilter=H,e.ZoomBlurFilter=W,e}({},PIXI,PIXI,PIXI,PIXI.utils,PIXI,PIXI.filters,PIXI.filters),pixi_projection,pixi_projection;Object.assign(PIXI.filters,__filters),this.PIXI=this.PIXI||{},function(p,v){"use strict";var t,f,d=function(){function f(e,t,r){this.value=e,this.time=t,this.next=null,this.isStepped=!1,this.ease=r?"function"==typeof r?r:p.ParticleUtils.generateEase(r):null}return f.createList=function(e){if("list"in e){var t=e.list,r=void 0,i=void 0,n=t[0],o=n.value,a=n.time;if(i=r=new f("string"==typeof o?p.ParticleUtils.hexToRGB(o):o,a,e.ease),2a.time;)n=a,a=e[++o];l=(l-n.time)/(a.time-n.time);var u=f.hexToRGB(n.value),h=f.hexToRGB(a.value),c={r:(h.r-u.r)*l+u.r,g:(h.g-u.g)*l+u.g,b:(h.b-u.b)*l+u.b};i.next=new d(c,s/t),i=i.next}return r};var i=function(e,t){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)};function n(e,t){function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var o=function(){function e(e){void 0===e&&(e=!1),this.current=null,this.next=null,this.isColor=!!e,this.interpolate=null,this.ease=null}return e.prototype.reset=function(e){this.current=e,this.next=e.next,this.next&&1<=this.next.time?this.interpolate=this.isColor?a:r:e.isStepped?this.interpolate=this.isColor?c:u:this.interpolate=this.isColor?l:s,this.ease=this.current.ease},e}();function r(e){return this.ease&&(e=this.ease(e)),(this.next.value-this.current.value)*e+this.current.value}function a(e){this.ease&&(e=this.ease(e));var t=this.current.value,r=this.next.value,i=(r.r-t.r)*e+t.r,n=(r.g-t.g)*e+t.g,o=(r.b-t.b)*e+t.b;return p.ParticleUtils.combineRGBComponents(i,n,o)}function s(e){for(this.ease&&(e=this.ease(e));e>this.next.time;)this.current=this.next,this.next=this.next.next;return e=(e-this.current.time)/(this.next.time-this.current.time),(this.next.value-this.current.value)*e+this.current.value}function l(e){for(this.ease&&(e=this.ease(e));e>this.next.time;)this.current=this.next,this.next=this.next.next;e=(e-this.current.time)/(this.next.time-this.current.time);var t=this.current.value,r=this.next.value,i=(r.r-t.r)*e+t.r,n=(r.g-t.g)*e+t.g,o=(r.b-t.b)*e+t.b;return p.ParticleUtils.combineRGBComponents(i,n,o)}function u(e){for(this.ease&&(e=this.ease(e));this.next&&e>this.next.time;)this.current=this.next,this.next=this.next.next;return this.current.value}function c(e){for(this.ease&&(e=this.ease(e));this.next&&e>this.next.time;)this.current=this.next,this.next=this.next.next;var t=this.current.value;return p.ParticleUtils.combineRGBComponents(t.r,t.g,t.b)}var m,g=function(r){function i(e){var t=r.call(this)||this;return t.emitter=e,t.anchor.x=t.anchor.y=.5,t.velocity=new v.Point,t.rotationSpeed=0,t.rotationAcceleration=0,t.maxLife=0,t.age=0,t.ease=null,t.extraData=null,t.alphaList=new o,t.speedList=new o,t.speedMultiplier=1,t.acceleration=new v.Point,t.maxSpeed=NaN,t.scaleList=new o,t.scaleMultiplier=1,t.colorList=new o(!0),t._doAlpha=!1,t._doScale=!1,t._doSpeed=!1,t._doAcceleration=!1,t._doColor=!1,t._doNormalMovement=!1,t._oneOverLife=0,t.next=null,t.prev=null,t.init=t.init,t.Particle_init=i.prototype.init,t.update=t.update,t.Particle_update=i.prototype.update,t.Sprite_destroy=r.prototype.destroy,t.Particle_destroy=i.prototype.destroy,t.applyArt=t.applyArt,t.kill=t.kill,t}return n(i,r),i.prototype.init=function(){this.age=0,this.velocity.x=this.speedList.current.value*this.speedMultiplier,this.velocity.y=0,p.ParticleUtils.rotatePoint(this.rotation,this.velocity),this.noRotation?this.rotation=0:this.rotation*=p.ParticleUtils.DEG_TO_RADS,this.rotationSpeed*=p.ParticleUtils.DEG_TO_RADS,this.rotationAcceleration*=p.ParticleUtils.DEG_TO_RADS,this.alpha=this.alphaList.current.value,this.scale.x=this.scale.y=this.scaleList.current.value,this._doAlpha=!!this.alphaList.current.next,this._doSpeed=!!this.speedList.current.next,this._doScale=!!this.scaleList.current.next,this._doColor=!!this.colorList.current.next,this._doAcceleration=0!==this.acceleration.x||0!==this.acceleration.y,this._doNormalMovement=this._doSpeed||0!==this.speedList.current.value||this._doAcceleration,this._oneOverLife=1/this.maxLife;var e=this.colorList.current.value;this.tint=p.ParticleUtils.combineRGBComponents(e.r,e.g,e.b),this.visible=!0},i.prototype.applyArt=function(e){this.texture=e||v.Texture.EMPTY},i.prototype.update=function(e){if(this.age+=e,this.age>=this.maxLife||this.age<0)return this.kill(),-1;var t=this.age*this._oneOverLife;if(this.ease&&(t=4==this.ease.length?this.ease(t,0,1,1):this.ease(t)),this._doAlpha&&(this.alpha=this.alphaList.interpolate(t)),this._doScale){var r=this.scaleList.interpolate(t)*this.scaleMultiplier;this.scale.x=this.scale.y=r}if(this._doNormalMovement){var i=void 0,n=void 0;if(this._doSpeed){var o=this.speedList.interpolate(t)*this.speedMultiplier;p.ParticleUtils.normalize(this.velocity),p.ParticleUtils.scaleBy(this.velocity,o),i=this.velocity.x*e,n=this.velocity.y*e}else if(this._doAcceleration){var a=this.velocity.x,s=this.velocity.y;if(this.velocity.x+=this.acceleration.x*e,this.velocity.y+=this.acceleration.y*e,this.maxSpeed){var l=p.ParticleUtils.length(this.velocity);l>this.maxSpeed&&p.ParticleUtils.scaleBy(this.velocity,this.maxSpeed/l)}i=(a+this.velocity.x)/2*e,n=(s+this.velocity.y)/2*e}else i=this.velocity.x*e,n=this.velocity.y*e;this.position.x+=i,this.position.y+=n}if(this._doColor&&(this.tint=this.colorList.interpolate(t)),0!==this.rotationAcceleration){var u=this.rotationSpeed+this.rotationAcceleration*e;this.rotation+=(this.rotationSpeed+u)/2*e,this.rotationSpeed=u}else 0!==this.rotationSpeed?this.rotation+=this.rotationSpeed*e:this.acceleration&&!this.noRotation&&(this.rotation=Math.atan2(this.velocity.y,this.velocity.x));return t},i.prototype.kill=function(){this.emitter.recycle(this)},i.prototype.destroy=function(){this.parent&&this.parent.removeChild(this),this.Sprite_destroy(),this.emitter=this.velocity=this.colorList=this.scaleList=this.alphaList=this.speedList=this.ease=this.next=this.prev=null},i.parseArt=function(e){var t;for(t=e.length;0<=t;--t)"string"==typeof e[t]&&(e[t]=h(e[t]));if(p.ParticleUtils.verbose)for(t=e.length-1;0=this.maxParticles)this._spawnTimer+=this._frequency;else{var l=void 0;if(l=this.minLifetime==this.maxLifetime?this.minLifetime:Math.random()*(this.maxLifetime-this.minLifetime)+this.minLifetime,-this._spawnTimer=this.spawnChance)){var p=void 0;if(this._poolFirst?(p=this._poolFirst,this._poolFirst=this._poolFirst.next,p.next=null):p=new this.particleConstructor(this),1=this.particleImages.length)&&(this._currentImageIndex=0)):p.applyArt(this.particleImages[Math.floor(Math.random()*this.particleImages.length)]):p.applyArt(this.particleImages[0]),p.alphaList.reset(this.startAlpha),1!=this.minimumSpeedMultiplier&&(p.speedMultiplier=Math.random()*(1-this.minimumSpeedMultiplier)+this.minimumSpeedMultiplier),p.speedList.reset(this.startSpeed),p.acceleration.x=this.acceleration.x,p.acceleration.y=this.acceleration.y,p.maxSpeed=this.maxSpeed,1!=this.minimumScaleMultiplier&&(p.scaleMultiplier=Math.random()*(1-this.minimumScaleMultiplier)+this.minimumScaleMultiplier),p.scaleList.reset(this.startScale),p.colorList.reset(this.startColor),this.minRotationSpeed==this.maxRotationSpeed?p.rotationSpeed=this.minRotationSpeed:p.rotationSpeed=Math.random()*(this.maxRotationSpeed-this.minRotationSpeed)+this.minRotationSpeed,p.rotationAcceleration=this.rotationAcceleration,p.noRotation=this.noRotation,p.maxLife=l,p.blendMode=this.particleBlendMode,p.ease=this.customEase,p.extraData=this.extraData,this.applyAdditionalProperties(p),this._spawnFunc(p,u,h,t),p.init(),p.update(-this._spawnTimer),p.parent){var d=this._parent.children;if(d[0]==p)d.shift();else if(d[d.length-1]==p)d.pop();else{var m=d.indexOf(p);d.splice(m,1)}this.addAtBack?d.unshift(p):d.push(p)}else this.addAtBack?this._parent.addChildAt(p,0):this._parent.addChild(p);this._activeParticlesLast?((this._activeParticlesLast.next=p).prev=this._activeParticlesLast,this._activeParticlesLast=p):this._activeParticlesLast=this._activeParticlesFirst=p,++this.particleCount}}this._spawnTimer+=this._frequency}}if(this._posChanged&&(this._prevEmitterPos.x=a,this._prevEmitterPos.y=s,this._prevPosIsValid=!0,this._posChanged=!1),!this._emit&&!this._activeParticlesFirst){if(this._completeCallback){var g=this._completeCallback;this._completeCallback=null,g()}this._destroyWhenComplete&&this.destroy()}}},e.prototype.applyAdditionalProperties=function(e){},e.prototype._spawnPoint=function(e,t,r){this.minStartRotation==this.maxStartRotation?e.rotation=this.minStartRotation+this.rotation:e.rotation=Math.random()*(this.maxStartRotation-this.minStartRotation)+this.minStartRotation+this.rotation,e.position.x=t,e.position.y=r},e.prototype._spawnRect=function(e,t,r){this.minStartRotation==this.maxStartRotation?e.rotation=this.minStartRotation+this.rotation:e.rotation=Math.random()*(this.maxStartRotation-this.minStartRotation)+this.minStartRotation+this.rotation,b.x=Math.random()*this.spawnRect.width+this.spawnRect.x,b.y=Math.random()*this.spawnRect.height+this.spawnRect.y,0!==this.rotation&&p.ParticleUtils.rotatePoint(this.rotation,b),e.position.x=t+b.x,e.position.y=r+b.y},e.prototype._spawnCircle=function(e,t,r){this.minStartRotation==this.maxStartRotation?e.rotation=this.minStartRotation+this.rotation:e.rotation=Math.random()*(this.maxStartRotation-this.minStartRotation)+this.minStartRotation+this.rotation,b.x=Math.random()*this.spawnCircle.radius,b.y=0,p.ParticleUtils.rotatePoint(360*Math.random(),b),b.x+=this.spawnCircle.x,b.y+=this.spawnCircle.y,0!==this.rotation&&p.ParticleUtils.rotatePoint(this.rotation,b),e.position.x=t+b.x,e.position.y=r+b.y},e.prototype._spawnRing=function(e,t,r){var i=this.spawnCircle;this.minStartRotation==this.maxStartRotation?e.rotation=this.minStartRotation+this.rotation:e.rotation=Math.random()*(this.maxStartRotation-this.minStartRotation)+this.minStartRotation+this.rotation,i.minRadius!==i.radius?b.x=Math.random()*(i.radius-i.minRadius)+i.minRadius:b.x=i.radius,b.y=0;var n=360*Math.random();e.rotation+=n,p.ParticleUtils.rotatePoint(n,b),b.x+=this.spawnCircle.x,b.y+=this.spawnCircle.y,0!==this.rotation&&p.ParticleUtils.rotatePoint(this.rotation,b),e.position.x=t+b.x,e.position.y=r+b.y},e.prototype._spawnPolygonalChain=function(e,t,r){this.minStartRotation==this.maxStartRotation?e.rotation=this.minStartRotation+this.rotation:e.rotation=Math.random()*(this.maxStartRotation-this.minStartRotation)+this.minStartRotation+this.rotation,this.spawnPolygonalChain.getRandomPoint(b),0!==this.rotation&&p.ParticleUtils.rotatePoint(this.rotation,b),e.position.x=t+b.x,e.position.y=r+b.y},e.prototype._spawnBurst=function(e,t,r,i){0===this.particleSpacing?e.rotation=360*Math.random():e.rotation=this.angleStart+this.particleSpacing*i+this.rotation,e.position.x=t,e.position.y=r},e.prototype.cleanup=function(){var e,t;for(e=this._activeParticlesFirst;e;e=t)t=e.next,this.recycle(e),e.parent&&e.parent.removeChild(e);this._activeParticlesFirst=this._activeParticlesLast=null,this.particleCount=0},e.prototype.destroy=function(){var e;this.autoUpdate=!1,this.cleanup();for(var t=this._poolFirst;t;t=e)e=t.next,t.destroy();this._poolFirst=this._parent=this.particleImages=this.spawnPos=this.ownerPos=this.startColor=this.startScale=this.startAlpha=this.startSpeed=this.customEase=this._completeCallback=null},e}(),w=new v.Point,T=["pow","sqrt","abs","floor","round","ceil","E","PI","sin","cos","tan","asin","acos","atan","atan2","log"],k=new RegExp(["[01234567890\\.\\*\\-\\+\\/\\(\\)x ,]"].concat(T).join("|"),"g"),S=function(r){function e(e){var t=r.call(this,e)||this;return t.path=null,t.initialRotation=0,t.initialPosition=new v.Point,t.movement=0,t}return n(e,r),e.prototype.init=function(){this.initialRotation=this.rotation,this.Particle_init(),this.path=this.extraData.path,this._doNormalMovement=!this.path,this.movement=0,this.initialPosition.x=this.position.x,this.initialPosition.y=this.position.y},e.prototype.update=function(e){var t=this.Particle_update(e);if(0<=t&&this.path){var r=this.speedList.interpolate(t)*this.speedMultiplier;this.movement+=r*e,w.x=this.movement,w.y=this.path(this.movement),p.ParticleUtils.rotatePoint(this.initialRotation,w),this.position.x=this.initialPosition.x+w.x,this.position.y=this.initialPosition.y+w.y}return t},e.prototype.destroy=function(){this.Particle_destroy(),this.path=this.initialPosition=null},e.parseArt=function(e){return g.parseArt(e)},e.parseData=function(e){var t={};if(e&&e.path)try{t.path=function(e){for(var t=e.match(k),r=t.length-1;0<=r;--r)0<=T.indexOf(t[r])&&(t[r]="Math."+t[r]);return e=t.join(""),new Function("x","return "+e+";")}(e.path)}catch(e){p.ParticleUtils.verbose&&console.error("PathParticle: error in parsing path expression"),t.path=null}else p.ParticleUtils.verbose&&console.error("PathParticle requires a path string in extraData!"),t.path=null;return t},e}(g),P=function(r){function e(e){var t=r.call(this,e)||this;return t.textures=null,t.duration=0,t.framerate=0,t.elapsed=0,t.loop=!1,t}return n(e,r),e.prototype.init=function(){this.Particle_init(),this.elapsed=0,this.framerate<0&&(this.duration=this.maxLife,this.framerate=this.textures.length/this.duration)},e.prototype.applyArt=function(e){this.textures=e.textures,this.framerate=e.framerate,this.duration=e.duration,this.loop=e.loop},e.prototype.update=function(e){var t=this.Particle_update(e);if(0<=t){this.elapsed+=e,this.elapsed>this.duration&&(this.loop?this.elapsed=this.elapsed%this.duration:this.elapsed=this.duration-1e-6);var r=this.elapsed*this.framerate+1e-7|0;this.texture=this.textures[r]||v.Texture.EMPTY}return t},e.prototype.destroy=function(){this.Particle_destroy(),this.textures=null},e.parseArt=function(e){for(var t,r,i,n,o,a=[],s=0;st[s]&&(i=t[s]),ot[s+1]&&(n=t[s+1]),af[u]){l=c[s];c[s]=c[u],c[u]=l;var h=f[s];f[s]=f[u],f[u]=h}if(t[0]=c[0].x,t[1]=c[0].y,t[2]=c[1].x,t[3]=c[1].y,t[4]=c[2].x,t[5]=c[2].y,t[6]=c[3].x,t[7]=c[3].y,(c[3].x-c[2].x)*(c[1].y-c[2].y)-(c[1].x-c[2].x)*(c[3].y-c[2].y)<0)return t[4]=c[3].x,void(t[5]=c[3].y)}},e}();e.Surface=t}(pixi_projection||(pixi_projection={})),function(e){var k=new PIXI.Matrix,n=new PIXI.Rectangle,S=new PIXI.Point,t=function(t){function e(){var e=t.call(this)||this;return e.distortion=new PIXI.Point,e}return __extends(e,t),e.prototype.clear=function(){this.distortion.set(0,0)},e.prototype.apply=function(e,t){t=t||new PIXI.Point;var r=this.distortion,i=e.x*e.y;return t.x=e.x+r.x*i,t.y=e.y+r.y*i,t},e.prototype.applyInverse=function(e,t){t=t||new PIXI.Point;var r=e.x,i=e.y,n=this.distortion.x,o=this.distortion.y;if(0==n)t.x=r,t.y=i/(1+o*r);else if(0==o)t.y=i,t.x=r/(1+n*i);else{var a=.5*(i*n-r*o+1)/o,s=a*a+r/o;if(s<=1e-5)return void t.set(NaN,NaN);t.x=0 vFrame.z ||\n pixels.y < vFrame.y || pixels.y > vFrame.w) {\n uv.x = vTrans1.x * surface2.x + vTrans1.y * surface2.y + vTrans1.z;\n uv.y = vTrans2.x * surface2.x + vTrans2.y * surface2.y + vTrans2.z;\n pixels = uv * vSamplerSize;\n \n// if (pixels.x < vFrame.x || pixels.x > vFrame.z ||\n// pixels.y < vFrame.y || pixels.y > vFrame.w) {\n// discard;\n// }\n}\n\nvec4 edge;\nedge.xy = clamp(pixels - vFrame.xy + 0.5, vec2(0.0, 0.0), vec2(1.0, 1.0));\nedge.zw = clamp(vFrame.zw - pixels + 0.5, vec2(0.0, 0.0), vec2(1.0, 1.0));\n\nfloat alpha = 1.0; //edge.x * edge.y * edge.z * edge.w;\nvec4 rColor = vColor * alpha;\n\nfloat textureId = floor(vTextureId+0.5);\nvec2 vTextureCoord = uv;\nvec4 color;\n%forloop%\ngl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);\n//gl_FragColor = color * rColor;\n}",geometryClass:s,vertexSize:16},e),i=t.vertex,n=t.fragment,o=t.vertexSize,a=t.geometryClass;return function(r){function e(e){var t=r.call(this,e)||this;return t.defUniforms={translationMatrix:new PIXI.Matrix,distortion:new Float32Array([0,0])},t.size=1e3,t.forceMaxTextures=1,t.shaderGenerator=new PIXI.BatchShaderGenerator(i,n),t.geometryClass=a,t.vertexSize=o,t}return __extends(e,r),e.prototype.getUniforms=function(e){var t=e.proj;return null!==t.surface?t.uniforms:null!==t._activeProjection?t._activeProjection.uniforms:this.defUniforms},e.prototype.packInterleavedGeometry=function(e,t,r,i,n){for(var o=t.uint32View,a=t.float32View,s=i/this.vertexSize,l=e.indices,u=e.vertexData,h=e._texture._frame,c=e.aTrans,f=e._texture.baseTexture,p=f._batchLocation,d=f.realWidth,m=f.realHeight,g=f.resolution,v=Math.min(e.worldAlpha,1),_=v<1&&e._texture.baseTexture.alphaMode?b(e._tintRGB,v):e._tintRGB+(255*v<<24),y=0;y=o.TRANSFORM_STEP.PROJ?(i||this.displayObjectUpdateTransform(),this.proj.affine?this.transform.worldTransform.applyInverse(e,r):this.proj.world.applyInverse(e,r)):(this.parent?r=this.parent.worldTransform.applyInverse(e,r):r.copyFrom(e),n===o.TRANSFORM_STEP.NONE?r:this.transform.localTransform.applyInverse(r,r))},Object.defineProperty(e.prototype,"worldTransform",{get:function(){return this.proj.affine?this.transform.worldTransform:this.proj.world},enumerable:!0,configurable:!0}),e}(PIXI.Container);o.Container2d=e,o.container2dToLocal=e.prototype.toLocal}(pixi_projection||(pixi_projection={})),function(e){var l,t,v=PIXI.Point,r=[1,0,0,0,1,0,0,0,1];(t=l=e.AFFINE||(e.AFFINE={}))[t.NONE=0]="NONE",t[t.FREE=1]="FREE",t[t.AXIS_X=2]="AXIS_X",t[t.AXIS_Y=3]="AXIS_Y",t[t.POINT=4]="POINT",t[t.AXIS_XR=5]="AXIS_XR";var i=function(){function e(e){this.floatArray=null,this.mat3=new Float64Array(e||r)}return Object.defineProperty(e.prototype,"a",{get:function(){return this.mat3[0]/this.mat3[8]},set:function(e){this.mat3[0]=e*this.mat3[8]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"b",{get:function(){return this.mat3[1]/this.mat3[8]},set:function(e){this.mat3[1]=e*this.mat3[8]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"c",{get:function(){return this.mat3[3]/this.mat3[8]},set:function(e){this.mat3[3]=e*this.mat3[8]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"d",{get:function(){return this.mat3[4]/this.mat3[8]},set:function(e){this.mat3[4]=e*this.mat3[8]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tx",{get:function(){return this.mat3[6]/this.mat3[8]},set:function(e){this.mat3[6]=e*this.mat3[8]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ty",{get:function(){return this.mat3[7]/this.mat3[8]},set:function(e){this.mat3[7]=e*this.mat3[8]},enumerable:!0,configurable:!0}),e.prototype.set=function(e,t,r,i,n,o){var a=this.mat3;return a[0]=e,a[1]=t,a[2]=0,a[3]=r,a[4]=i,a[5]=0,a[6]=n,a[7]=o,a[8]=1,this},e.prototype.toArray=function(e,t){this.floatArray||(this.floatArray=new Float32Array(9));var r=t||this.floatArray,i=this.mat3;return e?(r[0]=i[0],r[1]=i[1],r[2]=i[2],r[3]=i[3],r[4]=i[4],r[5]=i[5],r[6]=i[6],r[7]=i[7]):(r[0]=i[0],r[1]=i[3],r[2]=i[6],r[3]=i[1],r[4]=i[4],r[5]=i[7],r[6]=i[2],r[7]=i[5]),r[8]=i[8],r},e.prototype.apply=function(e,t){t=t||new PIXI.Point;var r=this.mat3,i=e.x,n=e.y,o=1/(r[2]*i+r[5]*n+r[8]);return t.x=o*(r[0]*i+r[3]*n+r[6]),t.y=o*(r[1]*i+r[4]*n+r[7]),t},e.prototype.translate=function(e,t){var r=this.mat3;return r[0]+=e*r[2],r[1]+=t*r[2],r[3]+=e*r[5],r[4]+=t*r[5],r[6]+=e*r[8],r[7]+=t*r[8],this},e.prototype.scale=function(e,t){var r=this.mat3;return r[0]*=e,r[1]*=t,r[3]*=e,r[4]*=t,r[6]*=e,r[7]*=t,this},e.prototype.scaleAndTranslate=function(e,t,r,i){var n=this.mat3;n[0]=e*n[0]+r*n[2],n[1]=t*n[1]+i*n[2],n[3]=e*n[3]+r*n[5],n[4]=t*n[4]+i*n[5],n[6]=e*n[6]+r*n[8],n[7]=t*n[7]+i*n[8]},e.prototype.applyInverse=function(e,t){t=t||new v;var r=this.mat3,i=e.x,n=e.y,o=r[0],a=r[3],s=r[6],l=r[1],u=r[4],h=r[7],c=r[2],f=r[5],p=r[8],d=(p*u-h*f)*i+(-p*a+s*f)*n+(h*a-s*u),m=(-p*l+h*c)*i+(p*o-s*c)*n+(-h*o+s*l),g=(f*l-u*c)*i+(-f*o+a*c)*n+(u*o-a*l);return t.x=d/g,t.y=m/g,t},e.prototype.invert=function(){var e=this.mat3,t=e[0],r=e[1],i=e[2],n=e[3],o=e[4],a=e[5],s=e[6],l=e[7],u=e[8],h=u*o-a*l,c=-u*n+a*s,f=l*n-o*s,p=t*h+r*c+i*f;return p&&(p=1/p,e[0]=h*p,e[1]=(-u*r+i*l)*p,e[2]=(a*r-i*o)*p,e[3]=c*p,e[4]=(u*t-i*s)*p,e[5]=(-a*t+i*n)*p,e[6]=f*p,e[7]=(-l*t+r*s)*p,e[8]=(o*t-r*n)*p),this},e.prototype.identity=function(){var e=this.mat3;return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1,this},e.prototype.clone=function(){return new e(this.mat3)},e.prototype.copyTo2dOr3d=function(e){var t=this.mat3,r=e.mat3;return r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[3],r[4]=t[4],r[5]=t[5],r[6]=t[6],r[7]=t[7],r[8]=t[8],e},e.prototype.copyTo=function(e,t,r){var i=this.mat3,n=1/i[8],o=i[6]*n,a=i[7]*n;if(e.a=(i[0]-i[2]*o)*n,e.b=(i[1]-i[2]*a)*n,e.c=(i[3]-i[5]*o)*n,e.d=(i[4]-i[5]*a)*n,e.tx=o,e.ty=a,2<=t){var s=e.a*e.d-e.b*e.c;r||(s=Math.abs(s)),t===l.POINT?(s=0>0,0!==f._cycle&&f._cycle===f._totalTime/a&&m<=e&&f._cycle--,f._time=f._totalTime-f._cycle*a,f._yoyo&&0!=(1&f._cycle)&&(f._time=v-f._time,(c=f._yoyoEase||f.vars.yoyoEase)&&(f._yoyoEase||(!0!==c||f._initted?f._yoyoEase=c=!0===c?f._ease:c instanceof Ease?c:Ease.map[c]:(c=f.vars.ease,f._yoyoEase=c=c?c instanceof Ease?c:"function"==typeof c?new Ease(c,f.vars.easeParams):Ease.map[c]||y.defaultEase:y.defaultEase)),f.ratio=c?1-c.getRatio((v-f._time)/v):0)),f._time>v?f._time=v:f._time<0&&(f._time=0)),f._easeType&&!c?(s=f._time/v,(1===(l=f._easeType)||3===l&&.5<=s)&&(s=1-s),3===l&&(s*=2),1===(u=f._easePower)?s*=s:2===u?s*=s*s:3===u?s*=s*s*s:4===u&&(s*=s*s*s*s),f.ratio=1===l?1-s:2===l?s:f._time/v<.5?s/2:1-s/2):c||(f.ratio=f._ease.getRatio(f._time/v))),d!==f._time||r||g!==f._cycle){if(!f._initted){if(f._init(),!f._initted||f._gc)return;if(!r&&f._firstPT&&(!1!==f.vars.lazy&&f._duration||f.vars.lazy&&!f._duration))return f._time=d,f._totalTime=m,f._rawPrevTime=_,f._cycle=g,x.lazyTweens.push(f),void(f._lazy=[e,t]);!f._time||i||c?i&&this._ease._calcEnd&&!c&&(f.ratio=f._ease.getRatio(0===f._time?0:1)):f.ratio=f._ease.getRatio(f._time/v)}for(!1!==f._lazy&&(f._lazy=!1),f._active||!f._paused&&f._time!==d&&0<=e&&(f._active=!0),0===m&&(2===f._initted&&0e._startTime;l._timeline;)u&&l._timeline.smoothChildTiming?l.totalTime(l._totalTime,!0):l._gc&&l._enabled(!0,!1),l=l._timeline;return h},r.remove=function(e){if(e instanceof c){this._remove(e,!1);var t=e._timeline=e.vars.useFrames?c._rootFramesTimeline:c._rootTimeline;return e._startTime=(e._paused?e._pauseTime:t._time)-(e._reversed?e.totalDuration()-e._totalTime:e._totalTime)/e._timeScale,this}if(e instanceof Array||e&&e.push&&p(e)){for(var r=e.length;-1<--r;)this.remove(e[r]);return this}return"string"==typeof e?this.removeLabel(e):this.kill(null,e)},r._remove=function(e,t){return f.prototype._remove.call(this,e,t),this._last?this._time>this.duration()&&(this._time=this._duration,this._totalTime=this._totalDuration):this._time=this._totalTime=this._duration=this._totalDuration=0,this},r.append=function(e,t){return this.add(e,this._parseTimeOrLabel(null,t,!0,e))},r.insert=r.insertMultiple=function(e,t,r,i){return this.add(e,t||0,r,i)},r.appendMultiple=function(e,t,r,i){return this.add(e,this._parseTimeOrLabel(null,t,!0,e),r,i)},r.addLabel=function(e,t){return this._labels[e]=this._parseTimeOrLabel(t),this},r.addPause=function(e,t,r,i){var n=d.delayedCall(0,o,r,i||this);return n.vars.onComplete=n.vars.onReverseComplete=t,n.data="isPause",this._hasPause=!0,this.add(n,e)},r.removeLabel=function(e){return delete this._labels[e],this},r.getLabelTime=function(e){return null!=this._labels[e]?this._labels[e]:-1},r._parseTimeOrLabel=function(e,t,r,i){var n,o;if(i instanceof c&&i.timeline===this)this.remove(i);else if(i&&(i instanceof Array||i.push&&p(i)))for(o=i.length;-1<--o;)i[o]instanceof c&&i[o].timeline===this&&this.remove(i[o]);if(n="number"!=typeof e||t?99999999999=e&&!l;)i._duration||"isPause"===i.data&&0c._time;)l.render(l._reversed?l.totalDuration()-(e-l._startTime)*l._timeScale:(e-l._startTime)*l._timeScale,t,r),l=l._prev;l=null,c.pause(),c._pauseTime=h}i._reversed?i.render((i._dirty?i.totalDuration():i._totalDuration)-(e-i._startTime)*i._timeScale,t,r):i.render((e-i._startTime)*i._timeScale,t,r)}i=o}c._onUpdate&&(t||(v.length&&_(),c._callback("onUpdate"))),a&&(c._gc||d!==c._startTime&&m===c._timeScale||(0===c._time||p>=c.totalDuration())&&(n&&(v.length&&_(),c._timeline.autoRemoveChildren&&c._enabled(!1,!1),c._active=!1),!t&&c.vars[a]&&c._callback(a)))}},r._hasPausedChild=function(){for(var e=this._first;e;){if(e._paused||e instanceof m&&e._hasPausedChild())return!0;e=e._next}return!1},r.getChildren=function(e,t,r,i){i=i||-9999999999;for(var n=[],o=this._first,a=0;o;)o._startTime=r&&(n._startTime+=e),n=n._next;if(t)for(i in o)o[i]>=r&&(o[i]+=e);return this._uncache(!0)},r._kill=function(e,t){if(!e&&!t)return this._enabled(!1,!1);for(var r=t?this.getTweensOf(t):this.getChildren(!0,!0,!1),i=r.length,n=!1;-1<--i;)r[i]._kill(e,t)&&(n=!0);return n},r.clear=function(e){var t=this.getChildren(!1,!0,!0),r=t.length;for(this._time=this._totalTime=0;-1<--r;)t[r]._enabled(!1,!1);return!1!==e&&(this._labels={}),this._uncache(!0)},r.invalidate=function(){for(var e=this._first;e;)e.invalidate(),e=e._next;return c.prototype.invalidate.call(this)},r._enabled=function(e,t){if(e===this._gc)for(var r=this._first;r;)r._enabled(e,!0),r=r._next;return f.prototype._enabled.call(this,e,t)},r.totalTime=function(e,t,r){this._forcingPlayhead=!0;var i=c.prototype.totalTime.apply(this,arguments);return this._forcingPlayhead=!1,i},r.duration=function(e){return arguments.length?(0!==this.duration()&&0!==e&&this.timeScale(this._duration/e),this):(this._dirty&&this.totalDuration(),this._duration)},r.totalDuration=function(e){if(arguments.length)return e&&this.totalDuration()?this.timeScale(this._totalDuration/e):this;if(this._dirty){for(var t,r,i=0,n=this,o=n._last,a=999999999999;o;)t=o._prev,o._dirty&&o.totalDuration(),o._startTime>a&&n._sortChildren&&!o._paused&&!n._calculatingDuration?(n._calculatingDuration=1,n.add(o,o._startTime-o._delay),n._calculatingDuration=0):a=o._startTime,o._startTime<0&&!o._paused&&(i-=o._startTime,n._timeline.smoothChildTiming&&(n._startTime+=o._startTime/n._timeScale,n._time-=o._startTime,n._totalTime-=o._startTime,n._rawPrevTime-=o._startTime),n.shiftChildren(-o._startTime,!1,-9999999999),a=0),i<(r=o._startTime+o._totalDuration/o._timeScale)&&(i=r),o=t;n._duration=n._totalDuration=i,n._dirty=!1}return this._totalDuration},r.paused=function(e){if(!1===e&&this._paused)for(var t=this._first;t;)t._startTime===this._time&&"isPause"===t.data&&(t._rawPrevTime=0),t=t._next;return c.prototype.paused.apply(this,arguments)},r.usesFrames=function(){for(var e=this._timeline;e._timeline;)e=e._timeline;return e===c._rootFramesTimeline},r.rawTime=function(e){return e&&(this._paused||this._repeat&&0>0,f._cycle&&f._cycle===f._totalTime/l&&g<=e&&f._cycle--,f._time=f._totalTime-f._cycle*l,f._yoyo&&1&f._cycle&&(f._time=m-f._time),f._time>m?e=(f._time=m)+1e-4:f._time<0?f._time=e=0:e=f._time));if(f._hasPause&&!f._forcingPlayhead&&!t){if(p<(e=f._time)||f._repeat&&x!==f._cycle)for(i=f._first;i&&i._startTime<=e&&!u;)i._duration||"isPause"!==i.data||i.ratio||0===i._startTime&&0===f._rawPrevTime||(u=i),i=i._next;else for(i=f._last;i&&i._startTime>=e&&!u;)i._duration||"isPause"===i.data&&0f._time;)u.render(u._reversed?u.totalDuration()-(e-u._startTime)*u._timeScale:(e-u._startTime)*u._timeScale,t,r),u=u._prev;u=null,f.pause(),f._pauseTime=c}i._reversed?i.render((i._dirty?i.totalDuration():i._totalDuration)-(e-i._startTime)*i._timeScale,t,r):i.render((e-i._startTime)*i._timeScale,t,r)}i=o}f._onUpdate&&(t||(A.length&&I(),f._callback("onUpdate"))),a&&(f._locked||f._gc||v!==f._startTime&&_===f._timeScale||(0===f._time||d>=f.totalDuration())&&(n&&(A.length&&I(),f._timeline.autoRemoveChildren&&f._enabled(!1,!1),f._active=!1),!t&&f.vars[a]&&f._callback(a)))}else g!==f._totalTime&&f._onUpdate&&(t||f._callback("onUpdate"))},n.getActive=function(e,t,r){var i,n,o=[],a=this.getChildren(e||null==e,t||null==e,!!r),s=0,l=a.length;for(i=0;ie)return r[t].name;return null},n.getLabelBefore=function(e){null==e&&(e=this._time);for(var t=this.getLabelsArray(),r=t.length;-1<--r;)if(t[r].time>0||6)-1,c=[],f=[];for(r in e)d(e[r],a,t);for(n=a.length,i=0;i>0]=f,s[o]=u,l=0,f=[]);return{length:u,lengths:s,segments:c}}(this._beziers,this._timeRes);this._length=f.length,this._lengths=f.lengths,this._segments=f.segments,this._l1=this._li=this._s1=this._si=0,this._l2=this._lengths[0],this._curSeg=this._segments[0],this._s2=this._curSeg[0],this._prec=1/this._curSeg.length}if(c=this._autoRotate)for(this._initialRotations=[],c[0]instanceof Array||(this._autoRotate=c=[c]),o=c.length;-1<--o;){for(a=0;a<3;a++)i=c[o][a],this._func[i]="function"==typeof e[i]&&e[i.indexOf("set")||"function"!=typeof e["get"+i.substr(3)]?i:"get"+i.substr(3)];i=c[o][2],this._initialRotations[o]=(this._func[i]?this._func[i].call(this._target):this._target[i])||0,this._overwriteProps.push(i)}return this._startRatio=r.vars.runBackwards?1:0,!0},set:function(e){var t,r,i,n,o,a,s,l,u,h,c,f=this._segCount,p=this._func,d=this._target,m=e!==this._startRatio;if(this._timeRes){if(u=this._lengths,h=this._curSeg,c=e*this._length,i=this._li,c>this._l2&&i=c;);0===i&&cthis._s2&&i=c;);0===i&&c>0)*(1/f))*f;for(r=1-a,i=this._props.length;-1<--i;)n=this._props[i],s=(a*a*(o=this._beziers[n][t]).da+3*r*(a*o.ca+r*o.ba))*a+o.a,this._mod[n]&&(s=this._mod[n](s,d)),p[n]?d[n](s):d[n]=s;if(this._autoRotate){var g,v,_,y,b,x,w,T=this._autoRotate;for(i=T.length;-1<--i;)n=T[i][2],x=T[i][3]||0,w=!0===T[i][4]?1:k,o=this._beziers[T[i][0]],g=this._beziers[T[i][1]],o&&g&&(o=o[t],g=g[t],v=o.a+(o.b-o.a)*a,v+=((y=o.b+(o.c-o.b)*a)-v)*a,y+=(o.c+(o.d-o.c)*a-y)*a,_=g.a+(g.b-g.a)*a,_+=((b=g.b+(g.c-g.b)*a)-_)*a,b+=(g.c+(g.d-g.c)*a-b)*a,s=m?Math.atan2(b-_,y-v)*w+x:this._initialRotations[i],this._mod[n]&&(s=this._mod[n](s,d)),p[n]?d[n](s):d[n]=s)}}}),e=g.prototype,g.bezierThrough=p,g.cubicToQuadratic=S,g._autoCSS=!0,g.quadraticToCubic=function(e,t,r){return new _(e,(2*t+e)/3,(2*t+r)/3,r)},g._cssRegister=function(){var e=r.CSSPlugin;if(e){var t=e._internals,p=t._parseToProxy,d=t._setPluginRatio,m=t.CSSPropTween;t._registerComplexSpecialProp("bezier",{parser:function(e,t,r,i,n,o){t instanceof Array&&(t={values:t}),o=new g;var a,s,l,u=t.values,h=u.length-1,c=[],f={};if(h<0)return n;for(a=0;a<=h;a++)l=p(e,u[a],i,n,o,h!==a),c[a]=l.end;for(s in t)f[s]=t[s];return f.values=c,(n=new m(e,"bezier",0,0,l.pt,2)).data=l,n.plugin=o,n.setRatio=d,0===f.autoRotate&&(f.autoRotate=!0),!f.autoRotate||f.autoRotate instanceof Array||(a=!0===f.autoRotate?0:Number(f.autoRotate),f.autoRotate=null!=l.end.left?[["left","top","rotation",a,!1]]:null!=l.end.x&&[["x","y","rotation",a,!1]]),f.autoRotate&&(i._transform||i._enableTransforms(!1),l.autoRotate=i._target._gsTransform,l.proxy.rotation=l.autoRotate.rotation||0,i._overwriteProps.push("rotation")),o._onInitTween(l.proxy,f,i._tween),n}})}},e._mod=function(e){for(var t,r=this._overwriteProps,i=r.length;-1<--i;)(t=e[r[i]])&&"function"==typeof t&&(this._mod[r[i]]=t)},e._kill=function(e){var t,r,i=this._props;for(t in this._beziers)if(t in e)for(delete this._beziers[t],delete this._func[t],r=i.length;-1<--r;)i[r]===t&&i.splice(r,1);if(i=this._autoRotate)for(r=i.length;-1<--r;)e[i[r][2]]&&i.splice(r,1);return this._super._kill.call(this,e)},_gsScope._gsDefine("plugins.CSSPlugin",["plugins.TweenPlugin","TweenLite"],function(o,B){var d,k,S,m,U=function(){o.call(this,"css"),this._overwriteProps.length=0,this.setRatio=U.prototype.setRatio},u=_gsScope._gsDefine.globals,g={},e=U.prototype=new o("css");(e.constructor=U).version="2.1.3",U.API=2,U.defaultTransformPerspective=0,U.defaultSkewType="compensated",U.defaultSmoothOrigin=!0,e="px",U.suffixMap={top:e,right:e,bottom:e,left:e,width:e,height:e,fontSize:e,padding:e,margin:e,perspective:e,lineHeight:""};var E,v,_,L,y,P,C,A,t,r,I=/(?:\-|\.|\b)(\d|\.|e\-)+/g,O=/(?:\d|\-\d|\.\d|\-\.\d|\+=\d|\-=\d|\+=.\d|\-=\.\d)+/g,b=/(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b)/gi,n=/(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b),?/gi,h=/(?![+-]?\d*\.?\d+|[+-]|e[+-]\d+)[^0-9]/g,M=/(?:\d|\-|\+|=|#|\.)*/g,D=/opacity *= *([^)]*)/i,x=/opacity:([^;]*)/i,a=/alpha\(opacity *=.+?\)/i,w=/^(rgb|hsl)/,s=/([A-Z])/g,l=/-([a-z])/gi,T=/(^(?:url\(\"|url\())|(?:(\"\))$|\)$)/gi,c=function(e,t){return t.toUpperCase()},p=/(?:Left|Right|Width)/i,f=/(M11|M12|M21|M22)=[\d\-\.e]+/gi,R=/progid\:DXImageTransform\.Microsoft\.Matrix\(.+?\)/i,z=/,(?=[^\)]*(?:\(|$))/gi,F=/[\s,\(]/i,j=Math.PI/180,X=180/Math.PI,N={},i={style:{}},H=_gsScope.document||{createElement:function(){return i}},W=function(e,t){var r=H.createElementNS?H.createElementNS(t||"http://www.w3.org/1999/xhtml",e):H.createElement(e);return r.style?r:H.createElement(e)},q=W("div"),G=W("img"),V=U._internals={_specialProps:g},Y=(_gsScope.navigator||{}).userAgent||"",Z=(t=Y.indexOf("Android"),r=W("a"),_=-1!==Y.indexOf("Safari")&&-1===Y.indexOf("Chrome")&&(-1===t||3>16,e>>8&255,255&e];else{if(","===e.charAt(e.length-1)&&(e=e.substr(0,e.length-1)),me[e])r=me[e];else if("#"===e.charAt(0))4===e.length&&(e="#"+(i=e.charAt(1))+i+(n=e.charAt(2))+n+(o=e.charAt(3))+o),r=[(e=parseInt(e.substr(1),16))>>16,e>>8&255,255&e];else if("hsl"===e.substr(0,3))if(r=f=e.match(I),t){if(-1!==e.indexOf("="))return e.match(O)}else a=Number(r[0])%360/360,s=Number(r[1])/100,i=2*(l=Number(r[2])/100)-(n=l<=.5?l*(s+1):l+s-l*s),3i--)for(;++ii--)for(;++i>0];return i.parse(e,a,n,o)}},we=(V._setPluginRatio=function(e){this.plugin.setRatio(e);for(var t,r,i,n,o,a=this.data,s=a.proxy,l=a.firstMPT;l;)t=s[l.v],l.r?t=l.r(t):t<1e-6&&-1e-6s.length?l.length:s.length,a=0;ao.pr;)a=a._next;(o._prev=a?a._prev:l)?o._prev._next=o:s=o,(o._next=a)?a._prev=o:l=o,o=u}this._firstPT=s}return!0},e.parse=function(e,t,r,i){var n,o,a,s,l,u,h,c,f,p,d=e.style;for(n in t){if(u=t[n],o=g[n],"function"!=typeof u||o&&o.allowFunc||(u=u(A,C)),o)r=o.parse(e,u,n,this,r,i,t);else{if("--"===n.substr(0,2)){this._tween._propLookup[n]=this._addTween.call(this._tween,e.style,"setProperty",re(e).getPropertyValue(n)+"",u+"",n,!1,n);continue}l=ie(e,n,S)+"",f="string"==typeof u,"color"===n||"fill"===n||"stroke"===n||-1!==n.indexOf("Color")||f&&w.test(u)?(f||(u=(3<(u=ve(u)).length?"rgba(":"rgb(")+u.join(",")+")"),r=Se(d,n,l,u,!0,"transparent",r,0,i)):f&&F.test(u)?r=Se(d,n,l,u,!0,null,r,0,i):(h=(a=parseFloat(l))||0===a?l.substr((a+"").length):"",""!==l&&"auto"!==l||(h="width"===n||"height"===n?(a=he(e,n,S),"px"):"left"===n||"top"===n?(a=oe(e,n,S),"px"):(a="opacity"!==n?0:1,"")),""===(c=(p=f&&"="===u.charAt(1))?(s=parseInt(u.charAt(0)+"1",10),u=u.substr(2),s*=parseFloat(u),u.replace(M,"")):(s=parseFloat(u),f?u.replace(M,""):""))&&(c=n in k?k[n]:h),u=s||0===s?(p?s+a:s)+c:t[n],h!==c&&(""===c&&"lineHeight"!==n||(s||0===s)&&a&&(a=ne(e,n,a,h),"%"===c?(a/=ne(e,n,100,"%")/100,!0!==t.strictUnits&&(l=a+"%")):"em"===c||"rem"===c||"vw"===c||"vh"===c?a/=ne(e,n,1,c):"px"!==c&&(s=ne(e,n,s,c),c="px"),p&&(s||0===s)&&(u=s+a+c))),p&&(s+=a),!a&&0!==a||!s&&0!==s?void 0!==d[n]&&(u||u+""!="NaN"&&null!=u)?(r=new Te(d,n,s||a||0,0,r,-1,n,!1,0,l,u)).xs0="none"!==u||"display"!==n&&-1===n.indexOf("Style")?u:l:K("invalid "+n+" tween value: "+t[n]):(r=new Te(d,n,a,s-a,r,0,n,!1!==E&&("px"===c||"zIndex"===n),0,l,u)).xs0=c)}i&&r&&!r.plugin&&(r.plugin=i)}return r},e.setRatio=function(e){var t,r,i,n=this._firstPT;if(1!==e||this._tween._time!==this._tween._duration&&0!==this._tween._time)if(e||this._tween._time!==this._tween._duration&&0!==this._tween._time||-1e-6===this._tween._rawPrevTime)for(;n;){if(t=n.c*e+n.s,n.r?t=n.r(t):t<1e-6&&-1e-6this._p3?this._calcEnd?1===e?0:1-(e=(e-this._p3)/this._p1)*e:t+(e-t)*(e=(e-this._p3)/this._p1)*e*e*e:this._calcEnd?1:t},d.ease=new d(.7,.7),m.config=d.config=function(e,t,r){return new d(e,t,r)},(m=(r=l("easing.SteppedEase",function(e,t){e=e||1,this._p1=1/e,this._p2=e+(t?0:1),this._p3=t?1:0},!0)).prototype=new g).constructor=r,m.getRatio=function(e){return e<0?e=0:1<=e&&(e=.999999999),((this._p2*e|0)+this._p3)*this._p1},m.config=r.config=function(e,t){return new r(e,t)},(m=(i=l("easing.ExpoScaleEase",function(e,t,r){this._p1=Math.log(t/e),this._p2=t-e,this._p3=e,this._ease=r},!0)).prototype=new g).constructor=i,m.getRatio=function(e){return this._ease&&(e=this._ease.getRatio(e)),(this._p3*Math.exp(this._p1*e)-this._p3)/this._p2},m.config=i.config=function(e,t,r){return new i(e,t,r)},(m=(t=l("easing.RoughEase",function(e){for(var t,r,i,n,o,a,s=(e=e||{}).taper||"none",l=[],u=0,h=0|(e.points||20),c=h,f=!1!==e.randomize,p=!0===e.clamp,d=e.template instanceof g?e.template:null,m="number"==typeof e.strength?.4*e.strength:.4;-1<--c;)t=f?Math.random():1/h*c,r=d?d.getRatio(t):t,i="none"===s?m:"out"===s?(n=1-t)*n*m:"in"===s?t*t*m:t<.5?(n=2*t)*n*.5*m:(n=2*(1-t))*n*.5*m,f?r+=Math.random()*i-.5*i:c%2?r+=.5*i:r-=.5*i,p&&(1t.t){for(;t.next&&e>=t.t;)t=t.next;t=t.prev}else for(;t.prev&&e<=t.t;)t=t.prev;return(this._prev=t).v+(e-t.t)/t.gap*t.c},m.config=function(e){return new t(e)},t.ease=new t,c("Bounce",u("BounceOut",function(e){return e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375}),u("BounceIn",function(e){return(e=1-e)<1/2.75?1-7.5625*e*e:e<2/2.75?1-(7.5625*(e-=1.5/2.75)*e+.75):e<2.5/2.75?1-(7.5625*(e-=2.25/2.75)*e+.9375):1-(7.5625*(e-=2.625/2.75)*e+.984375)}),u("BounceInOut",function(e){var t=e<.5;return(e=t?1-2*e:2*e-1)<1/2.75?e*=7.5625*e:e=e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375,t?.5*(1-e):.5*e+.5})),c("Circ",u("CircOut",function(e){return Math.sqrt(1-(e-=1)*e)}),u("CircIn",function(e){return-(Math.sqrt(1-e*e)-1)}),u("CircInOut",function(e){return(e*=2)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1)})),c("Elastic",(e=function(e,t,r){var i=l("easing."+e,function(e,t){this._p1=1<=e?e:1,this._p2=(t||r)/(e<1?e:1),this._p3=this._p2/a*(Math.asin(1/this._p1)||0),this._p2=a/this._p2},!0),n=i.prototype=new g;return n.constructor=i,n.getRatio=t,n.config=function(e,t){return new i(e,t)},i})("ElasticOut",function(e){return this._p1*Math.pow(2,-10*e)*Math.sin((e-this._p3)*this._p2)+1},.3),e("ElasticIn",function(e){return-this._p1*Math.pow(2,10*(e-=1))*Math.sin((e-this._p3)*this._p2)},.3),e("ElasticInOut",function(e){return(e*=2)<1?this._p1*Math.pow(2,10*(e-=1))*Math.sin((e-this._p3)*this._p2)*-.5:this._p1*Math.pow(2,-10*(e-=1))*Math.sin((e-this._p3)*this._p2)*.5+1},.45)),c("Expo",u("ExpoOut",function(e){return 1-Math.pow(2,-10*e)}),u("ExpoIn",function(e){return Math.pow(2,10*(e-1))-.001}),u("ExpoInOut",function(e){return(e*=2)<1?.5*Math.pow(2,10*(e-1)):.5*(2-Math.pow(2,-10*(e-1)))})),c("Sine",u("SineOut",function(e){return Math.sin(e*s)}),u("SineIn",function(e){return 1-Math.cos(e*s)}),u("SineInOut",function(e){return-.5*(Math.cos(Math.PI*e)-1)})),l("easing.EaseLookup",{find:function(e){return g.map[e]}},!0),h(n.SlowMo,"SlowMo","ease,"),h(t,"RoughEase","ease,"),h(r,"SteppedEase","ease,"),p},!0)}),_gsScope._gsDefine&&_gsScope._gsQueue.pop()(),function(f,p){"use strict";var d={},i=f.document,m=f.GreenSockGlobals=f.GreenSockGlobals||f,e=m[p];if(e)return"undefined"!=typeof module&&module.exports&&(module.exports=e);var t,r,n,g,v,o,a,_=function(e){var t,r=e.split("."),i=m;for(t=0;t=r&&ethis._duration?this._duration:e,t)):this._time},n.totalTime=function(e,t,r){if(v||g.wake(),!arguments.length)return this._totalTime;if(this._timeline){if(e<0&&!r&&(e+=this.totalDuration()),this._timeline.smoothChildTiming){this._dirty&&this.totalDuration();var i=this._totalDuration,n=this._timeline;if(io;)n=n._prev;return n?(e._next=n._next,n._next=e):(e._next=this._first,this._first=e),e._next?e._next._prev=e:this._last=e,e._prev=n,this._recent=e,this._timeline&&this._uncache(!0),this},n._remove=function(e,t){return e.timeline===this&&(t||e._enabled(!1,!0),e._prev?e._prev._next=e._next:this._first===e&&(this._first=e._next),e._next?e._next._prev=e._prev:this._last===e&&(this._last=e._prev),e._next=e._prev=e.timeline=null,e===this._recent&&(this._recent=this._last),this._timeline&&this._uncache(!0)),this},n.render=function(e,t,r){var i,n=this._first;for(this._totalTime=this._time=this._rawPrevTime=e;n;)i=n._next,(n._active||e>=n._startTime&&!n._paused&&!n._gc)&&(n._reversed?n.render((n._dirty?n.totalDuration():n._totalDuration)-(e-n._startTime)*n._timeScale,t,r):n.render((e-n._startTime)*n._timeScale,t,r)),n=i},n.rawTime=function(){return v||g.wake(),this._totalTime};var z=k("TweenLite",function(e,t,r){if(M.call(this,t,r),this.render=z.prototype.render,null==e)throw"Cannot tween a null target.";this.target=e="string"!=typeof e?e:z.selector(e)||e;var i,n,o,a=e.jquery||e.length&&e!==f&&e[0]&&(e[0]===f||e[0].nodeType&&e[0].style&&!e.nodeType),s=this.vars.overwrite;if(this._overwrite=s=null==s?J[z.defaultOverwrite]:"number"==typeof s?s>>0:J[s],(a||e instanceof Array||e.push&&x(e))&&"number"!=typeof e[0])for(this._targets=o=l(e),this._propLookup=[],this._siblings=[],i=0;i=$){for(r in $=g.frame+(parseInt(z.autoSleep,10)||120),V){for(e=(t=V[r].tweens).length;-1<--e;)t[e]._gc&&t.splice(e,1);0===t.length&&delete V[r]}if((!(r=Q._first)||r._paused)&&z.autoSleep&&!K._first&&1===g._listeners.tick.length){for(;r&&r._paused;)r=r._next;r||g.sleep()}}},g.addEventListener("tick",M._updateRoot);var te=function(e,t,r){var i,n,o=e._gsTweenID;if(V[o||(e._gsTweenID=o="t"+Y++)]||(V[o]={target:e,tweens:[]}),t&&((i=V[o].tweens)[n=i.length]=t,r))for(;-1<--n;)i[n]===t&&i.splice(n,1);return V[o].tweens},re=function(e,t,r,i){var n,o,a=e.vars.onOverwrite;return a&&(n=a(e,t,r,i)),(a=z.onOverwrite)&&(o=a(e,t,r,i)),!1!==n&&!1!==o},ie=function(e,t,r,i,n){var o,a,s,l;if(1===i||4<=i){for(l=n.length,o=0;oh&&((p||!s._initted)&&h-s._startTime<=2e-8||(c[f++]=s)));for(o=f;-1<--o;)if(l=(s=c[o])._firstPT,2===i&&s._kill(r,e,t)&&(a=!0),2!==i||!s._firstPT&&s._initted&&l){if(2!==i&&!re(s,t))continue;s._enabled(!1,!1)&&(a=!0)}return a},ne=function(e,t,r){for(var i=e._timeline,n=i._timeScale,o=e._startTime;i._timeline;){if(o+=i._startTime,n*=i._timeScale,i._paused)return-100;i=i._timeline}return t<(o/=n)?o-t:r&&o===t||!e._initted&&o-t<2e-8?y:(o+=e.totalDuration()/e._timeScale/n)>t+y?0:o-t-y};n._init=function(){var e,t,r,i,n,o,a=this.vars,s=this._overwrittenProps,l=this._duration,u=!!a.immediateRender,h=a.ease,c=this._startAt;if(a.startAt){for(i in c&&(c.render(-1,!0),c.kill()),n={},a.startAt)n[i]=a.startAt[i];if(n.data="isStart",n.overwrite=!1,n.immediateRender=!0,n.lazy=u&&!1!==a.lazy,n.startAt=n.delay=null,n.onUpdate=a.onUpdate,n.onUpdateParams=a.onUpdateParams,n.onUpdateScope=a.onUpdateScope||a.callbackScope||this,this._startAt=z.to(this.target||{},0,n),u)if(0s.pr;)i=i._next;(s._prev=i?i._prev:o)?s._prev._next=s:n=s,(s._next=i)?i._prev=s:o=s,s=a}s=t._firstPT=n}for(;s;)s.pg&&"function"==typeof s.t[e]&&s.t[e]()&&(r=!0),s=s._next;return r},oe.activate=function(e){for(var t=e.length;-1<--t;)e[t].API===oe.API&&(G[(new e[t])._propName]=e[t]);return!0},s.plugin=function(e){if(!(e&&e.propName&&e.init&&e.API))throw"illegal plugin definition.";var t,r=e.propName,i=e.priority||0,n=e.overwriteProps,o={init:"_onInitTween",set:"setRatio",kill:"_kill",round:"_mod",mod:"_mod",initAll:"_onInitAllProps"},a=k("plugins."+r.charAt(0).toUpperCase()+r.substr(1)+"Plugin",function(){oe.call(this,r,i),this._overwriteProps=n||[]},!0===e.global),s=a.prototype=new oe(r);for(t in(s.constructor=a).API=e.API,o)"function"==typeof e[t]&&(s[o[t]]=e[t]);return a.version=e.version,oe.activate([a]),a},t=f._gsQueue){for(r=0;r>0,f._cycle&&f._cycle===f._totalTime/l&&g<=e&&f._cycle--,f._time=f._totalTime-f._cycle*l,f._yoyo&&1&f._cycle&&(f._time=m-f._time),f._time>m?e=(f._time=m)+1e-4:f._time<0?f._time=e=0:e=f._time));if(f._hasPause&&!f._forcingPlayhead&&!t){if(p<(e=f._time)||f._repeat&&x!==f._cycle)for(i=f._first;i&&i._startTime<=e&&!u;)i._duration||"isPause"!==i.data||i.ratio||0===i._startTime&&0===f._rawPrevTime||(u=i),i=i._next;else for(i=f._last;i&&i._startTime>=e&&!u;)i._duration||"isPause"===i.data&&0f._time;)u.render(u._reversed?u.totalDuration()-(e-u._startTime)*u._timeScale:(e-u._startTime)*u._timeScale,t,r),u=u._prev;u=null,f.pause(),f._pauseTime=c}i._reversed?i.render((i._dirty?i.totalDuration():i._totalDuration)-(e-i._startTime)*i._timeScale,t,r):i.render((e-i._startTime)*i._timeScale,t,r)}i=o}f._onUpdate&&(t||(A.length&&I(),f._callback("onUpdate"))),a&&(f._locked||f._gc||v!==f._startTime&&_===f._timeScale||(0===f._time||d>=f.totalDuration())&&(n&&(A.length&&I(),f._timeline.autoRemoveChildren&&f._enabled(!1,!1),f._active=!1),!t&&f.vars[a]&&f._callback(a)))}else g!==f._totalTime&&f._onUpdate&&(t||f._callback("onUpdate"))},n.getActive=function(e,t,r){var i,n,o=[],a=this.getChildren(e||null==e,t||null==e,!!r),s=0,l=a.length;for(i=0;ie)return r[t].name;return null},n.getLabelBefore=function(e){null==e&&(e=this._time);for(var t=this.getLabelsArray(),r=t.length;-1<--r;)if(t[r].timee._startTime;l._timeline;)u&&l._timeline.smoothChildTiming?l.totalTime(l._totalTime,!0):l._gc&&l._enabled(!0,!1),l=l._timeline;return h},r.remove=function(e){if(e instanceof c){this._remove(e,!1);var t=e._timeline=e.vars.useFrames?c._rootFramesTimeline:c._rootTimeline;return e._startTime=(e._paused?e._pauseTime:t._time)-(e._reversed?e.totalDuration()-e._totalTime:e._totalTime)/e._timeScale,this}if(e instanceof Array||e&&e.push&&p(e)){for(var r=e.length;-1<--r;)this.remove(e[r]);return this}return"string"==typeof e?this.removeLabel(e):this.kill(null,e)},r._remove=function(e,t){return f.prototype._remove.call(this,e,t),this._last?this._time>this.duration()&&(this._time=this._duration,this._totalTime=this._totalDuration):this._time=this._totalTime=this._duration=this._totalDuration=0,this},r.append=function(e,t){return this.add(e,this._parseTimeOrLabel(null,t,!0,e))},r.insert=r.insertMultiple=function(e,t,r,i){return this.add(e,t||0,r,i)},r.appendMultiple=function(e,t,r,i){return this.add(e,this._parseTimeOrLabel(null,t,!0,e),r,i)},r.addLabel=function(e,t){return this._labels[e]=this._parseTimeOrLabel(t),this},r.addPause=function(e,t,r,i){var n=d.delayedCall(0,o,r,i||this);return n.vars.onComplete=n.vars.onReverseComplete=t,n.data="isPause",this._hasPause=!0,this.add(n,e)},r.removeLabel=function(e){return delete this._labels[e],this},r.getLabelTime=function(e){return null!=this._labels[e]?this._labels[e]:-1},r._parseTimeOrLabel=function(e,t,r,i){var n,o;if(i instanceof c&&i.timeline===this)this.remove(i);else if(i&&(i instanceof Array||i.push&&p(i)))for(o=i.length;-1<--o;)i[o]instanceof c&&i[o].timeline===this&&this.remove(i[o]);if(n="number"!=typeof e||t?99999999999=e&&!l;)i._duration||"isPause"===i.data&&0c._time;)l.render(l._reversed?l.totalDuration()-(e-l._startTime)*l._timeScale:(e-l._startTime)*l._timeScale,t,r),l=l._prev;l=null,c.pause(),c._pauseTime=h}i._reversed?i.render((i._dirty?i.totalDuration():i._totalDuration)-(e-i._startTime)*i._timeScale,t,r):i.render((e-i._startTime)*i._timeScale,t,r)}i=o}c._onUpdate&&(t||(v.length&&_(),c._callback("onUpdate"))),a&&(c._gc||d!==c._startTime&&m===c._timeScale||(0===c._time||p>=c.totalDuration())&&(n&&(v.length&&_(),c._timeline.autoRemoveChildren&&c._enabled(!1,!1),c._active=!1),!t&&c.vars[a]&&c._callback(a)))}},r._hasPausedChild=function(){for(var e=this._first;e;){if(e._paused||e instanceof m&&e._hasPausedChild())return!0;e=e._next}return!1},r.getChildren=function(e,t,r,i){i=i||-9999999999;for(var n=[],o=this._first,a=0;o;)o._startTime=r&&(n._startTime+=e),n=n._next;if(t)for(i in o)o[i]>=r&&(o[i]+=e);return this._uncache(!0)},r._kill=function(e,t){if(!e&&!t)return this._enabled(!1,!1);for(var r=t?this.getTweensOf(t):this.getChildren(!0,!0,!1),i=r.length,n=!1;-1<--i;)r[i]._kill(e,t)&&(n=!0);return n},r.clear=function(e){var t=this.getChildren(!1,!0,!0),r=t.length;for(this._time=this._totalTime=0;-1<--r;)t[r]._enabled(!1,!1);return!1!==e&&(this._labels={}),this._uncache(!0)},r.invalidate=function(){for(var e=this._first;e;)e.invalidate(),e=e._next;return c.prototype.invalidate.call(this)},r._enabled=function(e,t){if(e===this._gc)for(var r=this._first;r;)r._enabled(e,!0),r=r._next;return f.prototype._enabled.call(this,e,t)},r.totalTime=function(e,t,r){this._forcingPlayhead=!0;var i=c.prototype.totalTime.apply(this,arguments);return this._forcingPlayhead=!1,i},r.duration=function(e){return arguments.length?(0!==this.duration()&&0!==e&&this.timeScale(this._duration/e),this):(this._dirty&&this.totalDuration(),this._duration)},r.totalDuration=function(e){if(arguments.length)return e&&this.totalDuration()?this.timeScale(this._totalDuration/e):this;if(this._dirty){for(var t,r,i=0,n=this,o=n._last,a=999999999999;o;)t=o._prev,o._dirty&&o.totalDuration(),o._startTime>a&&n._sortChildren&&!o._paused&&!n._calculatingDuration?(n._calculatingDuration=1,n.add(o,o._startTime-o._delay),n._calculatingDuration=0):a=o._startTime,o._startTime<0&&!o._paused&&(i-=o._startTime,n._timeline.smoothChildTiming&&(n._startTime+=o._startTime/n._timeScale,n._time-=o._startTime,n._totalTime-=o._startTime,n._rawPrevTime-=o._startTime),n.shiftChildren(-o._startTime,!1,-9999999999),a=0),i<(r=o._startTime+o._totalDuration/o._timeScale)&&(i=r),o=t;n._duration=n._totalDuration=i,n._dirty=!1}return this._totalDuration},r.paused=function(e){if(!1===e&&this._paused)for(var t=this._first;t;)t._startTime===this._time&&"isPause"===t.data&&(t._rawPrevTime=0),t=t._next;return c.prototype.paused.apply(this,arguments)},r.usesFrames=function(){for(var e=this._timeline;e._timeline;)e=e._timeline;return e===c._rootFramesTimeline},r.rawTime=function(e){return e&&(this._paused||this._repeat&&0+~]|"+F+")"+F+"*"),W=new RegExp("="+F+"*([^\\]'\"]*?)"+F+"*\\]","g"),q=new RegExp(N),G=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+j),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+F+"*(even|odd|(([+-]|)(\\d*)n|)"+F+"*(?:([+-]|)"+F+"*(\\d+)|))"+F+"*\\)|)","i"),bool:new RegExp("^(?:"+z+")$","i"),needsContext:new RegExp("^"+F+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+F+"*((?:-\\d)?\\d*)"+F+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,K=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Q=/[+~]/,$=new RegExp("\\\\([\\da-f]{1,6}"+F+"?|("+F+")|.)","ig"),ee=function(e,t,r){var i="0x"+t-65536;return i!=i||r?t:i<0?String.fromCharCode(65536+i):String.fromCharCode(i>>10|55296,1023&i|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,re=function(e,t){return t?"\0"===e?"ďż˝":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},ie=function(){w()},ne=_e(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{M.apply(t=D.call(_.childNodes),_.childNodes),t[_.childNodes.length].nodeType}catch(e){M={apply:t.length?function(e,t){O.apply(e,D.call(t))}:function(e,t){for(var r=e.length,i=0;e[r++]=t[i++];);e.length=r-1}}}function oe(e,t,r,i){var n,o,a,s,l,u,h,c=t&&t.ownerDocument,f=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==f&&9!==f&&11!==f)return r;if(!i&&((t?t.ownerDocument||t:_)!==T&&w(t),t=t||T,k)){if(11!==f&&(l=K.exec(e)))if(n=l[1]){if(9===f){if(!(a=t.getElementById(n)))return r;if(a.id===n)return r.push(a),r}else if(c&&(a=c.getElementById(n))&&v(t,a)&&a.id===n)return r.push(a),r}else{if(l[2])return M.apply(r,t.getElementsByTagName(e)),r;if((n=l[3])&&p.getElementsByClassName&&t.getElementsByClassName)return M.apply(r,t.getElementsByClassName(n)),r}if(p.qsa&&!E[e+" "]&&(!g||!g.test(e))){if(1!==f)c=t,h=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(te,re):t.setAttribute("id",s=S),o=(u=d(e)).length;o--;)u[o]="#"+s+" "+ve(u[o]);h=u.join(","),c=Q.test(e)&&me(t.parentNode)||t}if(h)try{return M.apply(r,c.querySelectorAll(h)),r}catch(e){}finally{s===S&&t.removeAttribute("id")}}}return m(e.replace(U,"$1"),t,r,i)}function ae(){var i=[];return function e(t,r){return i.push(t+" ")>b.cacheLength&&delete e[i.shift()],e[t+" "]=r}}function se(e){return e[S]=!0,e}function le(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ue(e,t){for(var r=e.split("|"),i=r.length;i--;)b.attrHandle[r[i]]=t}function he(e,t){var r=t&&e,i=r&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(i)return i;if(r)for(;r=r.nextSibling;)if(r===t)return-1;return e?1:-1}function ce(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function fe(r){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===r}}function pe(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ne(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function de(a){return se(function(o){return o=+o,se(function(e,t){for(var r,i=a([],e.length,o),n=i.length;n--;)e[r=i[n]]&&(e[r]=!(t[r]=e[r]))})})}function me(e){return e&&void 0!==e.getElementsByTagName&&e}for(e in p=oe.support={},n=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},w=oe.setDocument=function(e){var t,r,i=e?e.ownerDocument||e:_;return i!==T&&9===i.nodeType&&i.documentElement&&(a=(T=i).documentElement,k=!n(T),_!==T&&(r=T.defaultView)&&r.top!==r&&(r.addEventListener?r.addEventListener("unload",ie,!1):r.attachEvent&&r.attachEvent("onunload",ie)),p.attributes=le(function(e){return e.className="i",!e.getAttribute("className")}),p.getElementsByTagName=le(function(e){return e.appendChild(T.createComment("")),!e.getElementsByTagName("*").length}),p.getElementsByClassName=J.test(T.getElementsByClassName),p.getById=le(function(e){return a.appendChild(e).id=S,!T.getElementsByName||!T.getElementsByName(S).length}),p.getById?(b.filter.ID=function(e){var t=e.replace($,ee);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if(void 0!==t.getElementById&&k){var r=t.getElementById(e);return r?[r]:[]}}):(b.filter.ID=function(e){var r=e.replace($,ee);return function(e){var t=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===r}},b.find.ID=function(e,t){if(void 0!==t.getElementById&&k){var r,i,n,o=t.getElementById(e);if(o){if((r=o.getAttributeNode("id"))&&r.value===e)return[o];for(n=t.getElementsByName(e),i=0;o=n[i++];)if((r=o.getAttributeNode("id"))&&r.value===e)return[o]}return[]}}),b.find.TAG=p.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):p.qsa?t.querySelectorAll(e):void 0}:function(e,t){var r,i=[],n=0,o=t.getElementsByTagName(e);if("*"!==e)return o;for(;r=o[n++];)1===r.nodeType&&i.push(r);return i},b.find.CLASS=p.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&k)return t.getElementsByClassName(e)},s=[],g=[],(p.qsa=J.test(T.querySelectorAll))&&(le(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&g.push("[*^$]="+F+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||g.push("\\["+F+"*(?:value|"+z+")"),e.querySelectorAll("[id~="+S+"-]").length||g.push("~="),e.querySelectorAll(":checked").length||g.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||g.push(".#.+[+~]")}),le(function(e){e.innerHTML="";var t=T.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&g.push("name"+F+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&g.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(p.matchesSelector=J.test(h=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&le(function(e){p.disconnectedMatch=h.call(e,"*"),h.call(e,"[s!='']:x"),s.push("!=",N)}),g=g.length&&new RegExp(g.join("|")),s=s.length&&new RegExp(s.join("|")),t=J.test(a.compareDocumentPosition),v=t||J.test(a.contains)?function(e,t){var r=9===e.nodeType?e.documentElement:e,i=t&&t.parentNode;return e===i||!(!i||1!==i.nodeType||!(r.contains?r.contains(i):e.compareDocumentPosition&&16&e.compareDocumentPosition(i)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},C=t?function(e,t){if(e===t)return u=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!p.sortDetached&&t.compareDocumentPosition(e)===r?e===T||e.ownerDocument===_&&v(_,e)?-1:t===T||t.ownerDocument===_&&v(_,t)?1:l?R(l,e)-R(l,t):0:4&r?-1:1)}:function(e,t){if(e===t)return u=!0,0;var r,i=0,n=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!n||!o)return e===T?-1:t===T?1:n?-1:o?1:l?R(l,e)-R(l,t):0;if(n===o)return he(e,t);for(r=e;r=r.parentNode;)a.unshift(r);for(r=t;r=r.parentNode;)s.unshift(r);for(;a[i]===s[i];)i++;return i?he(a[i],s[i]):a[i]===_?-1:s[i]===_?1:0}),T},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==T&&w(e),t=t.replace(W,"='$1']"),p.matchesSelector&&k&&!E[t+" "]&&(!s||!s.test(t))&&(!g||!g.test(t)))try{var r=h.call(e,t);if(r||p.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,ee),e[3]=(e[3]||e[4]||e[5]||"").replace($,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,r=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":r&&q.test(r)&&(t=d(r,!0))&&(t=r.indexOf(")",r.length-t)-r.length)&&(e[0]=e[0].slice(0,t),e[2]=r.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace($,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=f[e+" "];return t||(t=new RegExp("(^|"+F+")"+e+"("+F+"|$)"))&&f(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(r,i,n){return function(e){var t=oe.attr(e,r);return null==t?"!="===i:!i||(t+="","="===i?t===n:"!="===i?t!==n:"^="===i?n&&0===t.indexOf(n):"*="===i?n&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function A(e,r,i){return _(r)?S.grep(e,function(e,t){return!!r.call(e,t,e)!==i}):r.nodeType?S.grep(e,function(e){return e===r!==i}):"string"!=typeof r?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,r){var i,n;if(!e)return this;if(r=r||I,"string"!=typeof e)return e.nodeType?(this[0]=e,this.length=1,this):_(e)?void 0!==r.ready?r.ready(e):e(S):S.makeArray(e,this);if(!(i="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:O.exec(e))||!i[1]&&t)return!t||t.jquery?(t||r).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:k,!0)),C.test(i[1])&&S.isPlainObject(t))for(i in t)_(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(n=k.getElementById(i[2]))&&(this[0]=n,this.length=1),this}).prototype=S.fn,I=S(k);var M=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};function R(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}S.fn.extend({has:function(e){var t=S(e,this),r=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ce={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function fe(e,t){var r;return r=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&E(e,t)?S.merge([e],r):r}function pe(e,t){for(var r=0,i=e.length;rx",v.noCloneChecked=!!de.cloneNode(!0).lastChild.defaultValue;var _e=k.documentElement,ye=/^key/,be=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,xe=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function ke(){try{return k.activeElement}catch(e){}}function Se(e,t,r,i,n,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof r&&(i=i||r,r=void 0),t)Se(e,s,r,i,t[s],o);return e}if(null==i&&null==n?(n=r,i=r=void 0):null==n&&("string"==typeof r?(n=i,i=void 0):(n=i,i=r,r=void 0)),!1===n)n=Te;else if(!n)return e;return 1===o&&(a=n,(n=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,n,i,r)})}S.event={global:{},add:function(t,e,r,i,n){var o,a,s,l,u,h,c,f,p,d,m,g=Z.get(t);if(g)for(r.handler&&(r=(o=r).handler,n=o.selector),n&&S.find.matchesSelector(_e,n),r.guid||(r.guid=S.guid++),(l=g.events)||(l=g.events={}),(a=g.handle)||(a=g.handle=function(e){return void 0!==S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),u=(e=(e||"").match(z)||[""]).length;u--;)p=m=(s=xe.exec(e[u])||[])[1],d=(s[2]||"").split(".").sort(),p&&(c=S.event.special[p]||{},p=(n?c.delegateType:c.bindType)||p,c=S.event.special[p]||{},h=S.extend({type:p,origType:m,data:i,handler:r,guid:r.guid,selector:n,needsContext:n&&S.expr.match.needsContext.test(n),namespace:d.join(".")},o),(f=l[p])||((f=l[p]=[]).delegateCount=0,c.setup&&!1!==c.setup.call(t,i,d,a)||t.addEventListener&&t.addEventListener(p,a)),c.add&&(c.add.call(t,h),h.handler.guid||(h.handler.guid=r.guid)),n?f.splice(f.delegateCount++,0,h):f.push(h),S.event.global[p]=!0)},remove:function(e,t,r,i,n){var o,a,s,l,u,h,c,f,p,d,m,g=Z.hasData(e)&&Z.get(e);if(g&&(l=g.events)){for(u=(t=(t||"").match(z)||[""]).length;u--;)if(p=m=(s=xe.exec(t[u])||[])[1],d=(s[2]||"").split(".").sort(),p){for(c=S.event.special[p]||{},f=l[p=(i?c.delegateType:c.bindType)||p]||[],s=s[2]&&new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=f.length;o--;)h=f[o],!n&&m!==h.origType||r&&r.guid!==h.guid||s&&!s.test(h.namespace)||i&&i!==h.selector&&("**"!==i||!h.selector)||(f.splice(o,1),h.selector&&f.delegateCount--,c.remove&&c.remove.call(e,h));a&&!f.length&&(c.teardown&&!1!==c.teardown.call(e,d,g.handle)||S.removeEvent(e,p,g.handle),delete l[p])}else for(p in l)S.event.remove(e,p+t[u],r,i,!0);S.isEmptyObject(l)&&Z.remove(e,"handle events")}},dispatch:function(e){var t,r,i,n,o,a,s=S.event.fix(e),l=new Array(arguments.length),u=(Z.get(this,"events")||{})[s.type]||[],h=S.event.special[s.type]||{};for(l[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,Ee=/\s*$/g;function Ie(e,t){return E(e,"table")&&E(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Oe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Me(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function De(e,t){var r,i,n,o,a,s,l,u;if(1===t.nodeType){if(Z.hasData(e)&&(o=Z.access(e),a=Z.set(t,o),u=o.events))for(n in delete a.handle,a.events={},u)for(r=0,i=u[n].length;r")},clone:function(e,t,r){var i,n,o,a,s,l,u,h=e.cloneNode(!0),c=S.contains(e.ownerDocument,e);if(!(v.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=fe(h),i=0,n=(o=fe(e)).length;i").prop({charset:r.scriptCharset,src:r.url}).on("load error",n=function(e){i.remove(),n=null,e&&t("error"===e.type?404:200,e.type)}),k.head.appendChild(i[0])},abort:function(){n&&n()}}});var Xt,Ht=[],Wt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Ht.pop()||S.expando+"_"+bt++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,r){var i,n,o,a=!1!==e.jsonp&&(Wt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Wt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return i=e.jsonpCallback=_(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Wt,"$1"+i):!1!==e.jsonp&&(e.url+=(xt.test(e.url)?"&":"?")+e.jsonp+"="+i),e.converters["script json"]=function(){return o||S.error(i+" was not called"),o[0]},e.dataTypes[0]="json",n=T[i],T[i]=function(){o=arguments},r.always(function(){void 0===n?S(T).removeProp(i):T[i]=n,e[i]&&(e.jsonpCallback=t.jsonpCallback,Ht.push(i)),o&&_(n)&&n(o[0]),o=n=void 0}),"script"}),v.createHTMLDocument=((Xt=k.implementation.createHTMLDocument("").body).innerHTML="
",2===Xt.childNodes.length),S.parseHTML=function(e,t,r){return"string"!=typeof e?[]:("boolean"==typeof t&&(r=t,t=!1),t||(v.createHTMLDocument?((i=(t=k.implementation.createHTMLDocument("")).createElement("base")).href=k.location.href,t.head.appendChild(i)):t=k),o=!r&&[],(n=C.exec(e))?[t.createElement(n[1])]:(n=ve([e],t,o),o&&o.length&&S(o).remove(),S.merge([],n.childNodes)));var i,n,o},S.fn.load=function(e,t,r){var i,n,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(i):e)}).always(r&&function(e,t){a.each(function(){r.apply(this,o||[e.responseText,t,e])})}),this},S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,r){var i,n,o,a,s,l,u=S.css(e,"position"),h=S(e),c={};"static"===u&&(e.style.position="relative"),s=h.offset(),o=S.css(e,"top"),l=S.css(e,"left"),n=("absolute"===u||"fixed"===u)&&-1<(o+l).indexOf("auto")?(a=(i=h.position()).top,i.left):(a=parseFloat(o)||0,parseFloat(l)||0),_(t)&&(t=t.call(e,r,S.extend({},s))),null!=t.top&&(c.top=t.top-s.top+a),null!=t.left&&(c.left=t.left-s.left+n),"using"in t?t.using.call(e,c):h.css(c)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,r,i=this[0];return i?i.getClientRects().length?(e=i.getBoundingClientRect(),r=i.ownerDocument.defaultView,{top:e.top+r.pageYOffset,left:e.left+r.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,r,i=this[0],n={top:0,left:0};if("fixed"===S.css(i,"position"))t=i.getBoundingClientRect();else{for(t=this.offset(),r=i.ownerDocument,e=i.offsetParent||r.documentElement;e&&(e===r.body||e===r.documentElement)&&"static"===S.css(e,"position");)e=e.parentNode;e&&e!==i&&1===e.nodeType&&((n=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),n.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-n.top-S.css(i,"marginTop",!0),left:t.left-n.left-S.css(i,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===S.css(e,"position");)e=e.offsetParent;return e||_e})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,n){var o="pageYOffset"===n;S.fn[t]=function(e){return X(this,function(e,t,r){var i;if(y(e)?i=e:9===e.nodeType&&(i=e.defaultView),void 0===r)return i?i[n]:e[t];i?i.scrollTo(o?i.pageXOffset:r,o?r:i.pageYOffset):e[t]=r},t,e,arguments.length)}}),S.each(["top","left"],function(e,r){S.cssHooks[r]=Be(v.pixelPosition,function(e,t){if(t)return t=Ne(e,r),Fe.test(t)?S(e).position()[r]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(i,o){S.fn[o]=function(e,t){var r=arguments.length&&(i||"boolean"!=typeof e),n=i||(!0===e||!0===t?"margin":"border");return X(this,function(e,t,r){var i;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(i=e.documentElement,Math.max(e.body["scroll"+a],i["scroll"+a],e.body["offset"+a],i["offset"+a],i["client"+a])):void 0===r?S.css(e,t,n):S.style(e,t,r,n)},s,r?e:void 0,r)}})}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,r){S.fn[r]=function(e,t){return 0>>0,i=(r*=i)>>>0,i+=4294967296*(r-=i)}return 2.3283064365386963e-10*(i>>>0)}}();t.next=function(){var e=2091639*t.s0+2.3283064365386963e-10*t.c;return t.s0=t.s1,t.s1=t.s2,t.s2=e-(t.c=0|e)},t.c=1,t.s0=r(" "),t.s1=r(" "),t.s2=r(" "),t.s0-=r(e),t.s0<0&&(t.s0+=1),t.s1-=r(e),t.s1<0&&(t.s1+=1),t.s2-=r(e),t.s2<0&&(t.s2+=1),r=null}function a(e,t){return t.c=e.c,t.s0=e.s0,t.s1=e.s1,t.s2=e.s2,t}function i(e,t){var r=new o(e),i=t&&t.state,n=r.next;return n.int32=function(){return 4294967296*r.next()|0},n.double=function(){return n()+11102230246251565e-32*(2097152*n()|0)},n.quick=n,i&&("object"==typeof i&&a(i,r),n.state=function(){return a(r,{})}),n}t&&t.exports?t.exports=i:r&&r.amd?r(function(){return i}):this.alea=i}(0,"object"==typeof t&&t,"function"==typeof define&&define)},{}],16:[function(e,t,r){!function(e,t,r){function o(e){var n=this,t="";n.next=function(){var e=n.b,t=n.c,r=n.d,i=n.a;return e=e<<25^e>>>7^t,t=t-r|0,r=r<<24^r>>>8^i,i=i-e|0,n.b=e=e<<20^e>>>12^t,n.c=t=t-r|0,n.d=r<<16^t>>>16^i,n.a=i-e|0},n.a=0,n.b=0,n.c=-1640531527,n.d=1367130551,e===Math.floor(e)?(n.a=e/4294967296|0,n.b=0|e):t+=e;for(var r=0;r>>0)/4294967296};return n.double=function(){do{var e=((r.next()>>>11)+(r.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},n.int32=r.next,n.quick=n,i&&("object"==typeof i&&a(i,r),n.state=function(){return a(r,{})}),n}t&&t.exports?t.exports=i:r&&r.amd?r(function(){return i}):this.tychei=i}(0,"object"==typeof t&&t,"function"==typeof define&&define)},{}],17:[function(e,t,r){!function(e,t,r){function o(e){var t=this,r="";t.x=0,t.y=0,t.z=0,t.w=0,t.next=function(){var e=t.x^t.x<<11;return t.x=t.y,t.y=t.z,t.z=t.w,t.w^=t.w>>>19^e^e>>>8},e===(0|e)?t.x=e:r+=e;for(var i=0;i>>0)/4294967296};return n.double=function(){do{var e=((r.next()>>>11)+(r.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},n.int32=r.next,n.quick=n,i&&("object"==typeof i&&a(i,r),n.state=function(){return a(r,{})}),n}t&&t.exports?t.exports=i:r&&r.amd?r(function(){return i}):this.xor128=i}(0,"object"==typeof t&&t,"function"==typeof define&&define)},{}],18:[function(e,t,r){!function(e,t,r){function o(e){var o=this;o.next=function(){var e,t,r=o.w,i=o.X,n=o.i;return o.w=r=r+1640531527|0,t=i[n+34&127],e=i[n=n+1&127],t^=t<<13,e^=e<<17,t^=t>>>15,e^=e>>>12,t=i[n]=t^e,o.i=n,t+(r^r>>>16)|0},function(e,t){var r,i,n,o,a,s=[],l=128;for(t===(0|t)?(i=t,t=null):(t+="\0",i=0,l=Math.max(l,t.length)),n=0,o=-32;o>>15,i^=i<<4,i^=i>>>13,0<=o&&(a=a+1640531527|0,n=0==(r=s[127&o]^=i+a)?n+1:0);for(128<=n&&(s[127&(t&&t.length||0)]=-1),n=127,o=512;0>>15,r^=r>>>12,s[n]=i^r;e.w=a,e.X=s,e.i=n}(o,e)}function a(e,t){return t.i=e.i,t.w=e.w,t.X=e.X.slice(),t}function i(e,t){null==e&&(e=+new Date);var r=new o(e),i=t&&t.state,n=function(){return(r.next()>>>0)/4294967296};return n.double=function(){do{var e=((r.next()>>>11)+(r.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},n.int32=r.next,n.quick=n,i&&(i.X&&a(i,r),n.state=function(){return a(r,{})}),n}t&&t.exports?t.exports=i:r&&r.amd?r(function(){return i}):this.xor4096=i}(0,"object"==typeof t&&t,"function"==typeof define&&define)},{}],19:[function(e,t,r){!function(e,t,r){function o(e){var n=this;n.next=function(){var e,t,r=n.x,i=n.i;return e=r[i],t=(e^=e>>>7)^e<<24,t^=(e=r[i+1&7])^e>>>10,t^=(e=r[i+3&7])^e>>>3,t^=(e=r[i+4&7])^e<<7,e=r[i+7&7],t^=(e^=e<<13)^e<<9,r[i]=t,n.i=i+1&7,t},function(e,t){var r,i=[];if(t===(0|t))i[0]=t;else for(t=""+t,r=0;r>>0)/4294967296};return n.double=function(){do{var e=((r.next()>>>11)+(r.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},n.int32=r.next,n.quick=n,i&&(i.x&&a(i,r),n.state=function(){return a(r,{})}),n}t&&t.exports?t.exports=i:r&&r.amd?r(function(){return i}):this.xorshift7=i}(0,"object"==typeof t&&t,"function"==typeof define&&define)},{}],20:[function(e,t,r){!function(e,t,r){function o(e){var t=this,r="";t.next=function(){var e=t.x^t.x>>>2;return t.x=t.y,t.y=t.z,t.z=t.w,t.w=t.v,(t.d=t.d+362437|0)+(t.v=t.v^t.v<<4^e^e<<1)|0},t.x=0,t.y=0,t.z=0,t.w=0,e===((t.v=0)|e)?t.x=e:r+=e;for(var i=0;i>>4),t.next()}function a(e,t){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t.v=e.v,t.d=e.d,t}function i(e,t){var r=new o(e),i=t&&t.state,n=function(){return(r.next()>>>0)/4294967296};return n.double=function(){do{var e=((r.next()>>>11)+(r.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},n.int32=r.next,n.quick=n,i&&("object"==typeof i&&a(i,r),n.state=function(){return a(r,{})}),n}t&&t.exports?t.exports=i:r&&r.amd?r(function(){return i}):this.xorwow=i}(0,"object"==typeof t&&t,"function"==typeof define&&define)},{}],21:[function(t,r,e){!function(s,l){var u,h=this,c=256,f=6,p="random",d=l.pow(c,f),m=l.pow(2,52),g=2*m,v=c-1;function e(e,t,r){var i=[],n=b(function e(t,r){var i,n=[],o=typeof t;if(r&&"object"==o)for(i in t)try{n.push(e(t[i],r-1))}catch(e){}return n.length?n:"string"==o?t:t+"\0"}((t=1==t?{entropy:!0}:t||{}).entropy?[e,x(s)]:null==e?function(){try{var e;return u&&(e=u.randomBytes)?e=e(c):(e=new Uint8Array(c),(h.crypto||h.msCrypto).getRandomValues(e)),x(e)}catch(e){var t=h.navigator,r=t&&t.plugins;return[+new Date,h,r,h.screen,x(s)]}}():e,3),i),o=new _(i),a=function(){for(var e=o.g(f),t=d,r=0;e>>=1;return(e+r)/t};return a.int32=function(){return 0|o.g(4)},a.quick=function(){return o.g(4)/4294967296},a.double=a,b(x(o.S),s),(t.pass||r||function(e,t,r,i){return i&&(i.S&&y(i,o),e.state=function(){return y(o,{})}),r?(l[p]=e,t):e})(a,n,"global"in t?t.global:this==l,t.state)}function _(e){var t,r=e.length,a=this,i=0,n=a.i=a.j=0,o=a.S=[];for(r||(e=[r++]);iMath.PI?c-r:r}function g(e){return e-c*Math.floor(e/c)}t.exports={UP:o,DOWN:a,LEFT:s,RIGHT:0,NORTH:l,SOUTH:u,WEST:h,EAST:0,PI_2:c,PI_QUARTER:f,PI_HALF:p,toDegrees:function(e){return e*i},toRadians:function(e){return e*n},isAngleBetween:function(e,t,r){if(((r-t)%c+c)%c>=Math.PI){var i=t;t=r,r=i}return t<=r?t<=e&&e<=r:t<=e||e<=r},differenceAnglesSign:d,differenceAngles:m,shortestAngle:function(e,t){return m(t,e)*d(t,e)+e},normalize:g,angleTwoPoints:function(){return 4===arguments.length?Math.atan2(arguments[3]-arguments[1],arguments[2]-arguments[0]):Math.atan2(arguments[1].y-arguments[0].y,arguments[1].x-arguments[0].x)},distanceTwoPoints:function(){return 2===arguments.length?Math.sqrt(Math.pow(arguments[1].x-arguments[0].x,2)+Math.pow(arguments[1].y-arguments[0].y,2)):Math.sqrt(Math.pow(arguments[2]-arguments[0],2)+Math.pow(arguments[3]-arguments[1],2))},distanceTwoPointsSquared:function(){return 2===arguments.length?Math.pow(arguments[1].x-arguments[0].x,2)+Math.pow(arguments[1].y-arguments[0].y,2):Math.pow(arguments[2]-arguments[0],2)+Math.pow(arguments[3]-arguments[1],2)},closestAngle:function(e){var t=m(e,s),r=m(e,0),i=m(e,o),n=m(e,a);return t<=r&&t<=i&&t<=n?s:r<=i&&r<=n?0:i<=n?o:a},equals:function(e,t,r){return r?m(e,t)>16)+e*(r>>16)<<16|i*(t>>8&255)+e*(r>>8&255)<<8|i*(255&t)+e*(255&r)},random:function(e,t){function r(){return s.range(e,t)}var i=s.pick([{r:1,g:1,b:1},{r:1,g:1,b:0},{r:1,g:0,b:1},{r:0,g:1,b:1},{r:1,g:0,b:0},{r:0,g:1,b:0},{r:0,g:0,b:1}]);return e=e||0,t=t||255,this.rgbToHex(i.r?r():0,i.g?r():0,i.b?r():0)},randomHSL:function(e,t,r,i,n,o){var a={h:s.range(e,t),s:s.range(r,i,!0),l:s.range(n,o,!0)};return this.hslToHex(a)},randomGoldenRatioHSL:function(e,t,r){for(var i=s.get(1,!0),n=[],o=0;o=this.time?(this.parent.x=t.end,this.toX=null,this.parent.emit("bounce-x-end",this.parent)):this.parent.x=this.ease(t.time,t.start,t.delta,this.time),this.parent.dirty=!0}if(this.toY){var r=this.toY;r.time+=e,this.parent.emit("moved",{viewport:this.parent,type:"bounce-y"}),r.time>=this.time?(this.parent.y=r.end,this.toY=null,this.parent.emit("bounce-y-end",this.parent)):this.parent.y=this.ease(r.time,r.start,r.delta,this.time),this.parent.dirty=!0}}}},{key:"calcUnderflowX",value:function(){var e=void 0;switch(this.underflowX){case-1:e=0;break;case 1:e=this.parent.screenWidth-this.parent.screenWorldWidth;break;default:e=(this.parent.screenWidth-this.parent.screenWorldWidth)/2}return e}},{key:"calcUnderflowY",value:function(){var e=void 0;switch(this.underflowY){case-1:e=0;break;case 1:e=this.parent.screenHeight-this.parent.screenWorldHeight;break;default:e=(this.parent.screenHeight-this.parent.screenWorldHeight)/2}return e}},{key:"bounce",value:function(){if(!this.paused){var e=void 0,t=this.parent.plugins.decelerate;t&&(t.x||t.y)&&(t.x&&t.percentChangeX===t.friction||t.y&&t.percentChangeY===t.friction)&&(((e=this.parent.OOB()).left&&this.left||e.right&&this.right)&&(t.percentChangeX=this.friction),(e.top&&this.top||e.bottom&&this.bottom)&&(t.percentChangeY=this.friction));var r=this.parent.plugins.drag||{},i=this.parent.plugins.pinch||{};if(t=t||{},!(r.active||i.active||this.toX&&this.toY||t.x&&t.y)){var n=(e=e||this.parent.OOB()).cornerPoint;if(!this.toX&&!t.x){var o=null;e.left&&this.left?o=this.parent.screenWorldWidththis.maxWidth&&(this.parent.fitWidth(this.maxWidth),e=this.parent.worldScreenWidth,t=this.parent.worldScreenHeight,this.parent.emit("zoomed",{viewport:this.parent,type:"clamp-zoom"})),this.minHeight&&tthis.maxHeight&&(this.parent.fitHeight(this.maxHeight),this.parent.emit("zoomed",{viewport:this.parent,type:"clamp-zoom"}))}}}]),i}()},{"./plugin":9}],3:[function(e,t,r){"use strict";var n=function(){function i(e,t){for(var r=0;r(!0===this.right?this.parent.worldWidth:this.right)&&(this.parent.x=-(!0===this.right?this.parent.worldWidth:this.right)*this.parent.scale.x+this.parent.screenWidth,t=!(e.x=0));t&&this.parent.emit("moved",{viewport:this.parent,type:"clamp-x"})}if(null!==this.top||null!==this.bottom){var r=void 0;if(this.parent.screenWorldHeight(!0===this.bottom?this.parent.worldHeight:this.bottom)&&(this.parent.y=-(!0===this.bottom?this.parent.worldHeight:this.bottom)*this.parent.scale.y+this.parent.screenHeight,r=!(e.y=0));r&&this.parent.emit("moved",{viewport:this.parent,type:"clamp-y"})}}}}]),i}()},{"./plugin":9,"./utils":12}],4:[function(e,t,r){"use strict";var n=function(){function i(e,t){for(var r=0;r=e-100){var s=e-a.time;this.x=(this.parent.x-a.x)/s,this.y=(this.parent.y-a.y)/s,this.percentChangeX=this.percentChangeY=this.friction;break}}}catch(e){r=!0,i=e}finally{try{!t&&o.return&&o.return()}finally{if(r)throw i}}}}},{key:"activate",value:function(e){void 0!==(e=e||{}).x&&(this.x=e.x,this.percentChangeX=this.friction),void 0!==e.y&&(this.y=e.y,this.percentChangeY=this.friction)}},{key:"update",value:function(e){if(!this.paused){var t=void 0;this.x&&(this.parent.x+=this.x*e,this.x*=this.percentChangeX,Math.abs(this.x)this.parent.worldWidth&&(this.parent.x=-this.parent.worldWidth*this.parent.scale.x+this.parent.screenWidth,e.x=0);if("x"!==this.clampWheel)if(this.parent.screenWorldHeightthis.parent.worldHeight&&(this.parent.y=-this.parent.worldHeight*this.parent.scale.y+this.parent.screenHeight,e.y=0)}},{key:"active",get:function(){return this.moved}}]),i}()},{"./plugin":9,"./utils":12}],6:[function(e,t,r){"use strict";var i=function(){function i(e,t){for(var r=0;rthis.radius))return;var i=Math.atan2(this.target.y-e.y,this.target.x-e.x);t=this.target.x-Math.cos(i)*this.radius,r=this.target.y-Math.sin(i)*this.radius}if(this.speed){var n=t-e.x,o=r-e.y;if(n||o){var a=Math.atan2(r-e.y,t-e.x),s=Math.cos(a)*this.speed,l=Math.sin(a)*this.speed,u=Math.abs(s)>Math.abs(n)?t:e.x+s,h=Math.abs(l)>Math.abs(o)?r:e.y+l;this.parent.moveCenter(u,h),this.parent.emit("moved",{viewport:this.parent,type:"follow"})}}else this.parent.moveCenter(t,r),this.parent.emit("moved",{viewport:this.parent,type:"follow"})}}}]),n}()},{"./plugin":9}],7:[function(e,t,r){"use strict";var n=function(){function i(e,t){for(var r=0;r=this.radiusSquared){var n=Math.atan2(i.y-r,i.x-t);this.linear?(this.horizontal=Math.round(Math.cos(n))*this.speed*this.reverse*.06,this.vertical=Math.round(Math.sin(n))*this.speed*this.reverse*.06):(this.horizontal=Math.cos(n)*this.speed*this.reverse*.06,this.vertical=Math.sin(n)*this.speed*this.reverse*.06)}else this.horizontal&&this.decelerateHorizontal(),this.vertical&&this.decelerateVertical(),this.horizontal=this.vertical=0}else o.exists(this.left)&&tthis.right?this.horizontal=-1*this.reverse*this.speed*.06:(this.decelerateHorizontal(),this.horizontal=0),o.exists(this.top)&&rthis.bottom?this.vertical=-1*this.reverse*this.speed*.06:(this.decelerateVertical(),this.vertical=0)}}},{key:"decelerateHorizontal",value:function(){var e=this.parent.plugins.decelerate;this.horizontal&&e&&!this.noDecelerate&&e.activate({x:this.horizontal*this.speed*this.reverse/(1e3/60)})}},{key:"decelerateVertical",value:function(){var e=this.parent.plugins.decelerate;this.vertical&&e&&!this.noDecelerate&&e.activate({y:this.vertical*this.speed*this.reverse/(1e3/60)})}},{key:"up",value:function(){this.horizontal&&this.decelerateHorizontal(),this.vertical&&this.decelerateVertical(),this.horizontal=this.vertical=null}},{key:"update",value:function(){if(!this.paused&&(this.horizontal||this.vertical)){var e=this.parent.center;this.horizontal&&(e.x+=this.horizontal*this.speed),this.vertical&&(e.y+=this.vertical*this.speed),this.parent.moveCenter(e),this.parent.emit("moved",{viewport:this.parent,type:"mouse-edges"})}}}]),i}()},{"./plugin":9,"./utils":12}],8:[function(e,t,r){"use strict";var n=function(){function i(e,t){for(var r=0;r=this.time)this.parent.scale.set(this.x_scale,this.y_scale),this.removeOnComplete&&this.parent.removePlugin("snap-zoom"),this.parent.emit("snap-zoom-end",this.parent),this.snapping=null;else{var i=this.snapping;this.parent.scale.x=this.ease(i.time,i.startX,i.deltaX,this.time),this.parent.scale.y=this.ease(i.time,i.startY,i.deltaY,this.time)}var n=this.parent.plugins["clamp-zoom"];n&&n.clamp(),this.noMove||(this.center?this.parent.moveCenter(this.center):this.parent.moveCenter(t))}}else this.parent.scale.x===this.x_scale&&this.parent.scale.y===this.y_scale||this.createSnapping()}}},{key:"resume",value:function(){this.snapping=null,function e(t,r,i){null===t&&(t=Function.prototype);var n=Object.getOwnPropertyDescriptor(t,r);if(void 0===n){var o=Object.getPrototypeOf(t);return null===o?void 0:e(o,r,i)}if("value"in n)return n.value;var a=n.get;return void 0!==a?a.call(i):void 0}(i.prototype.__proto__||Object.getPrototypeOf(i.prototype),"resume",this).call(this)}}]),i}()},{"./plugin":9,"./utils":12}],11:[function(e,t,r){"use strict";var i=function(){function i(e,t){for(var r=0;rthis.time)r=!0,i=this.startX+this.deltaX,n=this.startY+this.deltaY;else{var o=this.ease(t.time,0,1,this.time);i=this.startX+this.deltaX*o,n=this.startY+this.deltaY*o}this.topLeft?this.parent.moveCorner(i,n):this.parent.moveCenter(i,n),this.parent.emit("moved",{viewport:this.parent,type:"snap"}),r&&(this.removeOnComplete&&this.parent.removePlugin("snap"),this.parent.emit("snap-end",this.parent),this.snapping=null)}else{var a=this.topLeft?this.parent.corner:this.parent.center;a.x===this.x&&a.y===this.y||this.snapStart()}}}]),o}()},{"./plugin":9,"./utils":12}],12:[function(e,t,r){"use strict";var i=e("penner");function n(e){return null!=e}t.exports={exists:n,defaults:function(e,t){return null!=e?e:t},ease:function(e,t){return n(e)?"function"==typeof e?e:"string"==typeof e?i[e]:void 0:i[t]}}},{penner:15}],13:[function(e,t,r){"use strict";var i=function(){function i(e,t){for(var r=0;r=this.threshold}},{key:"move",value:function(e){if(!this.pause){var t=!0,r=!1,i=void 0;try{for(var n,o=this.pluginsList[Symbol.iterator]();!(t=(n=o.next()).done);t=!0){n.value.move(e)}}catch(e){r=!0,i=e}finally{try{!t&&o.return&&o.return()}finally{if(r)throw i}}if(this.clickedAvailable){var a=e.data.global.x-this.last.x,s=e.data.global.y-this.last.y;(this.checkThreshold(a)||this.checkThreshold(s))&&(this.clickedAvailable=!1)}}}},{key:"up",value:function(e){if(!this.pause){if(e.data.originalEvent instanceof MouseEvent&&0==e.data.originalEvent.button&&(this.leftDown=!1),"mouse"!==e.data.pointerType)for(var t=0;tthis._worldWidth,e.top=this.top<0,e.bottom=this.bottom>this._worldHeight,e.cornerPoint={x:this._worldWidth*this.scale.x-this._screenWidth,y:this._worldHeight*this.scale.y-this._screenHeight},e}},{key:"countDownPointers",value:function(){return(this.leftDown?1:0)+this.touches.length}},{key:"getTouchPointers",value:function(){var e=[],t=this.trackedPointers;for(var r in t){var i=t[r];-1!==this.touches.indexOf(i.pointerId)&&e.push(i)}return e}},{key:"getPointers",value:function(){var e=[],t=this.trackedPointers;for(var r in t)e.push(t[r]);return e}},{key:"_reset",value:function(){this.plugins.bounce&&(this.plugins.bounce.reset(),this.plugins.bounce.bounce()),this.plugins.decelerate&&this.plugins.decelerate.reset(),this.plugins.snap&&this.plugins.snap.reset(),this.plugins.clamp&&this.plugins.clamp.update(),this.plugins["clamp-zoom"]&&this.plugins["clamp-zoom"].clamp(),this.dirty=!0}},{key:"removePlugin",value:function(e){this.plugins[e]&&(this.plugins[e]=null,this.emit(e+"-remove"),this.pluginsSort())}},{key:"pausePlugin",value:function(e){this.plugins[e]&&this.plugins[e].pause()}},{key:"resumePlugin",value:function(e){this.plugins[e]&&this.plugins[e].resume()}},{key:"pluginsSort",value:function(){var e=!0,t=!(this.pluginsList=[]),r=void 0;try{for(var i,n=g[Symbol.iterator]();!(e=(i=n.next()).done);e=!0){var o=i.value;this.plugins[o]&&this.pluginsList.push(this.plugins[o])}}catch(e){t=!0,r=e}finally{try{!e&&n.return&&n.return()}finally{if(t)throw r}}}},{key:"drag",value:function(e){return this.plugins.drag=new o(this,e),this.pluginsSort(),this}},{key:"clamp",value:function(e){return this.plugins.clamp=new s(this,e),this.pluginsSort(),this}},{key:"decelerate",value:function(e){return this.plugins.decelerate=new u(this,e),this.pluginsSort(),this}},{key:"bounce",value:function(e){return this.plugins.bounce=new h(this,e),this.pluginsSort(),this}},{key:"pinch",value:function(e){return this.plugins.pinch=new a(this,e),this.pluginsSort(),this}},{key:"snap",value:function(e,t,r){return this.plugins.snap=new c(this,e,t,r),this.pluginsSort(),this}},{key:"follow",value:function(e,t){return this.plugins.follow=new p(this,e,t),this.pluginsSort(),this}},{key:"wheel",value:function(e){return this.plugins.wheel=new d(this,e),this.pluginsSort(),this}},{key:"clampZoom",value:function(e){return this.plugins["clamp-zoom"]=new l(this,e),this.pluginsSort(),this}},{key:"mouseEdges",value:function(e){return this.plugins["mouse-edges"]=new m(this,e),this.pluginsSort(),this}},{key:"screenWidth",get:function(){return this._screenWidth},set:function(e){this._screenWidth=e}},{key:"screenHeight",get:function(){return this._screenHeight},set:function(e){this._screenHeight=e}},{key:"worldWidth",get:function(){return this._worldWidth?this._worldWidth:this.width},set:function(e){this._worldWidth=e,this.resizePlugins()}},{key:"worldHeight",get:function(){return this._worldHeight?this._worldHeight:this.height},set:function(e){this._worldHeight=e,this.resizePlugins()}},{key:"worldScreenWidth",get:function(){return this._screenWidth/this.scale.x}},{key:"worldScreenHeight",get:function(){return this._screenHeight/this.scale.y}},{key:"screenWorldWidth",get:function(){return this._worldWidth*this.scale.x}},{key:"screenWorldHeight",get:function(){return this._worldHeight*this.scale.y}},{key:"center",get:function(){return{x:this.worldScreenWidth/2-this.x/this.scale.x,y:this.worldScreenHeight/2-this.y/this.scale.y}},set:function(e){this.moveCenter(e)}},{key:"corner",get:function(){return{x:-this.x/this.scale.x,y:-this.y/this.scale.y}},set:function(e){this.moveCorner(e)}},{key:"right",get:function(){return-this.x/this.scale.x+this.worldScreenWidth},set:function(e){this.x=-e*this.scale.x+this.screenWidth,this._reset()}},{key:"left",get:function(){return-this.x/this.scale.x},set:function(e){this.x=-e*this.scale.x,this._reset()}},{key:"top",get:function(){return-this.y/this.scale.y},set:function(e){this.y=-e*this.scale.y,this._reset()}},{key:"bottom",get:function(){return-this.y/this.scale.y+this.worldScreenHeight},set:function(e){this.y=-e*this.scale.y+this.screenHeight,this._reset()}},{key:"dirty",get:function(){return this._dirty},set:function(e){this._dirty=e}},{key:"forceHitArea",get:function(){return this._forceHitArea},set:function(e){e?(this._forceHitArea=e,this.hitArea=e):(this._forceHitArea=!1,this.hitArea=new PIXI.Rectangle(0,0,this.worldWidth,this.worldHeight))}},{key:"pause",get:function(){return this._pause},set:function(e){(this._pause=e)&&(this.touches=[],this.leftDown=!1)}}]),r}();PIXI.extras.Viewport=v,t.exports=v},{"./bounce":1,"./clamp":3,"./clamp-zoom":2,"./decelerate":4,"./drag":5,"./follow":6,"./mouse-edges":7,"./pinch":8,"./snap":11,"./snap-zoom":10,"./utils":12,"./wheel":14}],14:[function(e,t,r){"use strict";var n=function(){function i(e,t){for(var r=0;rt&&(r[i]=this.hyphenate(r[i]).join("­"));return r.join("")},t.prototype.hyphenate=function(e){var t,r,i,n,o,a,s,l,u,h=[],c=[],f=e.toLowerCase(),p=Math.max,d=this.trie,m=[""];if(this.exceptions.hasOwnProperty(f))return e.match(this.exceptions[f]).slice(1);if(-1!==e.indexOf("­"))return[e];for(t=(e="_"+e+"_").toLowerCase().split(""),r=e.split(""),s=t.length,i=0;ithis.leftMin&&i @@ -47,6 +48,7 @@ +

Class: AbstractPopup

@@ -2686,11 +3429,12 @@ like Popup, Message, Tooltip...

-
- - +
+ + +

@@ -3581,8 +4325,9 @@ to landscape, the popup cannot be displayed in portrait mode.

+ +

-

Extends

@@ -3601,6 +4346,8 @@ to landscape, the popup cannot be displayed in portrait mode.

+ +

Members

@@ -4152,7 +4899,7 @@ a string, a number or a PIXI.Text object.

diff --git a/doc/out/Badge.html b/doc/out/Badge.html index 9e26416..5b72951 100644 --- a/doc/out/Badge.html +++ b/doc/out/Badge.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Class: Badge

@@ -2684,11 +3427,12 @@
-
- - +
+ + +

@@ -2994,14 +3738,32 @@ to display.

-
// Create the app
const app = new PIXIApp({
    view: canvas,
    width: 900,
    height: 250
}).setup().run()

// Add an DisplayObject to the app
const circle = new PIXI.Graphics()
circle.beginFill(0x5251a3)
circle.drawCircle(50, 50, 40)
app.scene.addChild(circle)

const badge1 = new Badge({
    object: circle,
    container: app.scene,
    content: 'Das Gesetz ist der Freund des Schwachen.'
})
+
// Create the app
+const app = new PIXIApp({
+    view: canvas,
+    width: 900,
+    height: 250
+}).setup().run()
+
+// Add an DisplayObject to the app
+const circle = new PIXI.Graphics()
+circle.beginFill(0x5251a3)
+circle.drawCircle(50, 50, 40)
+app.scene.addChild(circle)
+
+const badge1 = new Badge({
+    object: circle,
+    container: app.scene,
+    content: 'Das Gesetz ist der Freund des Schwachen.'
+})
+ +

-

Extends

@@ -3020,6 +3782,8 @@ to display.

+ +

Members

@@ -3591,7 +4355,7 @@ a string, a number or a PIXI.Text object.

diff --git a/doc/out/BlurFilter.html b/doc/out/BlurFilter.html index a93b63b..2c74cd7 100644 --- a/doc/out/BlurFilter.html +++ b/doc/out/BlurFilter.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@
+

Class: BlurFilter

@@ -2688,11 +3431,12 @@ is assigned to!

-
- - +
+ + +

@@ -2864,14 +3608,31 @@ canvas, NOT relative to the PIXI.DisplayObject where the blur effect is assigned -
// Create the app
const app = new PIXIApp({
    view: canvas,
    width: 480,
    height: 270,
    transparent: false
}).setup().run()

// Add a video sprite
const sprite = new PIXI.Sprite(PIXI.Texture.from("assets/blurfilter.mp4"))
sprite.width = app.size.width
sprite.height = app.size.height
app.scene.addChild(sprite)

// Create the filter and assign it to the scene
const blurFilter = new BlurFilter(new PIXI.Rectangle(20, 20, 80, 60))
app.scene.filters = [blurFilter]
+
// Create the app
+const app = new PIXIApp({
+    view: canvas,
+    width: 480,
+    height: 270,
+    transparent: false
+}).setup().run()
+
+// Add a video sprite
+const sprite = new PIXI.Sprite(PIXI.Texture.from("assets/blurfilter.mp4"))
+sprite.width = app.size.width
+sprite.height = app.size.height
+app.scene.addChild(sprite)
+
+// Create the filter and assign it to the scene
+const blurFilter = new BlurFilter(new PIXI.Rectangle(20, 20, 80, 60))
+app.scene.filters = [blurFilter]
+ +

-

Extends

@@ -2890,6 +3651,8 @@ canvas, NOT relative to the PIXI.DisplayObject where the blur effect is assigned + +

Members

@@ -3016,7 +3779,7 @@ canvas, NOT relative to the PIXI.DisplayObject where the blur effect is assigned
diff --git a/doc/out/Button.html b/doc/out/Button.html index 5e2b699..a2410b8 100644 --- a/doc/out/Button.html +++ b/doc/out/Button.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Class: Button

@@ -2684,11 +3427,12 @@
-
- - +
+ + +

@@ -4468,14 +5212,22 @@ If the parameter is an object, all badge options can be set plus the following:< -
// Create the button
const button = new Button({
    label: 'My Button',
    action: () => console.log('Button was clicked')
})

// Add the button to a DisplayObject
app.scene.addChild(button)
+
// Create the button
+const button = new Button({
+    label: 'My Button',
+    action: () => console.log('Button was clicked')
+})
+
+// Add the button to a DisplayObject
+app.scene.addChild(button)
+ +

-

Extends

@@ -4494,6 +5246,8 @@ If the parameter is an object, all badge options can be set plus the following:< + +

Members

@@ -5115,7 +5869,7 @@ the tint property of the icon sprite.

diff --git a/doc/out/ButtonGroup.html b/doc/out/ButtonGroup.html index 658e38d..9217f82 100644 --- a/doc/out/ButtonGroup.html +++ b/doc/out/ButtonGroup.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@
+

Class: ButtonGroup

@@ -2684,11 +3427,12 @@
-
- - +
+ + +

@@ -4227,14 +4971,26 @@ top, middle and bottom. Only affects the style when the minHeight is bigger than -
// Create the button group
const buttonGroup = new ButtonGroup({
    buttons: [
        {label: 'Button 1', action: event => console.log(event)},
        {label: 'Button 2', action: event => console.log(event)},
        {label: 'Button 3', action: event => console.log(event)}
    ],
    minWidth: 100
})

// Add the button group to a DisplayObject
app.scene.addChild(buttonGroup)
+
// Create the button group
+const buttonGroup = new ButtonGroup({
+    buttons: [
+        {label: 'Button 1', action: event => console.log(event)},
+        {label: 'Button 2', action: event => console.log(event)},
+        {label: 'Button 3', action: event => console.log(event)}
+    ],
+    minWidth: 100
+})
+
+// Add the button group to a DisplayObject
+app.scene.addChild(buttonGroup)
+ +

-

Extends

@@ -4253,6 +5009,8 @@ top, middle and bottom. Only affects the style when the minHeight is bigger than + +

Members

@@ -4873,7 +5631,7 @@ top, middle and bottom. Only affects the style when the minHeight is bigger than
diff --git a/doc/out/DeepZoomImage.html b/doc/out/DeepZoomImage.html index 09f5614..ca3b559 100644 --- a/doc/out/DeepZoomImage.html +++ b/doc/out/DeepZoomImage.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@
+

Class: DeepZoomImage

@@ -2688,11 +3431,12 @@ more detailed tiles at the larger level as fast as possible.

-
- - +
+ + +

@@ -2808,8 +3552,11 @@ more detailed tiles at the larger level as fast as possible.

+ +
+ + -
@@ -6330,7 +7077,7 @@ i.e. after loading a single tile

diff --git a/doc/out/DeepZoomInfo.html b/doc/out/DeepZoomInfo.html index 7f4c00e..a61be34 100644 --- a/doc/out/DeepZoomInfo.html +++ b/doc/out/DeepZoomInfo.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Class: DeepZoomInfo

@@ -2685,11 +3428,12 @@ height and width of the overall image, overlap, and image type.

-
- - +
+ + +

@@ -2807,14 +3551,32 @@ height and width of the overall image, overlap, and image type.

-
{
        "tileSize": 1024,
        "format": "jpeg",
        "overlap": 1,
        "height": 4794,
        "width": 4095,
        "clip": { "minLevel": 12, "maxLevel": 20, "startCol": 301436, "startRow": 354060 },
                  // optional: minLevel and maxLevel define the level bounds
                  // startCol: first col at maxLevel
                  // startRow: first row at maxLevel
        "path": "var/Vermeer/Vermeer_files",
        "type": "dzi",  // optional: dzi (default) or map
        "urlTileTemplate": "{path}/{level}/{column}/{row}.{format}"
          // optional: {path}/{level}/{column}_{row}.{format} (default) or
          // a template String with the format of the URL
    }
+
{
+        "tileSize": 1024,
+        "format": "jpeg",
+        "overlap": 1,
+        "height": 4794,
+        "width": 4095,
+        "clip": { "minLevel": 12, "maxLevel": 20, "startCol": 301436, "startRow": 354060 },
+                  // optional: minLevel and maxLevel define the level bounds
+                  // startCol: first col at maxLevel
+                  // startRow: first row at maxLevel
+        "path": "var/Vermeer/Vermeer_files",
+        "type": "dzi",  // optional: dzi (default) or map
+        "urlTileTemplate": "{path}/{level}/{column}/{row}.{format}"
+          // optional: {path}/{level}/{column}_{row}.{format} (default) or
+          // a template String with the format of the URL
+    }
+ +
+ + -
@@ -3828,7 +4590,7 @@ on completion.

diff --git a/doc/out/Flippable.html b/doc/out/Flippable.html index e37557a..d620670 100644 --- a/doc/out/Flippable.html +++ b/doc/out/Flippable.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Class: Flippable

@@ -2684,11 +3427,12 @@
-
- - +
+ + +

@@ -3477,14 +4221,23 @@ -
const front = PIXI.Sprite.from('./assets/front.jpg')
const back = PIXI.Sprite.from('./assets/back.jpg')
app.scene.addChild(front)

// Create the flippable
const flippable = new Flippable(front, back, app.renderer)

front.interactive = true
front.on('click', event => flippable.toggle())
+
const front = PIXI.Sprite.from('./assets/front.jpg')
+const back = PIXI.Sprite.from('./assets/back.jpg')
+app.scene.addChild(front)
+
+// Create the flippable
+const flippable = new Flippable(front, back, app.renderer)
+
+front.interactive = true
+front.on('click', event => flippable.toggle())
+ +

-

Extends

@@ -3503,6 +4256,8 @@ + +

Members

@@ -3738,7 +4493,7 @@
diff --git a/doc/out/FontInfo.html b/doc/out/FontInfo.html index 99e8ed9..35e3717 100644 --- a/doc/out/FontInfo.html +++ b/doc/out/FontInfo.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@
+

Class: FontInfo

@@ -2684,11 +3427,12 @@
-
- - +
+ + +

@@ -2759,8 +3503,11 @@ + +

+ + -
@@ -2793,7 +3540,7 @@
diff --git a/doc/out/Hypenate.html b/doc/out/Hypenate.html index a792225..e1a7d62 100644 --- a/doc/out/Hypenate.html +++ b/doc/out/Hypenate.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@
+

Class: Hypenate

@@ -2682,11 +3425,12 @@
-
- - +
+ + +

@@ -2761,8 +3505,11 @@ + +

+ + -
@@ -2995,7 +3742,7 @@
diff --git a/doc/out/InteractivePopup.html b/doc/out/InteractivePopup.html index 6b2307e..35b18f4 100644 --- a/doc/out/InteractivePopup.html +++ b/doc/out/InteractivePopup.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@
+

Class: InteractivePopup

@@ -2686,11 +3429,12 @@ like Popup, Message...

-
- - +
+ + +

@@ -2981,8 +3725,9 @@ like Popup, Message...

+ +
-

Extends

@@ -2997,6 +3742,8 @@ like Popup, Message...

+ +

Classes

@@ -3577,7 +4324,7 @@ a string, a number or a PIXI.Text object.

diff --git a/doc/out/LabeledGraphics.exports.LabeledGraphics.html b/doc/out/LabeledGraphics.exports.LabeledGraphics.html index 20e91fc..61f7c63 100644 --- a/doc/out/LabeledGraphics.exports.LabeledGraphics.html +++ b/doc/out/LabeledGraphics.exports.LabeledGraphics.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Class: exports.LabeledGraphics

@@ -2682,11 +3425,12 @@
-
- - +
+ + +

@@ -2761,8 +3505,11 @@ + +

+ + -
@@ -2795,7 +3542,7 @@
diff --git a/doc/out/LabeledGraphics.html b/doc/out/LabeledGraphics.html index bb2f835..7c113b7 100644 --- a/doc/out/LabeledGraphics.html +++ b/doc/out/LabeledGraphics.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@
+

Class: LabeledGraphics

@@ -2682,11 +3425,12 @@
-
- - +
+ + +

@@ -2762,8 +3506,9 @@ resuse and place labels across different layout variants

+ +

-

Extends

@@ -2778,6 +3523,8 @@ resuse and place labels across different layout variants

+ +

Classes

@@ -3860,7 +4607,7 @@ than wanted

diff --git a/doc/out/List.html b/doc/out/List.html index 1bcbb55..5f24cd3 100644 --- a/doc/out/List.html +++ b/doc/out/List.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@
+

Class: List

@@ -2684,11 +3427,12 @@
-
- - +
+ + +

@@ -3165,14 +3909,21 @@ scroll your list.

-
const elephant1 = PIXI.Sprite.from('./assets/elephant-1.jpg')
const elephant2 = PIXI.Sprite.from('./assets/elephant-2.jpg')

// Create the list
const list = new List([elephant1, elephant2])

app.scene.addChild(list)
+
const elephant1 = PIXI.Sprite.from('./assets/elephant-1.jpg')
+const elephant2 = PIXI.Sprite.from('./assets/elephant-2.jpg')
+
+// Create the list
+const list = new List([elephant1, elephant2])
+
+app.scene.addChild(list)
+ +

-

Extends

@@ -3191,6 +3942,8 @@ scroll your list.

+ +

Members

@@ -3813,7 +4566,7 @@ scroll your list.

diff --git a/doc/out/Message.html b/doc/out/Message.html index dcd9f76..24d16eb 100644 --- a/doc/out/Message.html +++ b/doc/out/Message.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@
+

Class: Message

@@ -2684,11 +3427,12 @@
-
- - +
+ + +

@@ -3210,14 +3954,36 @@ values are top, middle, bottom.

-
// Create the PixiJS App
const app = new PIXIApp({
    view: canvas,
    width: 900,
    height: 250
}).setup().run()

// Create a button
let button = new Button({
    label: 'Click me',
    action: e => {
        const message = new Message({
            app: app,
            header: 'Header',
            content: 'Text.'
        })
        app.scene.addChild(message)
    }
})

// Add the button to the scene
app.scene.addChild(button)
+
// Create the PixiJS App
+const app = new PIXIApp({
+    view: canvas,
+    width: 900,
+    height: 250
+}).setup().run()
+
+// Create a button
+let button = new Button({
+    label: 'Click me',
+    action: e => {
+        const message = new Message({
+            app: app,
+            header: 'Header',
+            content: 'Text.'
+        })
+        app.scene.addChild(message)
+    }
+})
+
+// Add the button to the scene
+app.scene.addChild(button)
+ +

-

Extends

@@ -3232,6 +3998,8 @@ values are top, middle, bottom.

+ +

Classes

@@ -3654,7 +4422,7 @@ a string, a number or a PIXI.Text object.

diff --git a/doc/out/MessageInteractivePopup.html b/doc/out/MessageInteractivePopup.html index 7c9a501..1403cbf 100644 --- a/doc/out/MessageInteractivePopup.html +++ b/doc/out/MessageInteractivePopup.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@
+

Class: InteractivePopup

@@ -2686,11 +3429,12 @@ like Popup, Message...

-
- - +
+ + +

@@ -2983,8 +3727,9 @@ like Popup, Message...

+ +
-

Extends

@@ -3009,6 +3754,8 @@ like Popup, Message...

+ +
@@ -3023,7 +3770,7 @@ like Popup, Message...

diff --git a/doc/out/MessageMessageInteractivePopup.html b/doc/out/MessageMessageInteractivePopup.html index 567f799..01efd88 100644 --- a/doc/out/MessageMessageInteractivePopup.html +++ b/doc/out/MessageMessageInteractivePopup.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Class: InteractivePopup

@@ -2686,11 +3429,12 @@ like Popup, Message...

-
- - +
+ + +

@@ -2983,8 +3727,9 @@ like Popup, Message...

+ +
-

Extends

@@ -3009,6 +3754,8 @@ like Popup, Message...

+ +
@@ -3023,7 +3770,7 @@ like Popup, Message...

diff --git a/doc/out/Modal.html b/doc/out/Modal.html index bdee5db..0f4ffab 100644 --- a/doc/out/Modal.html +++ b/doc/out/Modal.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Class: Modal

@@ -2684,11 +3427,12 @@
-
- - +
+ + +
-

Extends

@@ -3091,6 +3850,8 @@ background?

+ +

Classes

@@ -3562,7 +4323,7 @@ a string or a PIXI.Text object.

diff --git a/doc/out/ModalInteractivePopup.html b/doc/out/ModalInteractivePopup.html index c2bbb38..e45c460 100644 --- a/doc/out/ModalInteractivePopup.html +++ b/doc/out/ModalInteractivePopup.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@
+

Class: InteractivePopup

@@ -2686,11 +3429,12 @@ like Popup, Message...

-
- - +
+ + +

@@ -2983,8 +3727,9 @@ like Popup, Message...

+ +
-

Extends

@@ -3009,6 +3754,8 @@ like Popup, Message...

+ +
@@ -3023,7 +3770,7 @@ like Popup, Message...

diff --git a/doc/out/ModalModalInteractivePopup.html b/doc/out/ModalModalInteractivePopup.html index 0e88554..8fd6195 100644 --- a/doc/out/ModalModalInteractivePopup.html +++ b/doc/out/ModalModalInteractivePopup.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Class: InteractivePopup

@@ -2686,11 +3429,12 @@ like Popup, Message...

-
- - +
+ + +

@@ -2983,8 +3727,9 @@ like Popup, Message...

+ +
-

Extends

@@ -3009,6 +3754,8 @@ like Popup, Message...

+ +
@@ -3023,7 +3770,7 @@ like Popup, Message...

diff --git a/doc/out/PIXIApp.html b/doc/out/PIXIApp.html index cbdd107..9ae4f27 100644 --- a/doc/out/PIXIApp.html +++ b/doc/out/PIXIApp.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Class: PIXIApp

@@ -2685,11 +3428,12 @@ by several functions and makes meaningful pre-assumptions.

-
- - +
+ + +

@@ -3394,14 +4138,23 @@ by several functions and makes meaningful pre-assumptions.

-
// Create the app
const app = new PIXIApp({
    view: canvas,
    width: 450,
    height: 150,
    fpsLogging: true,
    theme: 'light',
    transparent: false
}).setup().run()
+
// Create the app
+const app = new PIXIApp({
+    view: canvas,
+    width: 450,
+    height: 150,
+    fpsLogging: true,
+    theme: 'light',
+    transparent: false
+}).setup().run()
+ +
-

Extends

@@ -3420,6 +4173,8 @@ by several functions and makes meaningful pre-assumptions.

+ +

Members

@@ -6969,7 +7724,7 @@ rejected with an error.
diff --git a/doc/out/Popup.html b/doc/out/Popup.html index 0db566d..f1d0768 100644 --- a/doc/out/Popup.html +++ b/doc/out/Popup.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Class: Popup

@@ -2684,11 +3427,12 @@
-
- - +
+ + +
-

Extends

@@ -2978,6 +3730,8 @@ + +

Classes

@@ -3563,7 +4317,7 @@ a string, a number or a PIXI.Text object.

diff --git a/doc/out/PopupInteractivePopup.html b/doc/out/PopupInteractivePopup.html index a1365d0..e6161ee 100644 --- a/doc/out/PopupInteractivePopup.html +++ b/doc/out/PopupInteractivePopup.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@
+

Class: InteractivePopup

@@ -2686,11 +3429,12 @@ like Popup, Message...

-
- - +
+ + +

@@ -2983,8 +3727,9 @@ like Popup, Message...

+ +
-

Extends

@@ -3009,6 +3754,8 @@ like Popup, Message...

+ +
@@ -3023,7 +3770,7 @@ like Popup, Message...

diff --git a/doc/out/PopupMenu.html b/doc/out/PopupMenu.html index 4bb7a27..06a0999 100644 --- a/doc/out/PopupMenu.html +++ b/doc/out/PopupMenu.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Class: PopupMenu

@@ -2684,11 +3427,12 @@
-
- - +
+ + +

@@ -2995,14 +3739,31 @@ PIXI.DisplayObject.

-
// Create the button and the modal when clicked
const button = new Button({
    label: 'Show PopupMenu',
    action: e => {
        const popupmenu = new PopupMenu({
            items: [
                {label: 'Save', action: () => alert('Saved')},
                {label: 'Edit', action: () => alert('Edited')},
                {label: 'Delete', action: () => alert('Deleted')}
            ]
        })
        app.scene.addChild(popupmenu)
    }
})

// Add the button to a DisplayObject
app.scene.addChild(button)
+
// Create the button and the modal when clicked
+const button = new Button({
+    label: 'Show PopupMenu',
+    action: e => {
+        const popupmenu = new PopupMenu({
+            items: [
+                {label: 'Save', action: () => alert('Saved')},
+                {label: 'Edit', action: () => alert('Edited')},
+                {label: 'Delete', action: () => alert('Deleted')}
+            ]
+        })
+        app.scene.addChild(popupmenu)
+    }
+})
+
+// Add the button to a DisplayObject
+app.scene.addChild(button)
+ +

-

Extends

@@ -3017,6 +3778,8 @@ PIXI.DisplayObject.

+ +

Classes

@@ -3608,7 +4371,7 @@ a string, a number or a PIXI.Text object.

diff --git a/doc/out/PopupMenuPopupInteractivePopup.html b/doc/out/PopupMenuPopupInteractivePopup.html index 931c93e..9e3f89d 100644 --- a/doc/out/PopupMenuPopupInteractivePopup.html +++ b/doc/out/PopupMenuPopupInteractivePopup.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@
+

Class: InteractivePopup

@@ -2686,11 +3429,12 @@ like Popup, Message...

-
- - +
+ + +

@@ -2983,8 +3727,9 @@ like Popup, Message...

+ +
-

Extends

@@ -3009,6 +3754,8 @@ like Popup, Message...

+ +
@@ -3023,7 +3770,7 @@ like Popup, Message...

diff --git a/doc/out/PopupMenuPopupMenuPopupInteractivePopup.html b/doc/out/PopupMenuPopupMenuPopupInteractivePopup.html index e3a3218..0b8edbe 100644 --- a/doc/out/PopupMenuPopupMenuPopupInteractivePopup.html +++ b/doc/out/PopupMenuPopupMenuPopupInteractivePopup.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Class: InteractivePopup

@@ -2686,11 +3429,12 @@ like Popup, Message...

-
- - +
+ + +

@@ -2983,8 +3727,9 @@ like Popup, Message...

+ +
-

Extends

@@ -3009,6 +3754,8 @@ like Popup, Message...

+ +
@@ -3023,7 +3770,7 @@ like Popup, Message...

diff --git a/doc/out/PopupMenuPopupMenuPopupPopupInteractivePopup.html b/doc/out/PopupMenuPopupMenuPopupPopupInteractivePopup.html index 34e6d3d..0af2087 100644 --- a/doc/out/PopupMenuPopupMenuPopupPopupInteractivePopup.html +++ b/doc/out/PopupMenuPopupMenuPopupPopupInteractivePopup.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Class: InteractivePopup

@@ -2686,11 +3429,12 @@ like Popup, Message...

-
- - +
+ + +

@@ -2983,8 +3727,9 @@ like Popup, Message...

+ +
-

Extends

@@ -3009,6 +3754,8 @@ like Popup, Message...

+ +
@@ -3023,7 +3770,7 @@ like Popup, Message...

diff --git a/doc/out/PopupMenuPopupPopupInteractivePopup.html b/doc/out/PopupMenuPopupPopupInteractivePopup.html index 5cfe9b7..7d30788 100644 --- a/doc/out/PopupMenuPopupPopupInteractivePopup.html +++ b/doc/out/PopupMenuPopupPopupInteractivePopup.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Class: InteractivePopup

@@ -2686,11 +3429,12 @@ like Popup, Message...

-
- - +
+ + +

@@ -2983,8 +3727,9 @@ like Popup, Message...

+ +
-

Extends

@@ -3009,6 +3754,8 @@ like Popup, Message...

+ +
@@ -3023,7 +3770,7 @@ like Popup, Message...

diff --git a/doc/out/PopupPopupInteractivePopup.html b/doc/out/PopupPopupInteractivePopup.html index 302c56f..e4fef17 100644 --- a/doc/out/PopupPopupInteractivePopup.html +++ b/doc/out/PopupPopupInteractivePopup.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Class: InteractivePopup

@@ -2686,11 +3429,12 @@ like Popup, Message...

-
- - +
+ + +

@@ -2983,8 +3727,9 @@ like Popup, Message...

+ +
-

Extends

@@ -3009,6 +3754,8 @@ like Popup, Message...

+ +
@@ -3023,7 +3770,7 @@ like Popup, Message...

diff --git a/doc/out/Progress.html b/doc/out/Progress.html index 3c878ff..d7ace92 100644 --- a/doc/out/Progress.html +++ b/doc/out/Progress.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Class: Progress

@@ -2684,11 +3427,12 @@
-
- - +
+ + +

@@ -3683,14 +4427,21 @@ progress is activated. See PIXI.TextStyle for possible options.

-
// Create the progress
const progress = new Progress({
    app: app
})

// Add the progress to a DisplayObject
app.scene.addChild(progress)
+
// Create the progress
+const progress = new Progress({
+    app: app
+})
+
+// Add the progress to a DisplayObject
+app.scene.addChild(progress)
+ +

-

Extends

@@ -3709,6 +4460,8 @@ progress is activated. See PIXI.TextStyle for possible options.

+ +

Members

@@ -4103,7 +4856,7 @@ progress is activated. See PIXI.TextStyle for possible options.

diff --git a/doc/out/Scrollview.html b/doc/out/Scrollview.html index c6a9632..60fc326 100644 --- a/doc/out/Scrollview.html +++ b/doc/out/Scrollview.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@
+

Class: Scrollview

@@ -2684,11 +3427,12 @@
-
- - +
+ + +

@@ -2772,14 +3516,29 @@ -
// Create the app
const app = new PIXIApp({
    view: canvas,
    width: 600,
    height: 400
}).setup().run()

// Create the Scrollview
app.loader
    .add('elephant', './assets/elephant-1.jpg')
    .load((loader, resources) => {
        const sprite = new PIXI.Sprite(resources.elephant.texture)
        const scrollview = new Scrollview({boxWidth: 400, boxHeight: 300})
        scrollview.content.addChild(sprite)
        app.scene.addChild(scrollview)
+
// Create the app
+const app = new PIXIApp({
+    view: canvas,
+    width: 600,
+    height: 400
+}).setup().run()
+
+// Create the Scrollview
+app.loader
+    .add('elephant', './assets/elephant-1.jpg')
+    .load((loader, resources) => {
+        const sprite = new PIXI.Sprite(resources.elephant.texture)
+        const scrollview = new Scrollview({boxWidth: 400, boxHeight: 300})
+        scrollview.content.addChild(sprite)
+        app.scene.addChild(scrollview)
+ +

-

Extends

@@ -2800,6 +3559,8 @@ + +

Methods

@@ -2927,7 +3688,7 @@
diff --git a/doc/out/Slider.html b/doc/out/Slider.html index 4c4cc23..f26b60f 100644 --- a/doc/out/Slider.html +++ b/doc/out/Slider.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@
+

Class: Slider

@@ -2684,11 +3427,12 @@
-
- - +
+ + +

@@ -3715,14 +4459,29 @@ to display.

-
// Create the app
const app = new PIXIApp({
    view: canvas,
    width: 900,
    height: 250
}).setup().run()

// Create the slider
const slider = new Slider({
    x: 10,
    y: 20
})

// Add the slider to a DisplayObject
app.scene.addChild(slider)
+
// Create the app
+const app = new PIXIApp({
+    view: canvas,
+    width: 900,
+    height: 250
+}).setup().run()
+
+// Create the slider
+const slider = new Slider({
+    x: 10,
+    y: 20
+})
+
+// Add the slider to a DisplayObject
+app.scene.addChild(slider)
+ +

-

Extends

@@ -3741,6 +4500,8 @@ to display.

+ +

Members

@@ -4186,7 +4947,7 @@ to display.

diff --git a/doc/out/Switch.html b/doc/out/Switch.html index 6388f4f..7159236 100644 --- a/doc/out/Switch.html +++ b/doc/out/Switch.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@
+

Class: Switch

@@ -2684,11 +3427,12 @@
-
- - +
+ + +

@@ -4145,14 +4889,29 @@ to display.

-
// Create the app
const app = new PIXIApp({
    view: canvas,
    width: 900,
    height: 250
}).setup().run()

// Create the switch
const switch1 = new Switch({
    x: 10,
    y: 20
})

// Add the switch to a DisplayObject
app.scene.addChild(switch1)
+
// Create the app
+const app = new PIXIApp({
+    view: canvas,
+    width: 900,
+    height: 250
+}).setup().run()
+
+// Create the switch
+const switch1 = new Switch({
+    x: 10,
+    y: 20
+})
+
+// Add the switch to a DisplayObject
+app.scene.addChild(switch1)
+ +

-

Extends

@@ -4171,6 +4930,8 @@ to display.

+ +

Members

@@ -4616,7 +5377,7 @@ to display.

diff --git a/doc/out/TextLabel.TextLabel.html b/doc/out/TextLabel.TextLabel.html index ee35550..8aaad05 100644 --- a/doc/out/TextLabel.TextLabel.html +++ b/doc/out/TextLabel.TextLabel.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@
+

Class: TextLabel

@@ -2682,11 +3425,12 @@
-
- - +
+ + +

@@ -2890,8 +3634,11 @@ + +

+ + -
@@ -2924,7 +3671,7 @@
diff --git a/doc/out/Theme.html b/doc/out/Theme.html index 9ea7bec..933ba0e 100644 --- a/doc/out/Theme.html +++ b/doc/out/Theme.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@
+

Class: Theme

@@ -2684,11 +3427,12 @@
-
- - +
+ + +

@@ -4246,14 +4990,40 @@ is used for large actived text.

-
// Create the theme
const yellow = new Theme({
    fill: 0xfecd2d,
    fillActive: 0xfe9727,
    strokeActive: 0xfecd2d,
    strokeActiveWidth: 4,
    textStyle: {
        fill: 0x5ec7f8
    },
    textStyleActive: {
        fill: 0x5954d3
    },
    textStyleLarge: {
        fontSize: 36
    }
})

// Create the app and apply the new theme to it
const app = new PIXIApp({
    view: canvas,
    width: 450,
    height: 150,
    theme: yellow
}).setup().run()
+
// Create the theme
+const yellow = new Theme({
+    fill: 0xfecd2d,
+    fillActive: 0xfe9727,
+    strokeActive: 0xfecd2d,
+    strokeActiveWidth: 4,
+    textStyle: {
+        fill: 0x5ec7f8
+    },
+    textStyleActive: {
+        fill: 0x5954d3
+    },
+    textStyleLarge: {
+        fontSize: 36
+    }
+})
+
+// Create the app and apply the new theme to it
+const app = new PIXIApp({
+    view: canvas,
+    width: 450,
+    height: 150,
+    theme: yellow
+}).setup().run()
+ +

+ + -
@@ -4448,7 +5218,7 @@ is used for large actived text.

diff --git a/doc/out/ThemeDark.html b/doc/out/ThemeDark.html index 85e310f..7f4992a 100644 --- a/doc/out/ThemeDark.html +++ b/doc/out/ThemeDark.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@
+

Class: ThemeDark

@@ -2684,11 +3427,12 @@
-
- - +
+ + +

@@ -2768,14 +3512,21 @@ -
// Create the app with a new dark theme
const app = new PIXIApp({
    view: canvas,
    width: 450,
    height: 150,
    theme: new ThemeDark()
}).setup().run()
+
// Create the app with a new dark theme
+const app = new PIXIApp({
+    view: canvas,
+    width: 450,
+    height: 150,
+    theme: new ThemeDark()
+}).setup().run()
+ +

-

Extends

@@ -2800,6 +3551,8 @@ + +
@@ -2814,7 +3567,7 @@
diff --git a/doc/out/ThemeLight.html b/doc/out/ThemeLight.html index 8ab9251..f1ffc42 100644 --- a/doc/out/ThemeLight.html +++ b/doc/out/ThemeLight.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Class: ThemeLight

@@ -2685,11 +3428,12 @@ The color1 is set to 0xf6f6f6, color2 to 0x282828.

-
- - +
+ + +

@@ -2773,14 +3517,21 @@ The color1 is set to 0xf6f6f6, color2 to 0x282828.

-
// Create the app with a new light theme
const app = new PIXIApp({
    view: canvas,
    width: 450,
    height: 150,
    theme: new ThemeLight()
}).setup().run()
+
// Create the app with a new light theme
+const app = new PIXIApp({
+    view: canvas,
+    width: 450,
+    height: 150,
+    theme: new ThemeLight()
+}).setup().run()
+ +
-

Extends

@@ -2795,6 +3546,8 @@ The color1 is set to 0xf6f6f6, color2 to 0x282828.

+ +

Classes

@@ -2826,7 +3579,7 @@ The color1 is set to 0xf6f6f6, color2 to 0x282828.

diff --git a/doc/out/ThemeRed.html b/doc/out/ThemeRed.html index a5a9c1a..4784c1c 100644 --- a/doc/out/ThemeRed.html +++ b/doc/out/ThemeRed.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Class: ThemeRed

@@ -2685,11 +3428,12 @@ The primaryColor is set to 0xd92f31.

-
- - +
+ + +

@@ -2773,14 +3517,21 @@ The primaryColor is set to 0xd92f31.

-
// Create the app with a new red theme
const app = new PIXIApp({
    view: canvas,
    width: 450,
    height: 150,
    theme: new ThemeRed()
}).setup().run()
+
// Create the app with a new red theme
+const app = new PIXIApp({
+    view: canvas,
+    width: 450,
+    height: 150,
+    theme: new ThemeRed()
+}).setup().run()
+ +
-

Extends

@@ -2795,6 +3546,8 @@ The primaryColor is set to 0xd92f31.

+ +

Classes

@@ -2826,7 +3579,7 @@ The primaryColor is set to 0xd92f31.

diff --git a/doc/out/TileQuadNode.html b/doc/out/TileQuadNode.html index e0c6164..b987b43 100644 --- a/doc/out/TileQuadNode.html +++ b/doc/out/TileQuadNode.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Class: TileQuadNode

@@ -2691,11 +3434,12 @@ the memory pressure.

-
- - +
+ + +

@@ -2880,8 +3624,11 @@ the memory pressure.

+ +
+ + -
@@ -3284,7 +4031,7 @@ an indicator of tiles to free.

diff --git a/doc/out/Tooltip.html b/doc/out/Tooltip.html index c53e8b9..660696e 100644 --- a/doc/out/Tooltip.html +++ b/doc/out/Tooltip.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Class: Tooltip

@@ -2684,11 +3427,12 @@
-
- - +
+ + +

@@ -3132,14 +3876,32 @@ -
// Create the app
const app = new PIXIApp({
    view: canvas,
    width: 900,
    height: 250
}).setup().run()

// Add an DisplayObject to the app
const circle = new PIXI.Graphics()
circle.beginFill(0x5251a3)
circle.drawCircle(50, 50, 40)
app.scene.addChild(circle)

const tooltip = new Tooltip({
    object: circle,
    container: app.scene,
    content: 'Das Gesetz ist der Freund des Schwachen.'
})
+
// Create the app
+const app = new PIXIApp({
+    view: canvas,
+    width: 900,
+    height: 250
+}).setup().run()
+
+// Add an DisplayObject to the app
+const circle = new PIXI.Graphics()
+circle.beginFill(0x5251a3)
+circle.drawCircle(50, 50, 40)
+app.scene.addChild(circle)
+
+const tooltip = new Tooltip({
+    object: circle,
+    container: app.scene,
+    content: 'Das Gesetz ist der Freund des Schwachen.'
+})
+ +

-

Extends

@@ -3158,6 +3920,8 @@ + +

Members

@@ -3729,7 +4493,7 @@ a string, a number or a PIXI.Text object.

diff --git a/doc/out/UITest.html b/doc/out/UITest.html index 0b326c2..c340f7d 100644 --- a/doc/out/UITest.html +++ b/doc/out/UITest.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@
+

Class: UITest

@@ -2684,11 +3427,12 @@
-
- - +
+ + +

@@ -2991,14 +3735,26 @@ -
// Create the UITest object
const test = new UITest({
    timeScale: 2
})

// Add an action to the test case
test.tap(button, {eventType: 'click'})

// Start the test case
test.start()
+
// Create the UITest object
+const test = new UITest({
+    timeScale: 2
+})
+
+// Add an action to the test case
+test.tap(button, {eventType: 'click'})
+
+// Start the test case
+test.start()
+ +

+ + -
@@ -5408,7 +6164,7 @@
diff --git a/doc/out/Volatile.html b/doc/out/Volatile.html index 33a4864..b1236d0 100644 --- a/doc/out/Volatile.html +++ b/doc/out/Volatile.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@
+

Class: Volatile

@@ -2684,11 +3427,12 @@
-
- - +
+ + +

@@ -3167,14 +3911,34 @@ -
const app = new PIXIApp({
    view: canvas,
    width: 900,
    height: 250
}).setup().run()

const button = new Button({
    label: 'Volatile!',
    action: () => {
        new Volatile({
            object: button,
            direction: 'right',
            destroyOnComplete: false
        })
    }
})

app.scene.addChild(button)
+
const app = new PIXIApp({
+    view: canvas,
+    width: 900,
+    height: 250
+}).setup().run()
+
+const button = new Button({
+    label: 'Volatile!',
+    action: () => {
+        new Volatile({
+            object: button,
+            direction: 'right',
+            destroyOnComplete: false
+        })
+    }
+})
+
+app.scene.addChild(button)
+ +

+ + -
@@ -3316,7 +4080,7 @@
diff --git a/doc/out/global.html b/doc/out/global.html index e1814a7..572ee60 100644 --- a/doc/out/global.html +++ b/doc/out/global.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@
+

Global

@@ -2682,13 +3425,14 @@
-
- - +
+ - + + +
@@ -2711,10 +3455,13 @@
+ + - +
+ + -
@@ -3437,150 +4184,6 @@ -
- - - - - - - - - - - - - - - - - -
-
-

- - - beforeActionCallback - - (event, switch) - - - - -

- - - - -
- - -
-
- - -
-

Callback for the switch beforeAction.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
event - - -object - - - - - -

The event object.

switch - - -Switch - - - - - -

A reference to the switch (also this refers to the switch).

- - - -
- - - - - - - - - - - - - - - - - - -
@@ -3725,6 +4328,150 @@ +
+ + + + + + + + + + + + + + + + + +
+
+

+ + + beforeActionCallback + + (event, switch) + + + + +

+ + + + +
+ + +
+
+ + +
+

Callback for the switch beforeAction.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
event + + +object + + + + + +

The event object.

switch + + +Switch + + + + + +

A reference to the switch (also this refers to the switch).

+ + + +
+ + + + + + + + + + + + + + + + + + +
@@ -4370,6 +5117,127 @@ instead of pixel values, where x represents the latitude and y the longitude.

+ + + +
+
+

+ + + onCompleteCallback + + (flippable) + + + + +

+ + + + +
+ + +
+
+ + +
+

Callback for the flippable onComplete function.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
flippable + + +Flippable + + + + + +

A reference to the flippable (also this refers to the flippable).

+ + + +
+ + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + +
@@ -4500,127 +5368,6 @@ instead of pixel values, where x represents the latitude and y the longitude.

- - - - - - - - - - - - - - - - - -
-
-

- - - onCompleteCallback - - (flippable) - - - - -

- - - - -
- - -
-
- - -
-

Callback for the flippable onComplete function.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
flippable - - -Flippable - - - - - -

A reference to the flippable (also this refers to the flippable).

- - - -
- - - - - - - - - - - - - - - - - - -
@@ -5310,7 +6057,7 @@ instead of pixel values, where x represents the latitude and y the longitude.

diff --git a/doc/out/index.html b/doc/out/index.html index 88e9a71..7713540 100644 --- a/doc/out/index.html +++ b/doc/out/index.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Index

@@ -2719,7 +3462,7 @@
diff --git a/doc/out/pixi_abstractpopup.js.html b/doc/out/pixi_abstractpopup.js.html index fad9109..b493dc8 100644 --- a/doc/out/pixi_abstractpopup.js.html +++ b/doc/out/pixi_abstractpopup.js.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Source: pixi/abstractpopup.js

@@ -3042,7 +3785,7 @@ export default class AbstractPopup extends PIXI.Graphics {
diff --git a/doc/out/pixi_app.js.html b/doc/out/pixi_app.js.html index 385f1d9..d908990 100644 --- a/doc/out/pixi_app.js.html +++ b/doc/out/pixi_app.js.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Source: pixi/app.js

@@ -3422,7 +4165,7 @@ class FpsDisplay extends PIXI.Graphics {
diff --git a/doc/out/pixi_badge.js.html b/doc/out/pixi_badge.js.html index 4da8dc4..1a05920 100644 --- a/doc/out/pixi_badge.js.html +++ b/doc/out/pixi_badge.js.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Source: pixi/badge.js

@@ -2803,7 +3546,7 @@ export default class Badge extends AbstractPopup {
diff --git a/doc/out/pixi_blurfilter.js.html b/doc/out/pixi_blurfilter.js.html index 611f806..9ec87fb 100644 --- a/doc/out/pixi_blurfilter.js.html +++ b/doc/out/pixi_blurfilter.js.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Source: pixi/blurfilter.js

@@ -2967,7 +3710,7 @@ class TiltShiftYFilter extends TiltShiftAxisFilter {
diff --git a/doc/out/pixi_button.js.html b/doc/out/pixi_button.js.html index 0a24234..0c2326c 100644 --- a/doc/out/pixi_button.js.html +++ b/doc/out/pixi_button.js.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Source: pixi/button.js

@@ -3411,7 +4154,7 @@ export default class Button extends PIXI.Container {
diff --git a/doc/out/pixi_buttongroup.js.html b/doc/out/pixi_buttongroup.js.html index f2f12b5..a6e7fda 100644 --- a/doc/out/pixi_buttongroup.js.html +++ b/doc/out/pixi_buttongroup.js.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Source: pixi/buttongroup.js

@@ -3414,7 +4157,7 @@ export default class ButtonGroup extends PIXI.Container {
diff --git a/doc/out/pixi_deepzoom_image.js.html b/doc/out/pixi_deepzoom_image.js.html index 58234a5..0830af1 100644 --- a/doc/out/pixi_deepzoom_image.js.html +++ b/doc/out/pixi_deepzoom_image.js.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Source: pixi/deepzoom/image.js

@@ -3746,7 +4489,7 @@ export class DeepZoomImage extends PIXI.Container {
diff --git a/doc/out/pixi_flippable.js.html b/doc/out/pixi_flippable.js.html index 1f9672a..0db6dd9 100644 --- a/doc/out/pixi_flippable.js.html +++ b/doc/out/pixi_flippable.js.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Source: pixi/flippable.js

@@ -3140,7 +3883,7 @@ export default class Flippable extends PIXI.projection.Camera3d {
diff --git a/doc/out/pixi_labeledgraphics.js.html b/doc/out/pixi_labeledgraphics.js.html index f14be5c..d27b656 100644 --- a/doc/out/pixi_labeledgraphics.js.html +++ b/doc/out/pixi_labeledgraphics.js.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Source: pixi/labeledgraphics.js

@@ -3089,7 +3832,7 @@ export class BitmapLabeledGraphics extends LabeledGraphics {
diff --git a/doc/out/pixi_list.js.html b/doc/out/pixi_list.js.html index 0ac6ee5..8c676c8 100644 --- a/doc/out/pixi_list.js.html +++ b/doc/out/pixi_list.js.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Source: pixi/list.js

@@ -3068,7 +3811,7 @@ export default class List extends PIXI.Container {
diff --git a/doc/out/pixi_message.js.html b/doc/out/pixi_message.js.html index b723036..1a95c1e 100644 --- a/doc/out/pixi_message.js.html +++ b/doc/out/pixi_message.js.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Source: pixi/message.js

@@ -2817,7 +3560,7 @@ export default class Message extends InteractivePopup {
diff --git a/doc/out/pixi_modal.js.html b/doc/out/pixi_modal.js.html index 4654efd..f063849 100644 --- a/doc/out/pixi_modal.js.html +++ b/doc/out/pixi_modal.js.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Source: pixi/modal.js

@@ -2898,7 +3641,7 @@ export default class Modal extends PIXI.Container {
diff --git a/doc/out/pixi_popup.js.html b/doc/out/pixi_popup.js.html index df69bd5..a7e461c 100644 --- a/doc/out/pixi_popup.js.html +++ b/doc/out/pixi_popup.js.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Source: pixi/popup.js

@@ -2908,7 +3651,7 @@ export default class Popup extends InteractivePopup {
diff --git a/doc/out/pixi_popupmenu.js.html b/doc/out/pixi_popupmenu.js.html index 1d4a93b..053e883 100644 --- a/doc/out/pixi_popupmenu.js.html +++ b/doc/out/pixi_popupmenu.js.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Source: pixi/popupmenu.js

@@ -2811,7 +3554,7 @@ export default class PopupMenu extends Popup {
diff --git a/doc/out/pixi_progress.js.html b/doc/out/pixi_progress.js.html index 2c1cce5..1f81e23 100644 --- a/doc/out/pixi_progress.js.html +++ b/doc/out/pixi_progress.js.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Source: pixi/progress.js

@@ -2993,7 +3736,7 @@ export default class Progress extends PIXI.Container {
diff --git a/doc/out/pixi_scrollview.js.html b/doc/out/pixi_scrollview.js.html index fbd7235..2895b7d 100644 --- a/doc/out/pixi_scrollview.js.html +++ b/doc/out/pixi_scrollview.js.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Source: pixi/scrollview.js

@@ -2752,7 +3495,7 @@ export default class Scrollview extends Scrollbox {
diff --git a/doc/out/pixi_slider.js.html b/doc/out/pixi_slider.js.html index 52fdc9e..cc9a259 100644 --- a/doc/out/pixi_slider.js.html +++ b/doc/out/pixi_slider.js.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Source: pixi/slider.js

@@ -3157,7 +3900,7 @@ export default class Slider extends PIXI.Container {
diff --git a/doc/out/pixi_switch.js.html b/doc/out/pixi_switch.js.html index 8b50afc..68777ad 100644 --- a/doc/out/pixi_switch.js.html +++ b/doc/out/pixi_switch.js.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Source: pixi/switch.js

@@ -3211,7 +3954,7 @@ export default class Switch extends PIXI.Container {
diff --git a/doc/out/pixi_theme.js.html b/doc/out/pixi_theme.js.html index 3ecb51c..2d4822a 100644 --- a/doc/out/pixi_theme.js.html +++ b/doc/out/pixi_theme.js.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Source: pixi/theme.js

@@ -2956,7 +3699,7 @@ export class ThemeRed extends Theme {
diff --git a/doc/out/pixi_tooltip.js.html b/doc/out/pixi_tooltip.js.html index 798a3cd..7f0dfb1 100644 --- a/doc/out/pixi_tooltip.js.html +++ b/doc/out/pixi_tooltip.js.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Source: pixi/tooltip.js

@@ -2845,7 +3588,7 @@ export default class Tooltip extends AbstractPopup {
diff --git a/doc/out/pixi_volatile.js.html b/doc/out/pixi_volatile.js.html index b015de3..b7384c6 100644 --- a/doc/out/pixi_volatile.js.html +++ b/doc/out/pixi_volatile.js.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Source: pixi/volatile.js

@@ -2849,7 +3592,7 @@ export default class Volatile {
diff --git a/doc/out/scripts/main.js b/doc/out/scripts/main.js index deb2008..19314c7 100644 --- a/doc/out/scripts/main.js +++ b/doc/out/scripts/main.js @@ -1 +1 @@ -(function(){var e=0;var a;var t=document.getElementById("source-code");if(t){var n=config.linenums;if(n){t=t.getElementsByTagName("ol")[0];a=Array.prototype.slice.apply(t.children);a=a.map(function(a){e++;a.id="line"+e})}else{t=t.getElementsByTagName("code")[0];a=t.innerHTML.split("\n");a=a.map(function(a){e++;return''+a});t.innerHTML=a.join("\n")}}})();$(function(){var e=$(".navigation");var a=e.find(".list");var t=$(".search");$("#search").on("keyup",function(t){var n=this.value.trim();if(n){var s=new RegExp(n,"i");e.addClass("searching").removeClass("not-searching").find("li, .itemMembers").removeClass("match");e.find("li").each(function(e,a){var t=$(a);if(t.data("name")&&s.test(t.data("name"))){t.addClass("match");t.closest(".itemMembers").addClass("match");t.closest(".item").addClass("match")}})}else{e.removeClass("searching").addClass("not-searching").find(".item, .itemMembers").removeClass("match")}a.scrollTop(0)});$("#menuToggle").click(function(){a.toggleClass("show");t.toggleClass("show")});e.addClass("not-searching");var n=$(".page-title").data("filename").replace(/\.[a-z]+$/,"");var s=e.find('.item[data-name*="'+n+'"]:eq(0)');if(s.length){s.remove().prependTo(a).addClass("current")}if(config.disqus){$(window).on("load",function(){var e=config.disqus;var a=document.createElement("script");a.type="text/javascript";a.async=true;a.src="http://"+e+".disqus.com/embed.js";(document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0]).appendChild(a);var t=document.createElement("script");t.async=true;t.type="text/javascript";t.src="http://"+e+".disqus.com/count.js";document.getElementsByTagName("BODY")[0].appendChild(t)})}}); \ No newline at end of file +(function(){var e=0;var a;var t=document.getElementById("source-code");if(t){var n=config.linenums;if(n){t=t.getElementsByTagName("ol")[0];a=Array.prototype.slice.apply(t.children);a=a.map(function(a){e++;a.id="line"+e})}else{t=t.getElementsByTagName("code")[0];a=t.innerHTML.split("\n");a=a.map(function(a){e++;return''+a});t.innerHTML=a.join("\n")}}})();$(function(){var e=$(".navigation");var a=e.find(".list");var t=$(".search");$("#search").on("keyup",function(t){var n=this.value.trim();if(n){var s=new RegExp(n,"i");e.addClass("searching").removeClass("not-searching").find("li, .itemMembers").removeClass("match");e.find("li").each(function(e,a){var t=$(a);if(t.data("name")&&s.test(t.data("name"))){t.addClass("match");t.closest(".itemMembers").addClass("match");t.closest(".item").addClass("match")}})}else{e.removeClass("searching").addClass("not-searching").find(".item, .itemMembers").removeClass("match")}a.scrollTop(0)});$("#menuToggle").click(function(){a.toggleClass("show");t.toggleClass("show")});e.addClass("not-searching");var n=$(".page-title").data("filename").replace(/\.[a-z]+$/,"");var s=e.find('a[href*="'+n+'"]:eq(0)').closest(".item");if(s.length){if(s.parents(".children").length){s.addClass("current");s.find("li.item").addClass("notCurrent");s=s.parents("ul.list>li.item")}s.remove().prependTo(a).addClass("current")}if(config.disqus){$(window).on("load",function(){var e=config.disqus;var a=document.createElement("script");a.type="text/javascript";a.async=true;a.src="http://"+e+".disqus.com/embed.js";(document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0]).appendChild(a);var t=document.createElement("script");t.async=true;t.type="text/javascript";t.src="http://"+e+".disqus.com/count.js";document.getElementsByTagName("BODY")[0].appendChild(t)})}}); \ No newline at end of file diff --git a/doc/out/styles/main.css b/doc/out/styles/main.css index fd8028b..0b817b1 100644 --- a/doc/out/styles/main.css +++ b/doc/out/styles/main.css @@ -1 +1 @@ -body,html{font-family:'Libre Franklin',sans-serif;background-color:#ecedf1;color:#333}ol,ul{margin:0;padding:0}li{list-style-type:none}#wrap{position:relative}.list::-webkit-scrollbar{width:8px;background-color:transparent}.list::-webkit-scrollbar-thumb{background-color:#647086;border-radius:4px}.navigation{position:fixed;overflow:hidden;min-width:250px;width:25%;top:0;left:0;bottom:0;background-color:#272d37}.navigation .menu-toggle{display:none}@media screen and (max-width:768px){.navigation{left:0;position:relative;width:100%;overflow:auto}.navigation .list,.navigation .search{display:none}.navigation .list.show,.navigation .search.show{display:block;position:static}.navigation .menu-toggle{display:block;position:absolute;top:10px;right:10px}}.navigation .applicationName{margin:0;padding:20px;font-weight:700;white-space:nowrap;color:#fff}.navigation .applicationName a{color:#fff}.navigation .search{padding:0 20px}.navigation .search input{background-color:#14171d;color:#fff;border-color:#3d495a}.navigation .list{padding:20px;position:absolute;overflow:auto;-webkit-overflow-scrolling:touch;width:100%;top:100px;bottom:0}.navigation li.item{margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid #3d495a;overflow:hidden}.navigation li.item a{color:#647086}.navigation li.item a:hover{color:#fff}.navigation li.item .title{display:block}.navigation li.item .title a{display:block;color:#cfd4db}.navigation li.item .title a:hover{color:#fff}.navigation li.item .title.namespace a{color:#fff}.navigation li.item .title .namespaceTag{display:inline-block;border-radius:3px;background-color:#c2185b;color:#fff;font-size:70%;padding:2px 6px;float:left;margin-right:10px;pointer-events:none}.navigation li.item .subtitle{margin:10px 0;font-weight:700;color:#c2185b;display:block;letter-spacing:.05em}.navigation li.item ul>li{padding-left:10px;font-size:.9em}.navigation li.item .itemMembers li.parent a{color:#a9b3c3}.navigation .item,.navigation .itemMembers,.navigation .itemMembers li{display:none}.navigation.not-searching .item{display:block}.navigation.not-searching .item.current .itemMembers,.navigation.not-searching .item.current .itemMembers li{display:block}.navigation.searching .item.match{display:block}.navigation.searching .item.match .itemMembers li.match,.navigation.searching .item.match .itemMembers.match{display:block}.content-size{max-width:1000px;min-width:300px;margin-left:auto;margin-right:auto}.status-deprecated{text-decoration:line-through;opacity:.4}.status-deprecated a,.status-deprecated:hover{text-decoration:none}.main{left:25%;position:fixed;height:100%;right:0;overflow:auto;-webkit-overflow-scrolling:touch;word-break:break-word}.main .summary-list dt{width:100%;margin-bottom:4px;float:left;font-size:110%}@media screen and (min-width:768px){.main .summary-list dt{width:50%}}@media screen and (min-width:991px){.main .summary-list dt{width:33.33%}}@media screen and (min-width:1200px){.main .summary-list dt{width:25%}}@media screen and (max-width:1000px){.main{left:250px}}@media screen and (max-width:768px){.main{left:0;position:static}}.main img{max-width:100%}.main article{padding:20px}.main header{background:#fff}.main header .class-description{font-size:120%}.main header .header{padding:20px}.main header .header h2{font-weight:700}.main .page-title{display:none}.main .access-signature{font-weight:400;display:inline-block;border-radius:3px;background-color:#79859a;color:#fff;font-size:.7em;padding:2px 6px;margin-left:6px}.main .access-signature.deprecated{background-color:#e91e63;font-weight:700}.main .access-signature.deprecated .deprecated-info{font-weight:400;margin-left:5px}.main .access-signature a{color:#fff}.main h4.name .type-signature{font-weight:400;font-size:.8em;color:#79859a}.main h4.name .type-signature:before{content:' : ';opacity:.6}.main h4.name .return-symbol{margin:0 6px;color:#79859a;font-size:80%}.main h4.name .share-icon{font-size:70%;color:#79859a}.main .subsection-title{color:#e91e63}.main .description{margin-top:10px}.main .description ol,.main .description ul{margin-bottom:15px}.main .description h2{font-weight:700;margin-top:30px;margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid #efefef}.main .description pre{margin:10px 0}.main .tag-source{font-size:85%}.main dt.tag-source{margin-top:5px}.main dt.tag-default{color:#79859a}.main .nameContainer{position:relative}.main .nameContainer .tag-source{position:absolute;top:0;right:0;padding:2px 6px;border-bottom-left-radius:4px;border-bottom-right-radius:4px;background-color:#b3b7c3}.main .nameContainer .tag-source a{color:#fff;font-weight:400}.main .nameContainer h4{font-weight:700;padding:20px 0 0;border-top:1px solid #c8c9cc}.main .nameContainer h4 .signature{font-weight:400;font-size:.8em;padding-left:.4em}.main table{width:100%;margin-bottom:15px;margin-top:5px}.main table th{padding:3px 3px;color:#fff;font-weight:400;background:#79859a}.main table td{vertical-align:top;padding:5px 3px;word-break:normal}.main table tbody tr:nth-child(odd){background-color:#fff}.main table tbody tr:nth-child(even){background-color:#f5f5fb}.main table .type{color:#79859a}.main table .attributes{color:#79859a}.main table .description p{margin:0}.main table .optional{float:left;border-radius:3px;background-color:#b3b7c3;padding:2px 4px;margin-right:5px;color:#fff;font-size:80%}.main .readme p{margin-top:15px}.main .readme h1{font-weight:700}.main .readme h2{font-weight:700;margin-top:30px;margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid #79859a}.main .readme h3{color:#e91e63}.main .readme li{margin-bottom:10px}.main article ol,.main article ul{margin-left:25px}.main article ol>li{list-style-type:decimal;margin-bottom:5px}.main article ul>li{margin-bottom:5px;list-style-type:disc}.footer{margin:0 20px 20px;padding-top:20px;text-align:right;font-size:.9em;color:#79859a;border-top:1px solid #c8c9cc} \ No newline at end of file +body,html{font-family:'Libre Franklin',sans-serif;background-color:#ecedf1;color:#333}ol,ul{margin:0;padding:0}li{list-style-type:none}#wrap{position:relative}.list::-webkit-scrollbar{width:8px;background-color:transparent}.list::-webkit-scrollbar-thumb{background-color:#647086;border-radius:4px}.navigation{position:fixed;overflow:hidden;min-width:250px;width:25%;top:0;left:0;bottom:0;background-color:#272d37}.navigation .menu-toggle{display:none}@media screen and (max-width:768px){.navigation{left:0;position:relative;width:100%;overflow:auto}.navigation .list,.navigation .search{display:none}.navigation .list.show,.navigation .search.show{display:block;position:static}.navigation .menu-toggle{display:block;position:absolute;top:10px;right:10px}}.navigation .applicationName{margin:0;padding:20px;font-weight:700;white-space:nowrap;color:#fff}.navigation .applicationName a{color:#fff}.navigation .search{padding:0 20px}.navigation .search input{background-color:#14171d;color:#fff;border-color:#3d495a}.navigation .list{padding:20px;position:absolute;overflow:auto;-webkit-overflow-scrolling:touch;width:100%;top:100px;bottom:0}.navigation li.item{margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid #3d495a;overflow:hidden}.navigation li.item a{color:#647086}.navigation li.item a:hover{color:#fff}.navigation li.item .title{display:block}.navigation li.item .title a{display:block;color:#cfd4db}.navigation li.item .title a:hover{color:#fff}.navigation li.item .title.namespace a{color:#fff}.navigation li.item .title .namespaceTag{display:inline-block;border-radius:3px;background-color:#c2185b;color:#fff;font-size:70%;padding:2px 6px;float:left;margin-right:10px;pointer-events:none}.navigation li.item .subtitle{margin:10px 0;font-weight:700;color:#c2185b;display:block;letter-spacing:.05em}.navigation li.item ul>li{padding-left:10px;font-size:.9em}.navigation li.item .itemMembers li.parent a{color:#a9b3c3}.navigation .children li.item{border-bottom:none;padding-bottom:0}.navigation .children li.notCurrent{font-weight:400}.navigation .children li.current{font-weight:700}.navigation .item,.navigation .itemMembers,.navigation .itemMembers li{display:none}.navigation.not-searching .item{display:block}.navigation.not-searching .item.current .itemMembers,.navigation.not-searching .item.current .itemMembers li{display:block}.navigation.searching .item.match{display:block}.navigation.searching .item.match .itemMembers li.match,.navigation.searching .item.match .itemMembers.match{display:block}.content-size{max-width:1000px;min-width:300px;margin-left:auto;margin-right:auto}.status-deprecated{text-decoration:line-through;opacity:.4}.status-deprecated a,.status-deprecated:hover{text-decoration:none}.main{left:25%;position:fixed;height:100%;right:0;overflow:auto;-webkit-overflow-scrolling:touch;word-break:break-word}.main .summary-list dt{width:100%;margin-bottom:4px;float:left;font-size:110%}@media screen and (min-width:768px){.main .summary-list dt{width:50%}}@media screen and (min-width:991px){.main .summary-list dt{width:33.33%}}@media screen and (min-width:1200px){.main .summary-list dt{width:25%}}@media screen and (max-width:1000px){.main{left:250px}}@media screen and (max-width:768px){.main{left:0;position:static}}.main img{max-width:100%}.main article{padding:20px}.main header{background:#fff}.main header .class-description{font-size:120%}.main header .header{padding:20px}.main header .header h2{font-weight:700}.main .page-title{display:none}.main .access-signature{font-weight:400;display:inline-block;border-radius:3px;background-color:#79859a;color:#fff;font-size:.7em;padding:2px 6px;margin-left:6px}.main .access-signature.deprecated{background-color:#e91e63;font-weight:700}.main .access-signature.deprecated .deprecated-info{font-weight:400;margin-left:5px}.main .access-signature a{color:#fff}.main h4.name .type-signature{font-weight:400;font-size:.8em;color:#79859a}.main h4.name .type-signature:before{content:' : ';opacity:.6}.main h4.name .return-symbol{margin:0 6px;color:#79859a;font-size:80%}.main h4.name .share-icon{font-size:70%;color:#79859a}.main .subsection-title{color:#e91e63}.main .description{margin-top:10px}.main .description ol,.main .description ul{margin-bottom:15px}.main .description h2{font-weight:700;margin-top:30px;margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid #efefef}.main .description pre{margin:10px 0}.main .tag-source{font-size:85%}.main dt.tag-source{margin-top:5px}.main dt.tag-default{color:#79859a}.main .nameContainer{position:relative}.main .nameContainer .tag-source{position:absolute;top:0;right:0;padding:2px 6px;border-bottom-left-radius:4px;border-bottom-right-radius:4px;background-color:#b3b7c3}.main .nameContainer .tag-source a{color:#fff;font-weight:400}.main .nameContainer h4{font-weight:700;padding:20px 0 0;border-top:1px solid #c8c9cc}.main .nameContainer h4 .signature{font-weight:400;font-size:.8em;padding-left:.4em}.main table{width:100%;margin-bottom:15px;margin-top:5px}.main table th{padding:3px 3px;color:#fff;font-weight:400;background:#79859a}.main table td{vertical-align:top;padding:5px 3px;word-break:normal}.main table tbody tr:nth-child(odd){background-color:#fff}.main table tbody tr:nth-child(even){background-color:#f5f5fb}.main table .type{color:#79859a}.main table .attributes{color:#79859a}.main table .description p{margin:0}.main table .optional{float:left;border-radius:3px;background-color:#b3b7c3;padding:2px 4px;margin-right:5px;color:#fff;font-size:80%}.main .readme p{margin-top:15px}.main .readme h1{font-weight:700}.main .readme h2{font-weight:700;margin-top:30px;margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid #79859a}.main .readme h3{color:#e91e63}.main .readme li{margin-bottom:10px}.main article ol,.main article ul{margin-left:25px}.main article ol>li{list-style-type:decimal;margin-bottom:5px}.main article ul>li{margin-bottom:5px;list-style-type:disc}.footer{margin:0 20px 20px;padding-top:20px;text-align:right;font-size:.9em;color:#79859a;border-top:1px solid #c8c9cc} \ No newline at end of file diff --git a/doc/out/uitest.js.html b/doc/out/uitest.js.html index c25c73a..f63bb24 100644 --- a/doc/out/uitest.js.html +++ b/doc/out/uitest.js.html @@ -8,6 +8,7 @@ + @@ -47,6 +48,7 @@ +

Source: uitest.js

@@ -3700,7 +4443,7 @@ class Event {
diff --git a/package-lock.json b/package-lock.json index 2e28549..eba76d5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1247,9 +1247,9 @@ } }, "@pixi/jsdoc-template": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@pixi/jsdoc-template/-/jsdoc-template-2.4.3.tgz", - "integrity": "sha512-fnrQdFfA1sQHC8Grbx20cQIXeQIJ4VskBpbHaCdROiRi3nVQhRJjG4Vs0GxzmYiS4xMLGRVrZgNltXHs1nusvA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@pixi/jsdoc-template/-/jsdoc-template-2.5.1.tgz", + "integrity": "sha512-Mi9pM4fhIjAGUWmjqbG2pV5lR1i1JdC0cRHLHuza+vxHXuKJYfNnBSFU7ZWhuSSKrEGcIvuMe8oc9JSFDjTVXg==", "dev": true, "requires": { "taffydb": "^2.7.2", @@ -2477,12 +2477,12 @@ } }, "ansi-escapes": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.2.1.tgz", - "integrity": "sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", + "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", "dev": true, "requires": { - "type-fest": "^0.5.2" + "type-fest": "^0.8.1" } }, "ansi-gray": { @@ -3846,9 +3846,9 @@ "dev": true }, "eslint": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.6.0.tgz", - "integrity": "sha512-PpEBq7b6qY/qrOmpYQ/jTMDYfuQMELR4g4WI1M/NaSDDD/bdcMb+dj4Hgks7p41kW2caXsPsEZAEAyAgjVVC0g==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -3866,7 +3866,7 @@ "file-entry-cache": "^5.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", - "globals": "^11.7.0", + "globals": "^12.1.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -3879,7 +3879,7 @@ "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "optionator": "^0.8.2", + "optionator": "^0.8.3", "progress": "^2.0.0", "regexpp": "^2.0.1", "semver": "^6.1.2", @@ -3914,6 +3914,15 @@ "is-glob": "^4.0.1" } }, + "globals": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", + "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -3944,18 +3953,18 @@ } }, "eslint-config-prettier": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.5.0.tgz", - "integrity": "sha512-cjXp8SbO9VFGW/Z7mbTydqS9to8Z58E5aYhj3e1+Hx7lS9s6gL5ILKNpCqZAFOVYRcSkWPFYljHrEh8QFEK5EQ==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.9.0.tgz", + "integrity": "sha512-k4E14HBtcLv0uqThaI6I/n1LEqROp8XaPu6SO9Z32u5NlGRC07Enu1Bh2KEFw4FNHbekH8yzbIU9kUGxbiGmCA==", "dev": true, "requires": { "get-stdin": "^6.0.0" } }, "eslint-plugin-prettier": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.1.tgz", - "integrity": "sha512-A+TZuHZ0KU0cnn56/9mfR7/KjUJ9QNVXUhwvRFSR7PGPe0zQR6PTkmyqg1AtUUEOzTqeRsUwyKFh0oVZKVCrtA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz", + "integrity": "sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" @@ -5591,9 +5600,9 @@ "dev": true }, "import-fresh": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", - "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -5647,9 +5656,9 @@ "dev": true }, "inquirer": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz", - "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.3.tgz", + "integrity": "sha512-+OiOVeVydu4hnCGLCSX+wedovR/Yzskv9BFqUNNKq9uU2qg7LCcCo3R86S2E7WLo0y/x2pnEZfZe1CoYnORUAw==", "dev": true, "requires": { "ansi-escapes": "^4.2.1", @@ -5661,16 +5670,16 @@ "lodash": "^4.17.15", "mute-stream": "0.0.8", "run-async": "^2.2.0", - "rxjs": "^6.4.0", + "rxjs": "^6.5.3", "string-width": "^4.1.0", "strip-ansi": "^5.1.0", "through": "^2.3.6" }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, "is-fullwidth-code-point": { @@ -5686,14 +5695,25 @@ "dev": true }, "string-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.1.0.tgz", - "integrity": "sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^5.2.0" + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } } }, "strip-ansi": { @@ -5703,6 +5723,14 @@ "dev": true, "requires": { "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } } } } @@ -6981,17 +7009,17 @@ "integrity": "sha1-R959p6ObsJSf2a9UxvA1cVSPBMk=" }, "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, "requires": { "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", + "fast-levenshtein": "~2.0.6", "levn": "~0.3.0", "prelude-ls": "~1.1.2", "type-check": "~0.3.2", - "wordwrap": "~1.0.0" + "word-wrap": "~1.2.3" } }, "ordered-read-streams": { @@ -7312,14 +7340,14 @@ "integrity": "sha512-20aNuzrKtkpZZA8m4+fp56RwZMPaWnRkoTGPr6U+35XyRJoGlH13adSLiknL3TU0FGmGHKUw4fYAhn41Ujq3xQ==" }, "pixi-projection": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/pixi-projection/-/pixi-projection-0.3.5.tgz", - "integrity": "sha512-bvZgRGjdEJWHGNLw1v625wmeJLn/V0vu6nP4eGWsRVvGR24ipBDaMqpaO0p9yhjH7kt8yEGdKsoAkOVvD6bp4Q==" + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/pixi-projection/-/pixi-projection-0.3.6.tgz", + "integrity": "sha512-axYrewKMBJ9EjA9GlcbkZCnlq4LQRjRnHjJ9tprFWlpVzMrzZBY2tkzipwZhVb85AQVjwpWQH2koistJDWACwQ==" }, "pixi-viewport": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/pixi-viewport/-/pixi-viewport-4.3.3.tgz", - "integrity": "sha512-avoqY32QyVpycdoVT3LtEaJQ7n+je42cEyxuoKPdL2cSOkWhal1gyBgl5SynWUuztp2fbEtjiSadVPOK4eUWKg==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/pixi-viewport/-/pixi-viewport-4.5.0.tgz", + "integrity": "sha512-lIOkaa2iv6XNrX7+TA3q+ixdJE4bz4bDLwoX15/N5eYdWHqq+bmQVG/pmhvcqgo1XFyTvuB1QziCUAfSWVMUYg==", "requires": { "penner": "^0.1.3" } @@ -8093,9 +8121,9 @@ } }, "rxjs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -9020,9 +9048,9 @@ } }, "type-fest": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz", - "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true }, "typedarray": { @@ -9056,9 +9084,9 @@ "dev": true }, "underscore": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", - "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.2.tgz", + "integrity": "sha512-D39qtimx0c1fI3ya1Lnhk3E9nONswSKhnffBI0gME9C99fYOkNi04xs8K6pePLhvl1frbDemkaBQ5ikWllR2HQ==", "dev": true }, "undertaker": { @@ -9465,10 +9493,10 @@ "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", "dev": true }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, "wrap-ansi": { diff --git a/package.json b/package.json index faf3708..267db08 100644 --- a/package.json +++ b/package.json @@ -27,10 +27,10 @@ "author": "", "license": "LGPL-3.0-or-later", "devDependencies": { - "@pixi/jsdoc-template": "^2.4.3", - "eslint": "^6.6.0", - "eslint-config-prettier": "^6.5.0", - "eslint-plugin-prettier": "^3.1.1", + "@pixi/jsdoc-template": "^2.5.1", + "eslint": "^6.8.0", + "eslint-config-prettier": "^6.9.0", + "eslint-plugin-prettier": "^3.1.2", "fs-extra": "^8.0.1", "gulp": "^4.0.2", "gulp-concat": "^2.6.1", @@ -52,8 +52,8 @@ "pixi-ease": "^2.4.2", "pixi-filters": "^3.0.3", "pixi-particles": "^4.2.0", - "pixi-projection": "^0.3.5", - "pixi-viewport": "^4.3.3", + "pixi-projection": "^0.3.6", + "pixi-viewport": "^4.5.0", "pixi.js": "^5.2.0", "propagating-hammerjs": "^1.4.7" }