<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">var Laya = window.Laya = function(t, e) {
    var i = {
        __internals: [],
        __packages: {},
        __classmap: {
            Object: Object,
            Function: Function,
            Array: Array,
            String: String
        },
        __sysClass: {
            object: "Object",
            array: "Array",
            string: "String",
            dictionary: "Dictionary"
        },
        __propun: {
            writable: !0,
            enumerable: !1,
            configurable: !0
        },
        __presubstr: String.prototype.substr,
        __substr: function(t, e) {
            return 1 == arguments.length ? i.__presubstr.call(this, t) : i.__presubstr.call(this, t, e &gt; 0 ? e : this.length + e);
        },
        __init: function(t) {
            t.forEach(function(t) {
                t.__init$ &amp;&amp; t.__init$();
            });
        },
        __isClass: function(t) {
            return t &amp;&amp; (t.__isclass || t == Object || t == String || t == Array);
        },
        __newvec: function(t, e) {
            var i = [];
            i.length = t;
            for (var n = 0; n &lt; t; n++) i[n] = e;
            return i;
        },
        __extend: function(t, e) {
            function n() {
                i.un(this, "constructor", t);
            }
            for (var r in e) if (e.hasOwnProperty(r)) {
                var s = Object.getOwnPropertyDescriptor(e, r), a = s.get, o = s.set;
                a || o ? a &amp;&amp; o ? Object.defineProperty(t, r, s) : (a &amp;&amp; Object.defineProperty(t, r, a), 
                o &amp;&amp; Object.defineProperty(t, r, o)) : t[r] = e[r];
            }
            n.prototype = e.prototype, t.prototype = new n(), i.un(t.prototype, "__imps", i.__copy({}, e.prototype.__imps));
        },
        __copy: function(t, e) {
            if (!e) return null;
            t = t || {};
            for (var i in e) t[i] = e[i];
            return t;
        },
        __package: function(e, n) {
            if (!i.__packages[e]) {
                i.__packages[e] = !0;
                var r = t, s = e.split(".");
                if (s.length &gt; 1) for (var a = 0, o = s.length - 1; a &lt; o; a++) {
                    r = r[s[a]] || (r[s[a]] = {});
                }
                r[s[s.length - 1]] || (r[s[s.length - 1]] = n || {});
            }
        },
        __hasOwnProperty: function(t, e) {
            function i(t, e) {
                if (Object.hasOwnProperty.call(e.prototype, t)) return !0;
                var n = e.prototype.__super;
                return null == n ? null : i(t, n);
            }
            return e = e || this, Object.hasOwnProperty.call(e, t) || i(t, e.__class);
        },
        __typeof: function(t, e) {
            if (!t || !e) return !1;
            if (e === String) return "string" == typeof t;
            if (e === Number) return "number" == typeof t;
            if (e.__interface__) e = e.__interface__; else if ("string" != typeof e) return t instanceof e;
            return t.__imps &amp;&amp; t.__imps[e] || t.__class == e;
        },
        __as: function(t, e) {
            return this.__typeof(t, e) ? t : null;
        },
        __int: function(t) {
            return t ? parseInt(t) : 0;
        },
        interface: function(e, n) {
            i.__package(e, {});
            var r = i.__internals, s = r[e] = r[e] || {
                self: e
            };
            if (n) {
                var a = n.split(",");
                for (s.extend = [], u = 0; u &lt; a.length; u++) {
                    var o = a[u];
                    r[o] = r[o] || {
                        self: o
                    }, s.extend.push(r[o]);
                }
            }
            for (var h = t, l = e.split("."), u = 0; u &lt; l.length - 1; u++) h = h[l[u]];
            h[l[l.length - 1]] = {
                __interface__: e
            };
        },
        class: function(e, n, r, s) {
            if (r &amp;&amp; i.__extend(e, r), n) if (i.__package(n, e), i.__classmap[n] = e, n.indexOf(".") &gt; 0) {
                if (0 == n.indexOf("laya.")) {
                    var a = n.split(".");
                    s = s || a[a.length - 1], i[s] &amp;&amp; console.log("Warning!,this class[" + s + "] already exist:", i[s]), 
                    i[s] = e;
                }
            } else "Main" == n ? t.Main = e : (i[n] &amp;&amp; console.log("Error!,this class[" + n + "] already exist:", i[n]), 
            i[n] = e);
            var o = i.un, h = e.prototype;
            o(h, "hasOwnProperty", i.__hasOwnProperty), o(h, "__class", e), o(h, "__super", r), 
            o(h, "__className", n), o(e, "__super", r), o(e, "__className", n), o(e, "__isclass", !0), 
            o(e, "super", function(t) {
                this.__super.call(t);
            });
        },
        imps: function(t, e) {
            function n(t) {
                var e, s;
                if ((e = i.__internals[t]) &amp;&amp; (r[t] = !0, s = e.extend)) for (var a = 0; a &lt; s.length; a++) n(s[a].self);
            }
            if (!e) return null;
            var r = t.__imps || i.un(t, "__imps", {});
            for (var s in e) n(s);
        },
        superSet: function(t, e, i, n) {
            var r = t.prototype["_$set_" + i];
            r &amp;&amp; r.call(e, n);
        },
        superGet: function(t, e, i) {
            var n = t.prototype["_$get_" + i];
            return n ? n.call(e) : null;
        },
        getset: function(t, e, n, r, s) {
            t ? (r &amp;&amp; (e["_$GET_" + n] = r), s &amp;&amp; (e["_$SET_" + n] = s)) : (r &amp;&amp; i.un(e, "_$get_" + n, r), 
            s &amp;&amp; i.un(e, "_$set_" + n, s)), r &amp;&amp; s ? Object.defineProperty(e, n, {
                get: r,
                set: s,
                enumerable: !1,
                configurable: !0
            }) : (r &amp;&amp; Object.defineProperty(e, n, {
                get: r,
                enumerable: !1,
                configurable: !0
            }), s &amp;&amp; Object.defineProperty(e, n, {
                set: s,
                enumerable: !1,
                configurable: !0
            }));
        },
        static: function(t, e) {
            for (var i = 0, n = e.length; i &lt; n; i += 2) "length" == e[i] ? t.length = e[i + 1].call(t) : function() {
                var n = e[i], r = e[i + 1];
                Object.defineProperty(t, n, {
                    get: function() {
                        return delete this[n], this[n] = r.call(this);
                    },
                    set: function(t) {
                        delete this[n], this[n] = t;
                    },
                    enumerable: !0,
                    configurable: !0
                });
            }();
        },
        un: function(t, e, n) {
            return n || (n = t[e]), i.__propun.value = n, Object.defineProperty(t, e, i.__propun), 
            n;
        },
        uns: function(t, e) {
            e.forEach(function(e) {
                i.un(t, e);
            });
        }
    };
    return t.console = t.console || {
        log: function() {}
    }, t.trace = t.console.log, Error.prototype.throwError = function() {
        throw arguments;
    }, Object.defineProperty(Array.prototype, "fixed", {
        enumerable: !1
    }), i;
}(window, document);

!function(t, e, i) {
    i.un, i.uns, i.static, i.class, i.getset, i.__newvec;
}(window, document, Laya), function(t, e, i) {
    i.un, i.uns;
    var n = i.static, r = i.class, s = i.getset;
    i.__newvec, i.interface("laya.filters.IFilter"), i.interface("laya.resource.IDispose"), 
    i.interface("laya.resource.IDestroy"), i.interface("laya.webgl.submit.ISubmit"), 
    i.interface("laya.resource.ICreateResource"), i.interface("laya.webgl.canvas.save.ISaveData"), 
    i.interface("laya.resource.ISingletonElement"), s(1, i, "alertGlobalError", null, function(t) {
        var e = 0;
        Dt.window.onerror = t ? function(t, i, n, r, s) {
            e++ &lt; 5 &amp;&amp; s &amp;&amp; alert("å‡ºé”™å•¦ï¼Œè¯·æŠŠæ­¤ä¿¡æ¯æˆªå›¾ç»™ç&nbsp;”å‘å•†\n" + t + "\n" + s.stack);
        } : null;
    }), i.init = function(e, n, r) {
        for (var s = [], a = 2, o = arguments.length; a &lt; o; a++) s.push(arguments[a]);
        if (!i._isinit) {
            i._isinit = !0, ArrayBuffer.prototype.slice || (ArrayBuffer.prototype.slice = i._arrayBufferSlice), 
            Dt.__init__(), i.systemTimer = new J(!1), i.startTimer = new J(!1), i.physicsTimer = new J(!1), 
            i.updateTimer = new J(!1), i.lateTimer = new J(!1), i.timer = new J(!1), i.loader = new Ne(), 
            Ct.__init__(), wt.inner_enable();
            for (var a = 0, h = s.length; a &lt; h; a++) s[a] &amp;&amp; s[a].enable &amp;&amp; s[a].enable();
            return Mt.isConchApp &amp;&amp; ue.enableNative(), Q.beginCheck(), i._currentStage = i.stage = new ai(), 
            q.rootPath = q._basePath = i._getUrlPath(), i.render = new Mt(0, 0), i.stage.size(e, n), 
            t.stage = i.stage, I.__init__(), gt.__init__(), S.instance.__init__(i.stage, Mt.canvas), 
            li.__init__(), ye.autoStopMusic = !0, Mt.canvas;
        }
    }, i._getUrlPath = function() {
        var t = Dt.window.location, e = t.pathname;
        return e = ":" == e.charAt(2) ? e.substring(1) : e, q.getPath("file:" == t.protocol ? e : t.protocol + "//" + t.host + t.pathname);
    }, i._arrayBufferSlice = function(t, e) {
        var i = new Uint8Array(this, t, e - t), n = new Uint8Array(i.length);
        return n.set(i), n.buffer;
    }, i._runScript = function(t) {
        return Dt.window[i._evcode](t);
    }, i.enableDebugPanel = function(t) {
        if (void 0 === t &amp;&amp; (t = "libs/laya.debugtool.js"), i.DebugPanel) i.DebugPanel.enable(); else {
            var e = Dt.createElement("script");
            e.onload = function() {
                i.DebugPanel.enable();
            }, e.src = t, Dt.document.body.appendChild(e);
        }
    }, i.stage = null, i.systemTimer = null, i.startTimer = null, i.physicsTimer = null, 
    i.updateTimer = null, i.lateTimer = null, i.timer = null, i.loader = null, i.version = "2.1.0beta", 
    i.render = null, i._currentStage = null, i._isinit = !1, i.isWXOpenDataContext = !1, 
    i.isWXPosMsg = !1, n(i, [ "_evcode", function() {
        return this._evcode = "eval";
    } ]);
    var a = function() {
        function t() {}
        return r(t, "laya.renders.LayaGLQuickRunner"), t.__init__ = function() {
            t.map[515] = t.alpha_transform_drawLayaGL, t.map[513] = t.alpha_drawLayaGL, t.map[514] = t.transform_drawLayaGL, 
            t.map[8194] = t.transform_drawNodes, t.map[259] = t.alpha_transform_drawTexture, 
            t.map[257] = t.alpha_drawTexture, t.map[258] = t.transform_drawTexture, t.map[8704] = t.drawLayaGL_drawNodes;
        }, t.transform_drawTexture = function(e, i, n, r) {
            e._style;
            var s = e.texture;
            i.saveTransform(t.curMat), i.transformByMatrix(e.transform, n, r), i.drawTexture(s, -e.pivotX, -e.pivotY, e._width || s.width, e._height || s.height), 
            i.restoreTransform(t.curMat);
        }, t.alpha_drawTexture = function(t, e, i, n) {
            var r = t._style, s = NaN, a = t.texture;
            if ((s = r.alpha) &gt; .01 || t._needRepaint()) {
                var o = e.globalAlpha;
                e.globalAlpha *= s, e.drawTexture(a, i - r.pivotX + a.offsetX, n - r.pivotY + a.offsetY, t._width || a.width, t._height || a.height), 
                e.globalAlpha = o;
            }
        }, t.alpha_transform_drawTexture = function(e, i, n, r) {
            var s = e._style, a = NaN, o = e.texture;
            if ((a = s.alpha) &gt; .01 || e._needRepaint()) {
                var h = i.globalAlpha;
                i.globalAlpha *= a, i.saveTransform(t.curMat), i.transformByMatrix(e.transform, n, r), 
                i.drawTexture(o, -s.pivotX + o.offsetX, -s.pivotY + o.offsetY, e._width || o.width, e._height || o.height), 
                i.restoreTransform(t.curMat), i.globalAlpha = h;
            }
        }, t.alpha_transform_drawLayaGL = function(e, i, n, r) {
            var s = e._style, a = NaN;
            if ((a = s.alpha) &gt; .01 || e._needRepaint()) {
                var o = i.globalAlpha;
                i.globalAlpha *= a, i.saveTransform(t.curMat), i.transformByMatrix(e.transform, n, r), 
                e._graphics &amp;&amp; e._graphics._render(e, i, -s.pivotX, -s.pivotY), i.restoreTransform(t.curMat), 
                i.globalAlpha = o;
            }
        }, t.alpha_drawLayaGL = function(t, e, i, n) {
            var r = t._style, s = NaN;
            if ((s = r.alpha) &gt; .01 || t._needRepaint()) {
                var a = e.globalAlpha;
                e.globalAlpha *= s, t._graphics &amp;&amp; t._graphics._render(t, e, i - r.pivotX, n - r.pivotY), 
                e.globalAlpha = a;
            }
        }, t.transform_drawLayaGL = function(e, i, n, r) {
            var s = e._style;
            i.saveTransform(t.curMat), i.transformByMatrix(e.transform, n, r), e._graphics &amp;&amp; e._graphics._render(e, i, -s.pivotX, -s.pivotY), 
            i.restoreTransform(t.curMat);
        }, t.transform_drawNodes = function(e, i, n, r) {
            var s = e._getBit(256) &amp;&amp; i.drawCallOptimize(!0), a = e._style;
            i.saveTransform(t.curMat), i.transformByMatrix(e.transform, n, r), n = -a.pivotX, 
            r = -a.pivotY;
            var o, h = e._children, l = h.length;
            if (a.viewport) {
                var u = a.viewport, c = u.x, _ = u.y, f = u.right, d = u.bottom, p = NaN, m = NaN;
                for (g = 0; g &lt; l; ++g) (o = h[g])._visible &amp;&amp; (p = o._x) &lt; f &amp;&amp; p + o.width &gt; c &amp;&amp; (m = o._y) &lt; d &amp;&amp; m + o.height &gt; _ &amp;&amp; o.render(i, n, r);
            } else for (var g = 0; g &lt; l; ++g) (o = h[g])._visible &amp;&amp; o.render(i, n, r);
            i.restoreTransform(t.curMat), s &amp;&amp; i.drawCallOptimize(!1);
        }, t.drawLayaGL_drawNodes = function(t, e, i, n) {
            var r = t._getBit(256) &amp;&amp; e.drawCallOptimize(!0), s = t._style;
            i -= s.pivotX, n -= s.pivotY, t._graphics &amp;&amp; t._graphics._render(t, e, i, n);
            var a, o = t._children, h = o.length;
            if (s.viewport) {
                var l = s.viewport, u = l.x, c = l.y, _ = l.right, f = l.bottom, d = NaN, p = NaN;
                for (m = 0; m &lt; h; ++m) (a = o[m])._visible &amp;&amp; (d = a._x) &lt; _ &amp;&amp; d + a.width &gt; u &amp;&amp; (p = a._y) &lt; f &amp;&amp; p + a.height &gt; c &amp;&amp; a.render(e, i, n);
            } else for (var m = 0; m &lt; h; ++m) (a = o[m])._visible &amp;&amp; a.render(e, i, n);
            r &amp;&amp; e.drawCallOptimize(!1);
        }, t.map = {}, n(t, [ "curMat", function() {
            return this.curMat = new st();
        } ]), t;
    }(), o = function() {
        function t(e) {
            if (this.arrColor = [], null == e) return this.strColor = "#00000000", this.numColor = 0, 
            void (this.arrColor = [ 0, 0, 0, 0 ]);
            var i = 0, n = 0, r = 0;
            if ("string" == typeof e) if (e.indexOf("rgba(") &gt;= 0 || e.indexOf("rgb(") &gt;= 0) {
                var s = e, a = 0, o = 0;
                for (a = s.indexOf("("), o = s.indexOf(")"), s = s.substring(a + 1, o), this.arrColor = s.split(","), 
                n = this.arrColor.length, i = 0; i &lt; n; i++) this.arrColor[i] = parseFloat(this.arrColor[i]), 
                i &lt; 3 &amp;&amp; (this.arrColor[i] = Math.round(this.arrColor[i]));
                r = 4 == this.arrColor.length ? 256 * (256 * (256 * this.arrColor[0] + this.arrColor[1]) + this.arrColor[2]) + Math.round(255 * this.arrColor[3]) : 256 * (256 * this.arrColor[0] + this.arrColor[1]) + this.arrColor[2], 
                this.strColor = e;
            } else {
                if (this.strColor = e, "#" === e.charAt(0) &amp;&amp; (e = e.substr(1)), 3 === (n = e.length) || 4 === n) {
                    var h = "";
                    for (i = 0; i &lt; n; i++) h += e[i] + e[i];
                    e = h;
                }
                r = parseInt(e, 16);
            } else r = e, this.strColor = ie.toHexColor(r);
            this.strColor.indexOf("rgba") &gt;= 0 || 9 === this.strColor.length ? (this.arrColor = [ ((4278190080 &amp; r) &gt;&gt;&gt; 24) / 255, ((16711680 &amp; r) &gt;&gt; 16) / 255, ((65280 &amp; r) &gt;&gt; 8) / 255, (255 &amp; r) / 255 ], 
            this.numColor = (4278190080 &amp; r) &gt;&gt;&gt; 24 | (16711680 &amp; r) &gt;&gt; 8 | (65280 &amp; r) &lt;&lt; 8 | (255 &amp; r) &lt;&lt; 24) : (this.arrColor = [ ((16711680 &amp; r) &gt;&gt; 16) / 255, ((65280 &amp; r) &gt;&gt; 8) / 255, (255 &amp; r) / 255, 1 ], 
            this.numColor = 4278190080 | (16711680 &amp; r) &gt;&gt; 16 | 65280 &amp; r | (255 &amp; r) &lt;&lt; 16), 
            this.arrColor.__id = ++t._COLODID;
        }
        return r(t, "laya.utils.ColorUtils"), t._initDefault = function() {
            t._DEFAULT = {};
            for (var e in t._COLOR_MAP) t._SAVE[e] = t._DEFAULT[e] = new t(t._COLOR_MAP[e]);
            return t._DEFAULT;
        }, t._initSaveMap = function() {
            t._SAVE_SIZE = 0, t._SAVE = {};
            for (var e in t._DEFAULT) t._SAVE[e] = t._DEFAULT[e];
        }, t.create = function(e) {
            var i = e + "", n = t._SAVE[i];
            return null != n ? n : (t._SAVE_SIZE &lt; 1e3 &amp;&amp; t._initSaveMap(), t._SAVE[i] = new t(e));
        }, t._SAVE = {}, t._SAVE_SIZE = 0, t._COLOR_MAP = {
            purple: "#800080",
            orange: "#ffa500",
            white: "#FFFFFF",
            red: "#FF0000",
            green: "#00FF00",
            blue: "#0000FF",
            black: "#000000",
            yellow: "#FFFF00",
            gray: "#808080"
        }, t._DEFAULT = t._initDefault(), t._COLODID = 1, t;
    }(), h = function() {
        function t() {}
        r(t, "laya.webgl.canvas.save.SaveBase");
        var e = t.prototype;
        return i.imps(e, {
            "laya.webgl.canvas.save.ISaveData": !0
        }), e.isSaveMark = function() {
            return !1;
        }, e.restore = function(e) {
            this._dataObj[this._valueName] = this._value, t.POOL[t.POOL._length++] = this, this._newSubmit &amp;&amp; (e._curSubmit = l.RENDERBASE);
        }, t._createArray = function() {
            var t = [];
            return t._length = 0, t;
        }, t._init = function() {
            var e = t._namemap = {};
            return e[1] = "ALPHA", e[2] = "fillStyle", e[8] = "font", e[256] = "lineWidth", 
            e[512] = "strokeStyle", e[8192] = "_mergeID", e[1024] = e[2048] = e[4096] = [], 
            e[16384] = "textBaseline", e[32768] = "textAlign", e[65536] = "_nBlendType", e[1048576] = "shader", 
            e[2097152] = "filters", e[8388608] = "_colorFiler", e;
        }, t.save = function(e, i, n, r) {
            if ((e._saveMark._saveuse &amp; i) !== i) {
                e._saveMark._saveuse |= i;
                var s = t.POOL, a = s._length &gt; 0 ? s[--s._length] : new t();
                a._value = n[a._valueName = t._namemap[i]], a._dataObj = n, a._newSubmit = r;
                var o = e._save;
                o[o._length++] = a;
            }
        }, t.POOL = laya.webgl.canvas.save.SaveBase._createArray(), t._namemap = t._init(), 
        t;
    }(), l = function() {
        function t(e) {
            this.clipInfoID = -1, this._mesh = null, this._blendFn = null, this._id = 0, this._renderType = 0, 
            this._parent = null, this._startIdx = 0, this._numEle = 0, this._ref = 1, this.shaderValue = null, 
            this._key = new k(), void 0 === e &amp;&amp; (e = 1e4), this._renderType = e, this._id = ++t.ID;
        }
        r(t, "laya.webgl.submit.Submit");
        var e = t.prototype;
        return i.imps(e, {
            "laya.webgl.submit.ISubmit": !0
        }), e.getID = function() {
            return this._id;
        }, e.releaseRender = function() {
            t.RENDERBASE != this &amp;&amp; --this._ref &lt; 1 &amp;&amp; (t.POOL[t._poolSize++] = this, this.shaderValue.release(), 
            this.shaderValue = null, this._mesh = null, this._parent &amp;&amp; (this._parent.releaseRender(), 
            this._parent = null));
        }, e.getRenderType = function() {
            return this._renderType;
        }, e.renderSubmit = function() {
            if (0 === this._numEle || !this._mesh || 0 == this._numEle) return 1;
            var t = this.shaderValue.textureHost;
            if (t) {
                var e = t._getSource();
                if (!e) return 1;
                this.shaderValue.texture = e;
            }
            var i = wt.mainContext;
            return this._mesh.useMesh(i), this.shaderValue.upload(), _e.activeBlendFunction !== this._blendFn &amp;&amp; (nt.setBlend(i, !0), 
            this._blendFn(i), _e.activeBlendFunction = this._blendFn), i.drawElements(4, this._numEle, 5123, this._startIdx), 
            A.renderBatches++, A.trianglesFaces += this._numEle / 3, 1;
        }, e._cloneInit = function(t, e, i, n) {
            t._ref = 1, t._mesh = i, t._id = this._id, t._key.copyFrom(this._key), t._parent = this, 
            t._blendFn = this._blendFn, t._renderType = this._renderType, t._startIdx = n * _t.BYTES_PIDX, 
            t._numEle = this._numEle, t.shaderValue = this.shaderValue, this.shaderValue.ref++, 
            this._ref++;
        }, e.clone = function(t, e, i) {
            return null;
        }, e.reUse = function(t, e) {
            return 0;
        }, e.toString = function() {
            return "ibindex:" + this._startIdx + " num:" + this._numEle + " key=" + this._key;
        }, t.__init__ = function() {
            var e = t.RENDERBASE = new t(-1);
            e.shaderValue = new X(0, 0), e.shaderValue.ALPHA = 1, e._ref = 4294967295;
        }, t.create = function(e, i, n) {
            var r = t._poolSize ? t.POOL[--t._poolSize] : new t();
            r._ref = 1, r._mesh = i, r._key.clear(), r._startIdx = i.indexNum * _t.BYTES_PIDX, 
            r._numEle = 0;
            var s = e._nBlendType;
            r._blendFn = e._targets ? _e.targetFns[s] : _e.fns[s], r.shaderValue = n, r.shaderValue.setValue(e._shader2D);
            var a = e._shader2D.filters;
            return a &amp;&amp; r.shaderValue.setFilters(a), r;
        }, t.createShape = function(e, i, n, r) {
            var s = t._poolSize ? t.POOL[--t._poolSize] : new t();
            s._mesh = i, s._numEle = n, s._startIdx = 2 * i.indexNum, s._ref = 1, s.shaderValue = r, 
            s.shaderValue.setValue(e._shader2D);
            var a = e._nBlendType;
            return s._key.blendShader = a, s._blendFn = e._targets ? _e.targetFns[a] : _e.fns[a], 
            s;
        }, t.TYPE_2D = 1e4, t.TYPE_CANVAS = 10003, t.TYPE_CMDSETRT = 10004, t.TYPE_CUSTOM = 10005, 
        t.TYPE_BLURRT = 10006, t.TYPE_CMDDESTORYPRERT = 10007, t.TYPE_DISABLESTENCIL = 10008, 
        t.TYPE_OTHERIBVB = 10009, t.TYPE_PRIMITIVE = 10010, t.TYPE_RT = 10011, t.TYPE_BLUR_RT = 10012, 
        t.TYPE_TARGET = 10013, t.TYPE_CHANGE_VALUE = 10014, t.TYPE_SHAPE = 10015, t.TYPE_TEXTURE = 10016, 
        t.TYPE_FILLTEXTURE = 10017, t.KEY_ONCE = -1, t.KEY_FILLRECT = 1, t.KEY_DRAWTEXTURE = 2, 
        t.KEY_VG = 3, t.KEY_TRIANGLES = 4, t.RENDERBASE = null, t.ID = 1, t.preRender = null, 
        t._poolSize = 0, t.POOL = [], t;
    }(), u = function() {
        function t() {}
        r(t, "laya.display.cmd.FillTextureCmd");
        var e = t.prototype;
        return e.recover = function() {
            this.texture = null, this.offset = null, this.other = null, U.recover("FillTextureCmd", this);
        }, e.run = function(t, e, i) {
            t.fillTexture(this.texture, this.x + e, this.y + i, this.width, this.height, this.type, this.offset, this.other);
        }, s(0, e, "cmdID", function() {
            return "FillTexture";
        }), t.create = function(e, i, n, r, s, a, o, h) {
            var l = U.getItemByClass("FillTextureCmd", t);
            return l.texture = e, l.x = i, l.y = n, l.width = r, l.height = s, l.type = a, l.offset = o, 
            l.other = h, l;
        }, t.ID = "FillTexture", t;
    }(), c = function() {
        function t() {
            this._glRender = null;
        }
        r(t, "laya.filters.Filter");
        var e = t.prototype;
        return i.imps(e, {
            "laya.filters.IFilter": !0
        }), s(0, e, "type", function() {
            return -1;
        }), t.BLUR = 16, t.COLOR = 32, t.GLOW = 8, t._filter = function(t, e, i, n) {
            var r = e, s = this._next;
            if (s) {
                var a = t.filters, o = a.length;
                if (1 == o &amp;&amp; 32 == a[0].type) return e.save(), e.setColorFilter(a[0]), s._fun.call(s, t, e, i, n), 
                void e.restore();
                var h, l = X.create(1, 0), u = Yt.TEMP, c = r._curMat, _ = st.create();
                c.copyTo(_);
                var f = 0, d = 0, p = null, m = t._cacheStyle.filterCache || null;
                if (m &amp;&amp; 0 == t.getRepaint()) {
                    if ((t._cacheStyle.hasGlowFilter || !1) &amp;&amp; (f = 50, d = 25), (h = t.getBounds()).width &lt;= 0 || h.height &lt;= 0) return;
                    h.width += f, h.height += f, u.x = h.x * _.a + h.y * _.c, u.y = h.y * _.d + h.x * _.b, 
                    h.x = u.x, h.y = u.y, u.x = h.width * _.a + h.height * _.c, u.y = h.height * _.d + h.width * _.b, 
                    h.width = u.x, h.height = u.y;
                } else {
                    t._isHaveGlowFilter() &amp;&amp; (f = 50, d = 25), (h = new mt()).copyFrom(t.getSelfBounds()), 
                    h.x += t.x, h.y += t.y, h.x -= t.pivotX + 4, h.y -= t.pivotY + 4;
                    var g = h.x, v = h.y;
                    if (h.width += f + 8, h.height += f + 8, u.x = h.x * _.a + h.y * _.c, u.y = h.y * _.d + h.x * _.b, 
                    h.x = u.x, h.y = u.y, u.x = h.width * _.a + h.height * _.c, u.y = h.height * _.d + h.width * _.b, 
                    h.width = u.x, h.height = u.y, h.width &lt;= 0 || h.height &lt;= 0) return;
                    m &amp;&amp; ee.releaseRT(m), p = ee.getRT(h.width, h.height);
                    var y = m = ee.getRT(h.width, h.height);
                    t._getCacheStyle().filterCache = m, r.pushRT(), r.useRT(p);
                    var x = t.x - g + d, T = t.y - v + d;
                    s._fun.call(s, t, e, x, T), r.useRT(y);
                    for (var b = 0; b &lt; o; b++) {
                        0 != b &amp;&amp; (r.useRT(p), r.drawTarget(y, 0, 0, h.width, h.height, st.TEMP.identity(), l, null, _e.TOINT.overlay), 
                        r.useRT(y));
                        var w = a[b];
                        switch (w.type) {
                          case 16:
                          case 8:
                            w._glRender &amp;&amp; w._glRender.render(p, e, h.width, h.height, w);
                            break;

                          case 32:
                            r.setColorFilter(w), r.drawTarget(p, 0, 0, h.width, h.height, st.EMPTY.identity(), X.create(1, 0)), 
                            r.setColorFilter(null);
                        }
                    }
                    r.popRT();
                }
                if (i = i - d - t.x, n = n - d - t.y, u.setTo(i, n), _.transformPoint(u), i = u.x + h.x, 
                n = u.y + h.y, r._drawRenderTexture(m, i, n, h.width, h.height, st.TEMP.identity(), 1, fi.defuv), 
                p) {
                    var C = $.create([ p ], function(t) {
                        t.destroy();
                    }, this);
                    p = null, e.addRenderObject(C);
                }
                _.destroy();
            }
        }, t;
    }(), _ = (function() {
        function t() {}
        r(t, "laya.utils.Log"), t.enable = function() {
            t._logdiv || ((t._logdiv = Dt.createElement("div")).style.cssText = "border:white;padding:4px;overflow-y:auto;z-index:1000000;background:rgba(100,100,100,0.6);color:white;position: absolute;left:0px;top:0px;width:50%;height:50%;", 
            Dt.document.body.appendChild(t._logdiv), (t._btn = Dt.createElement("button")).innerText = "Hide", 
            t._btn.style.cssText = "z-index:1000001;position: absolute;left:10px;top:10px;", 
            t._btn.onclick = t.toggle, Dt.document.body.appendChild(t._btn));
        }, t.toggle = function() {
            var e = t._logdiv.style;
            "" === e.display ? (t._btn.innerText = "Show", e.display = "none") : (t._btn.innerText = "Hide", 
            e.display = "");
        }, t.print = function(e) {
            t._logdiv &amp;&amp; (t._count &gt;= t.maxCount &amp;&amp; t.clear(), t._count++, t._logdiv.innerText += e + "\n", 
            t.autoScrollToBottom &amp;&amp; t._logdiv.scrollHeight - t._logdiv.scrollTop - t._logdiv.clientHeight &lt; 50 &amp;&amp; (t._logdiv.scrollTop = t._logdiv.scrollHeight));
        }, t.clear = function() {
            t._logdiv.innerText = "", t._count = 0;
        }, t._logdiv = null, t._btn = null, t._count = 0, t.maxCount = 50, t.autoScrollToBottom = !0;
    }(), function() {
        function t() {
            this.preOvers = [], this.preDowns = [], this.preRightDowns = [], this.enable = !0, 
            this._lastClickTime = 0, this._event = new w();
        }
        r(t, "laya.events.TouchManager");
        var e = t.prototype;
        return e._clearTempArrs = function() {
            t._oldArr.length = 0, t._newArr.length = 0, t._tEleArr.length = 0;
        }, e.getTouchFromArr = function(t, e) {
            var i = 0, n = 0;
            n = e.length;
            var r;
            for (i = 0; i &lt; n; i++) if ((r = e[i]).id == t) return r;
            return null;
        }, e.removeTouchFromArr = function(t, e) {
            var i = 0;
            for (i = e.length - 1; i &gt;= 0; i--) e[i].id == t &amp;&amp; e.splice(i, 1);
        }, e.createTouchO = function(t, e) {
            var i;
            return i = U.getItem("TouchData") || {}, i.id = e, i.tar = t, i;
        }, e.onMouseDown = function(e, i, n) {
            if (void 0 === n &amp;&amp; (n = !1), this.enable) {
                var r, s, a;
                r = this.getTouchFromArr(i, this.preOvers), a = this.getEles(e, null, t._tEleArr), 
                r ? r.tar = e : (s = this.createTouchO(e, i), this.preOvers.push(s)), Dt.onMobile &amp;&amp; this.sendEvents(a, "mouseover");
                var o;
                o = n ? this.preDowns : this.preRightDowns, (r = this.getTouchFromArr(i, o)) ? r.tar = e : (s = this.createTouchO(e, i), 
                o.push(s)), this.sendEvents(a, n ? "mousedown" : "rightmousedown"), this._clearTempArrs();
            }
        }, e.sendEvents = function(t, e) {
            var i = 0, n = 0;
            n = t.length, this._event._stoped = !1;
            var r;
            r = t[0];
            var s;
            for (i = 0; i &lt; n; i++) {
                if ((s = t[i]).destroyed) return;
                if (s.event(e, this._event.setTo(e, s, r)), this._event._stoped) break;
            }
        }, e.getEles = function(t, e, i) {
            for (i ? i.length = 0 : i = []; t &amp;&amp; t != e; ) i.push(t), t = t.parent;
            return i;
        }, e.checkMouseOutAndOverOfMove = function(e, i, n) {
            if (void 0 === n &amp;&amp; (n = 0), i != e) {
                var r, s, a = 0, o = 0;
                if (i.contains(e)) s = this.getEles(e, i, t._tEleArr), this.sendEvents(s, "mouseover"); else if (e.contains(i)) s = this.getEles(i, e, t._tEleArr), 
                this.sendEvents(s, "mouseout"); else {
                    (s = t._tEleArr).length = 0;
                    var h;
                    h = this.getEles(i, null, t._oldArr);
                    var l;
                    l = this.getEles(e, null, t._newArr), o = h.length;
                    var u = 0;
                    for (a = 0; a &lt; o; a++) {
                        if (r = h[a], (u = l.indexOf(r)) &gt;= 0) {
                            l.splice(u, l.length - u);
                            break;
                        }
                        s.push(r);
                    }
                    s.length &gt; 0 &amp;&amp; this.sendEvents(s, "mouseout"), l.length &gt; 0 &amp;&amp; this.sendEvents(l, "mouseover");
                }
            }
        }, e.onMouseMove = function(e, i) {
            if (this.enable) {
                var n, r;
                (n = this.getTouchFromArr(i, this.preOvers)) ? (this.checkMouseOutAndOverOfMove(e, n.tar), 
                n.tar = e, r = this.getEles(e, null, t._tEleArr)) : (r = this.getEles(e, null, t._tEleArr), 
                this.sendEvents(r, "mouseover"), this.preOvers.push(this.createTouchO(e, i))), this.sendEvents(r, "mousemove"), 
                this._clearTempArrs();
            }
        }, e.getLastOvers = function() {
            return t._tEleArr.length = 0, this.preOvers.length &gt; 0 &amp;&amp; this.preOvers[0].tar ? this.getEles(this.preOvers[0].tar, null, t._tEleArr) : (t._tEleArr.push(i.stage), 
            t._tEleArr);
        }, e.stageMouseOut = function() {
            var t;
            t = this.getLastOvers(), this.preOvers.length = 0, this.sendEvents(t, "mouseout");
        }, e.onMouseUp = function(e, i, n) {
            if (void 0 === n &amp;&amp; (n = !1), this.enable) {
                var r, s, a, o, h, l = 0, u = 0, c = Dt.onMobile;
                s = this.getEles(e, null, t._tEleArr), this.sendEvents(s, n ? "mouseup" : "rightmouseup");
                var _;
                if (_ = n ? this.preDowns : this.preRightDowns, r = this.getTouchFromArr(i, _)) {
                    var f = !1, d = Dt.now();
                    if (f = d - this._lastClickTime &lt; 300, this._lastClickTime = d, e == r.tar) h = s; else for (a = this.getEles(r.tar, null, t._oldArr), 
                    (h = t._newArr).length = 0, u = a.length, l = 0; l &lt; u; l++) o = a[l], s.indexOf(o) &gt;= 0 &amp;&amp; h.push(o);
                    h.length &gt; 0 &amp;&amp; this.sendEvents(h, n ? "click" : "rightclick"), n &amp;&amp; f &amp;&amp; this.sendEvents(h, "doubleclick"), 
                    this.removeTouchFromArr(i, _), r.tar = null, U.recover("TouchData", r);
                }
                (r = this.getTouchFromArr(i, this.preOvers)) &amp;&amp; c &amp;&amp; ((h = this.getEles(r.tar, null, h)) &amp;&amp; h.length &gt; 0 &amp;&amp; this.sendEvents(h, "mouseout"), 
                this.removeTouchFromArr(i, this.preOvers), r.tar = null, U.recover("TouchData", r)), 
                this._clearTempArrs();
            }
        }, t._oldArr = [], t._newArr = [], t._tEleArr = [], n(t, [ "I", function() {
            return this.I = new t();
        } ]), t;
    }()), f = function() {
        function t() {
            this._mesh = null, this._startIdx = 0, this._numEle = 0, this.shaderValue = null, 
            this.blendType = 0, this._ref = 1, this.srcRT = null, this._key = new k();
        }
        r(t, "laya.webgl.submit.SubmitTarget");
        var e = t.prototype;
        return i.imps(e, {
            "laya.webgl.submit.ISubmit": !0
        }), e.renderSubmit = function() {
            var t = wt.mainContext;
            this._mesh.useMesh(t);
            var e = this.srcRT;
            return e &amp;&amp; (this.shaderValue.texture = e._getSource(), this.shaderValue.upload(), 
            this.blend(), A.renderBatches++, A.trianglesFaces += this._numEle / 3, wt.mainContext.drawElements(4, this._numEle, 5123, this._startIdx)), 
            1;
        }, e.blend = function() {
            if (_e.activeBlendFunction !== _e.fns[this.blendType]) {
                var t = wt.mainContext;
                t.enable(3042), _e.fns[this.blendType](t), _e.activeBlendFunction = _e.fns[this.blendType];
            }
        }, e.getRenderType = function() {
            return 0;
        }, e.releaseRender = function() {
            if (--this._ref &lt; 1) {
                var e = t.POOL;
                e[e._length++] = this;
            }
        }, e.reUse = function(t, e) {
            return this._startIdx = e, this._ref++, e;
        }, t.create = function(e, i, n, r) {
            var s = t.POOL._length ? t.POOL[--t.POOL._length] : new t();
            if (s._mesh = i, s.srcRT = r, s._startIdx = i.indexNum * _t.BYTES_PIDX, s._ref = 1, 
            s._key.clear(), s._numEle = 0, s.blendType = e._nBlendType, s._key.blendShader = s.blendType, 
            s.shaderValue = n, s.shaderValue.setValue(e._shader2D), e._colorFiler) {
                var a = e._colorFiler;
                n.defines.add(a.type), n.colorMat = a._mat, n.colorAlpha = a._alpha;
            }
            return s;
        }, t.POOL = [], t.__init$ = function() {
            t.POOL._length = 0;
        }, t;
    }(), d = function() {
        function t() {}
        r(t, "laya.display.cmd.DrawImageCmd");
        var e = t.prototype;
        return e.recover = function() {
            this.texture._removeReference(), this.texture = null, U.recover("DrawImageCmd", this);
        }, e.run = function(t, e, i) {
            t.drawTexture(this.texture, this.x + e, this.y + i, this.width, this.height);
        }, s(0, e, "cmdID", function() {
            return "DrawImage";
        }), t.create = function(e, i, n, r, s) {
            var a = U.getItemByClass("DrawImageCmd", t);
            return a.texture = e, e._addReference(), a.x = i, a.y = n, a.width = r, a.height = s, 
            a;
        }, t.ID = "DrawImage", t;
    }(), p = function() {
        function t() {
            this._id = ie.getGID(), this._resetComp();
        }
        r(t, "laya.components.Component");
        var e = t.prototype;
        return i.imps(e, {
            "laya.resource.ISingletonElement": !0,
            "laya.resource.IDestroy": !0
        }), e._isScript = function() {
            return !1;
        }, e._resetComp = function() {
            this._indexInList = -1, this._enabled = !0, this._awaked = !1, this.owner = null;
        }, e._getIndexInList = function() {
            return this._indexInList;
        }, e._setIndexInList = function(t) {
            this._indexInList = t;
        }, e._onAdded = function() {}, e._onAwake = function() {}, e._onEnable = function() {}, 
        e._onDisable = function() {}, e._onEnableInScene = function() {}, e._onDisableInScene = function() {}, 
        e._onDestroy = function() {}, e.onReset = function() {}, e._parse = function(t) {}, 
        e._cloneTo = function(t) {}, e._setActive = function(t) {
            t ? (this._awaked || (this._awaked = !0, this._onAwake()), this._enabled &amp;&amp; this._onEnable()) : this._enabled &amp;&amp; this._onDisable();
        }, e._setActiveInScene = function(t) {
            t ? this._onEnableInScene() : this._onDisableInScene();
        }, e.destroy = function() {
            this.owner &amp;&amp; this.owner._destroyComponent(this);
        }, e._destroy = function() {
            this.owner.activeInHierarchy &amp;&amp; this._enabled &amp;&amp; (this._setActive(!1), this._isScript() &amp;&amp; this.onDisable()), 
            this.owner._scene &amp;&amp; this._setActiveInScene(!1), this._onDestroy(), this._destroyed = !0, 
            this.onReset !== laya.components.Component.prototype.onReset ? (this.onReset(), 
            this._resetComp(), U.recoverByClass(this)) : this._resetComp();
        }, s(0, e, "id", function() {
            return this._id;
        }), s(0, e, "enabled", function() {
            return this._enabled;
        }, function(t) {
            this._enabled = t, this.owner &amp;&amp; (t ? this.owner.activeInHierarchy &amp;&amp; this._onEnable() : this.owner.activeInHierarchy &amp;&amp; this._onDisable());
        }), s(0, e, "isSingleton", function() {
            return !0;
        }), s(0, e, "destroyed", function() {
            return this._destroyed;
        }), t;
    }(), m = function() {
        function t() {
            this._$0__events = null;
        }
        var e;
        r(t, "laya.events.EventDispatcher");
        var i = t.prototype;
        return i.hasListener = function(t) {
            return !(!this._$0__events || !this._$0__events[t]);
        }, i.event = function(t, e) {
            if (!this._$0__events || !this._$0__events[t]) return !1;
            var i = this._$0__events[t];
            if (i.run) i.once &amp;&amp; delete this._$0__events[t], null != e ? i.runWith(e) : i.run(); else {
                for (var n = 0, r = i.length; n &lt; r; n++) {
                    var s = i[n];
                    s &amp;&amp; (null != e ? s.runWith(e) : s.run()), s &amp;&amp; !s.once || (i.splice(n, 1), n--, 
                    r--);
                }
                0 === i.length &amp;&amp; this._$0__events &amp;&amp; delete this._$0__events[t];
            }
            return !0;
        }, i.on = function(t, e, i, n) {
            return this._createListener(t, e, i, n, !1);
        }, i.once = function(t, e, i, n) {
            return this._createListener(t, e, i, n, !0);
        }, i._createListener = function(t, i, n, r, s, a) {
            void 0 === a &amp;&amp; (a = !0), a &amp;&amp; this.off(t, i, n, s);
            var o = e.create(i || this, n, r, s);
            this._$0__events || (this._$0__events = {});
            var h = this._$0__events;
            return h[t] ? h[t].run ? h[t] = [ h[t], o ] : h[t].push(o) : h[t] = o, this;
        }, i.off = function(t, e, i, n) {
            if (void 0 === n &amp;&amp; (n = !1), !this._$0__events || !this._$0__events[t]) return this;
            var r = this._$0__events[t];
            if (null != r) if (r.run) e &amp;&amp; r.caller !== e || null != i &amp;&amp; r.method !== i || n &amp;&amp; !r.once || (delete this._$0__events[t], 
            r.recover()); else {
                for (var s = 0, a = 0, o = r.length; a &lt; o; a++) {
                    var h = r[a];
                    h ? !h || e &amp;&amp; h.caller !== e || null != i &amp;&amp; h.method !== i || n &amp;&amp; !h.once || (s++, 
                    r[a] = null, h.recover()) : s++;
                }
                s === o &amp;&amp; delete this._$0__events[t];
            }
            return this;
        }, i.offAll = function(t) {
            var e = this._$0__events;
            if (!e) return this;
            if (t) this._recoverHandlers(e[t]), delete e[t]; else {
                for (var i in e) this._recoverHandlers(e[i]);
                this._$0__events = null;
            }
            return this;
        }, i.offAllCaller = function(t) {
            if (t &amp;&amp; this._$0__events) for (var e in this._$0__events) this.off(e, t, null);
            return this;
        }, i._recoverHandlers = function(t) {
            if (t) if (t.run) t.recover(); else for (var e = t.length - 1; e &gt; -1; e--) t[e] &amp;&amp; (t[e].recover(), 
            t[e] = null);
        }, i.isMouseEvent = function(e) {
            return t.MOUSE_EVENTS[e] || !1;
        }, t.MOUSE_EVENTS = {
            rightmousedown: !0,
            rightmouseup: !0,
            rightclick: !0,
            mousedown: !0,
            mouseup: !0,
            mousemove: !0,
            mouseover: !0,
            mouseout: !0,
            click: !0,
            doubleclick: !0
        }, t.__init$ = function() {
            Object.defineProperty(laya.events.EventDispatcher.prototype, "_events", {
                enumerable: !1,
                writable: !0
            }), e = function(t) {
                function e(t, i, n, r) {
                    e.__super.call(this, t, i, n, r);
                }
                return r(e, "", g), e.prototype.recover = function() {
                    this._id &gt; 0 &amp;&amp; (this._id = 0, e._pool.push(this.clear()));
                }, e.create = function(t, i, n, r) {
                    return void 0 === r &amp;&amp; (r = !0), e._pool.length ? e._pool.pop().setTo(t, i, n, r) : new e(t, i, n, r);
                }, e._pool = [], e;
            }();
        }, t;
    }(), g = function() {
        function t(t, e, i, n) {
            this.once = !1, this._id = 0, void 0 === n &amp;&amp; (n = !1), this.setTo(t, e, i, n);
        }
        r(t, "laya.utils.Handler");
        var e = t.prototype;
        return e.setTo = function(e, i, n, r) {
            return this._id = t._gid++, this.caller = e, this.method = i, this.args = n, this.once = r, 
            this;
        }, e.run = function() {
            if (null == this.method) return null;
            var t = this._id, e = this.method.apply(this.caller, this.args);
            return this._id === t &amp;&amp; this.once &amp;&amp; this.recover(), e;
        }, e.runWith = function(t) {
            if (null == this.method) return null;
            var e = this._id;
            if (null == t) var i = this.method.apply(this.caller, this.args); else i = this.args || t.unshift ? this.args ? this.method.apply(this.caller, this.args.concat(t)) : this.method.apply(this.caller, t) : this.method.call(this.caller, t);
            return this._id === e &amp;&amp; this.once &amp;&amp; this.recover(), i;
        }, e.clear = function() {
            return this.caller = null, this.method = null, this.args = null, this;
        }, e.recover = function() {
            this._id &gt; 0 &amp;&amp; (this._id = 0, t._pool.push(this.clear()));
        }, t.create = function(e, i, n, r) {
            return void 0 === r &amp;&amp; (r = !0), t._pool.length ? t._pool.pop().setTo(e, i, n, r) : new t(e, i, n, r);
        }, t._pool = [], t._gid = 1, t;
    }(), v = function() {
        function t() {
            this.ib = null, this.vb = null, wt.mainContext, this.ib = Qe.create(35048), this.vb = ti.create(8);
        }
        r(t, "laya.webgl.shader.d2.skinAnishader.SkinMeshBuffer");
        var e = t.prototype;
        return e.addSkinMesh = function(t) {
            t.getData2(this.vb, this.ib, this.vb._byteLength / 32);
        }, e.reset = function() {
            this.vb.clear(), this.ib.clear();
        }, t.getInstance = function() {
            return t.instance = t.instance || new t();
        }, t.instance = null, t;
    }(), y = function() {
        function t() {}
        r(t, "laya.display.cmd.DrawTrianglesCmd");
        var e = t.prototype;
        return e.recover = function() {
            this.texture = null, this.vertices = null, this.uvs = null, this.indices = null, 
            this.matrix = null, U.recover("DrawTrianglesCmd", this);
        }, e.run = function(t, e, i) {
            t.drawTriangles(this.texture, this.x + e, this.y + i, this.vertices, this.uvs, this.indices, this.matrix, this.alpha, this.color, this.blendMode);
        }, s(0, e, "cmdID", function() {
            return "DrawTriangles";
        }), t.create = function(e, i, n, r, s, a, h, l, u, c) {
            var _ = U.getItemByClass("DrawTrianglesCmd", t);
            if (_.texture = e, _.x = i, _.y = n, _.vertices = r, _.uvs = s, _.indices = a, _.matrix = h, 
            _.alpha = l, u) {
                _.color = new Te();
                var f = o.create(u).arrColor;
                _.color.color(255 * f[0], 255 * f[1], 255 * f[2], 255 * f[3]);
            }
            return _.blendMode = c, _;
        }, t.ID = "DrawTriangles", t;
    }(), x = function() {
        function t() {}
        r(t, "laya.display.cmd.DrawPieCmd");
        var e = t.prototype;
        return e.recover = function() {
            this.fillColor = null, this.lineColor = null, U.recover("DrawPieCmd", this);
        }, e.run = function(t, e, i) {
            t._drawPie(this.x + e, this.y + i, this.radius, this._startAngle, this._endAngle, this.fillColor, this.lineColor, this.lineWidth, this.vid);
        }, s(0, e, "startAngle", function() {
            return 180 * this._startAngle / Math.PI;
        }, function(t) {
            this._startAngle = t * Math.PI / 180;
        }), s(0, e, "cmdID", function() {
            return "DrawPie";
        }), s(0, e, "endAngle", function() {
            return 180 * this._endAngle / Math.PI;
        }, function(t) {
            this._endAngle = t * Math.PI / 180;
        }), t.create = function(e, i, n, r, s, a, o, h, l) {
            var u = U.getItemByClass("DrawPieCmd", t);
            return u.x = e, u.y = i, u.radius = n, u._startAngle = r, u._endAngle = s, u.fillColor = a, 
            u.lineColor = o, u.lineWidth = h, u.vid = l, u;
        }, t.ID = "DrawPie", t;
    }(), T = function() {
        function t() {
            this.id = NaN, this.save = [], this.toUpperCase = null, this.changed = !1, this._text = null, 
            this.width = -1, this.pageChars = [], this.startID = 0, this.startIDStroke = 0, 
            this.lastGCCnt = 0, this.splitRender = !1;
        }
        r(t, "laya.utils.WordText");
        var e = t.prototype;
        return e.setText = function(t) {
            this.changed = !0, this._text = t, this.width = -1, this.cleanCache();
        }, e.toString = function() {
            return this._text;
        }, e.charCodeAt = function(t) {
            return this._text ? this._text.charCodeAt(t) : NaN;
        }, e.charAt = function(t) {
            return this._text ? this._text.charAt(t) : null;
        }, e.cleanCache = function() {
            this.pageChars.forEach(function(t) {
                var e = t.tex;
                t.words, 1 == t.words.length &amp;&amp; e &amp;&amp; e.ri &amp;&amp; e.destroy();
            }), this.pageChars = [], this.startID = 0;
        }, s(0, e, "length", function() {
            return this._text ? this._text.length : 0;
        }), t;
    }(), b = function() {
        function t(t, e, i) {
            this._stride = 0, this.vertNum = 0, this.indexNum = 0, this._applied = !1, this._vb = null, 
            this._ib = null, this._vao = null, this._attribInfo = null, this._quadNum = 0, this.canReuse = !1, 
            this._stride = t, this._vb = new ti(t, 35048), e ? this._vb._resizeBuffer(e, !1) : se.webGL2D_MeshAllocMaxMem &amp;&amp; this._vb._resizeBuffer(65536 * t, !1), 
            this._ib = new Qe(), i &amp;&amp; this._ib._resizeBuffer(i, !1);
        }
        r(t, "laya.webgl.utils.Mesh2D");
        var e = t.prototype;
        return e.cloneWithNewVB = function() {
            var e = new t(this._stride, 0, 0);
            return e._ib = this._ib, e._quadNum = this._quadNum, e._attribInfo = this._attribInfo, 
            e;
        }, e.cloneWithNewVBIB = function() {
            var e = new t(this._stride, 0, 0);
            return e._attribInfo = this._attribInfo, e;
        }, e.getVBW = function() {
            return this._vb.setNeedUpload(), this._vb;
        }, e.getVBR = function() {
            return this._vb;
        }, e.getIBR = function() {
            return this._ib;
        }, e.getIBW = function() {
            return this._ib.setNeedUpload(), this._ib;
        }, e.createQuadIB = function(t) {
            this._quadNum = t, this._ib._resizeBuffer(6 * t * 2, !1), this._ib.byteLength = this._ib.bufferLength;
            for (var e = this._ib.getUint16Array(), i = 0, n = 0, r = 0; r &lt; t; r++) e[i++] = n, 
            e[i++] = n + 2, e[i++] = n + 1, e[i++] = n, e[i++] = n + 3, e[i++] = n + 2, n += 4;
            this._ib.setNeedUpload();
        }, e.setAttributes = function(t) {
            if (this._attribInfo = t, this._attribInfo.length % 3 != 0) throw "Mesh2D setAttributes error!";
        }, e.configVAO = function(t) {
            if (!this._applied) {
                this._applied = !0, this._vao || (this._vao = new Ge()), this._vao.bind(), this._vb._bindForVAO(), 
                this._ib.setNeedUpload(), this._ib._bind_uploadForVAO();
                for (var e = this._attribInfo.length / 3, i = 0, n = 0; n &lt; e; n++) {
                    var r = this._attribInfo[i + 1], s = this._attribInfo[i], a = this._attribInfo[i + 2];
                    t.enableVertexAttribArray(n), t.vertexAttribPointer(n, r, s, !1, this._stride, a), 
                    i += 3;
                }
                this._vao.unBind();
            }
        }, e.useMesh = function(t) {
            this._applied || this.configVAO(t), this._vao.bind(), this._vb.bind(), this._ib._bind_upload() || this._ib.bind(), 
            this._vb._bind_upload() || this._vb.bind();
        }, e.getEleNum = function() {
            return this._ib.getBuffer().byteLength / 2;
        }, e.releaseMesh = function() {}, e.destroy = function() {}, e.clearVB = function() {
            this._vb.clear();
        }, t._gvaoid = 0, t;
    }(), w = function() {
        function t() {}
        r(t, "laya.events.Event");
        var e = t.prototype;
        return e.setTo = function(t, e, i) {
            return this.type = t, this.currentTarget = e, this.target = i, this;
        }, e.stopPropagation = function() {
            this._stoped = !0;
        }, s(0, e, "stageY", function() {
            return i.stage.mouseY;
        }), s(0, e, "charCode", function() {
            return this.nativeEvent.charCode;
        }), s(0, e, "touches", function() {
            if (!this.nativeEvent) return null;
            var t = this.nativeEvent.touches;
            if (t) for (var e = i.stage, n = 0, r = t.length; n &lt; r; n++) {
                var s = t[n], a = Yt.TEMP;
                a.setTo(s.clientX, s.clientY), e._canvasTransform.invertTransformPoint(a), e.transform.invertTransformPoint(a), 
                s.stageX = a.x, s.stageY = a.y;
            }
            return t;
        }), s(0, e, "keyLocation", function() {
            return this.nativeEvent.location || this.nativeEvent.keyLocation;
        }), s(0, e, "ctrlKey", function() {
            return this.nativeEvent.ctrlKey;
        }), s(0, e, "altKey", function() {
            return this.nativeEvent.altKey;
        }), s(0, e, "shiftKey", function() {
            return this.nativeEvent.shiftKey;
        }), s(0, e, "stageX", function() {
            return i.stage.mouseX;
        }), t.EMPTY = new t(), t.MOUSE_DOWN = "mousedown", t.MOUSE_UP = "mouseup", t.CLICK = "click", 
        t.RIGHT_MOUSE_DOWN = "rightmousedown", t.RIGHT_MOUSE_UP = "rightmouseup", t.RIGHT_CLICK = "rightclick", 
        t.MOUSE_MOVE = "mousemove", t.MOUSE_OVER = "mouseover", t.MOUSE_OUT = "mouseout", 
        t.MOUSE_WHEEL = "mousewheel", t.ROLL_OVER = "mouseover", t.ROLL_OUT = "mouseout", 
        t.DOUBLE_CLICK = "doubleclick", t.CHANGE = "change", t.CHANGED = "changed", t.RESIZE = "resize", 
        t.ADDED = "added", t.REMOVED = "removed", t.DISPLAY = "display", t.UNDISPLAY = "undisplay", 
        t.ERROR = "error", t.COMPLETE = "complete", t.LOADED = "loaded", t.READY = "ready", 
        t.PROGRESS = "progress", t.INPUT = "input", t.RENDER = "render", t.OPEN = "open", 
        t.MESSAGE = "message", t.CLOSE = "close", t.KEY_DOWN = "keydown", t.KEY_PRESS = "keypress", 
        t.KEY_UP = "keyup", t.FRAME = "enterframe", t.DRAG_START = "dragstart", t.DRAG_MOVE = "dragmove", 
        t.DRAG_END = "dragend", t.ENTER = "enter", t.SELECT = "select", t.BLUR = "blur", 
        t.FOCUS = "focus", t.VISIBILITY_CHANGE = "visibilitychange", t.FOCUS_CHANGE = "focuschange", 
        t.PLAYED = "played", t.PAUSED = "paused", t.STOPPED = "stopped", t.START = "start", 
        t.END = "end", t.COMPONENT_ADDED = "componentadded", t.COMPONENT_REMOVED = "componentremoved", 
        t.RELEASED = "released", t.LINK = "link", t.LABEL = "label", t.FULL_SCREEN_CHANGE = "fullscreenchange", 
        t.DEVICE_LOST = "devicelost", t.TRANSFORM_CHANGED = "transformchanged", t.ANIMATION_CHANGED = "animationchanged", 
        t.TRAIL_FILTER_CHANGE = "trailfilterchange", t.TRIGGER_ENTER = "triggerenter", t.TRIGGER_STAY = "triggerstay", 
        t.TRIGGER_EXIT = "triggerexit", t;
    }(), C = function() {
        function t() {
            this.fontSizeInfo = {}, this.charRender = null, this.mapFont = {}, this.fontID = 0, 
            this.mapColor = [], this.colorID = 0, this.fontScaleX = 1, this.fontScaleY = 1, 
            this._curStrPos = 0, this.bmpData32 = null, this.lastFont = null, this.fontSizeW = 0, 
            this.fontSizeH = 0, this.fontSizeOffX = 0, this.fontSizeOffY = 0, this.renderPerChar = !0, 
            this.textureMem = 0, this.fontStr = null, this.textAtlases = [], this.isoTextures = [], 
            this.tmpAtlasPos = new Yt();
            var e = !1, n = i.MiniAdpter;
            n &amp;&amp; n.systemInfo &amp;&amp; n.systemInfo.system &amp;&amp; (e = "ios 10.1.1" === n.systemInfo.system.toLowerCase()), 
            Dt.onMiniGame &amp;&amp; !e &amp;&amp; (t.isWan1Wan = !0), Dt.onLimixiu &amp;&amp; (t.isWan1Wan = !0), this.charRender = Mt.isConchApp ? new ze() : new He(t.atlasWidth, t.atlasWidth, t.scaleFontWithCtx, !t.isWan1Wan, !1), 
            t.textRenderInst = this, i.textRender = this, t.atlasWidth2 = t.atlasWidth * t.atlasWidth;
        }
        r(t, "laya.webgl.text.TextRender");
        var e = t.prototype;
        return e.setFont = function(e) {
            if (this.lastFont != e) {
                this.lastFont = e;
                var i = this.getFontSizeInfo(e._family), n = i &gt;&gt; 24, r = i &gt;&gt; 16 &amp; 255, s = i &gt;&gt; 8 &amp; 255, a = 255 &amp; i, o = e._size / t.standardFontSize;
                this.fontSizeOffX = Math.ceil(n * o), this.fontSizeOffY = Math.ceil(r * o), this.fontSizeW = Math.ceil(s * o), 
                this.fontSizeH = Math.ceil(a * o), e._font.indexOf("italic") &gt;= 0 ? this.fontStr = e._font.replace("italic", "") : this.fontStr = e._font;
            }
        }, e.getNextChar = function(t) {
            var e = t.length, i = this._curStrPos;
            if (i &gt;= e) return null;
            for (var n = i, r = 0; n &lt; e; n++) {
                var s = t.charCodeAt(n);
                if (s &gt;&gt;&gt; 11 == 27) {
                    if (1 == r) break;
                    r = 1, n++;
                } else if (65038 === s || 65039 === s) ; else if (8205 == s) r = 2; else if (0 == r) r = 1; else if (1 == r) break;
            }
            return this._curStrPos = n, t.substring(i, n);
        }, e.filltext = function(t, e, i, n, r, s, a, o, h, l) {
            if (void 0 === l &amp;&amp; (l = 0), !(e.length &lt;= 0)) {
                var u = de.Parse(r), c = 0;
                switch (h) {
                  case "center":
                    c = ut.ENUM_TEXTALIGN_CENTER;
                    break;

                  case "right":
                    c = ut.ENUM_TEXTALIGN_RIGHT;
                }
                this._fast_filltext(t, e, null, i, n, u, s, a, o, c, l);
            }
        }, e.fillWords = function(t, e, i, n, r, s, a, o) {
            if (e &amp;&amp; !(e.length &lt;= 0)) {
                var h = de.Parse(r);
                this._fast_filltext(t, null, e, i, n, h, s, a, o, 0, 0);
            }
        }, e._fast_filltext = function(e, i, n, r, s, a, o, h, l, u, c) {
            if (void 0 === c &amp;&amp; (c = 0), !(i &amp;&amp; i.length &lt; 1 || n &amp;&amp; n.length &lt; 1)) {
                if (l &lt; 0 &amp;&amp; (l = 0), this.setFont(a), this.fontScaleX = this.fontScaleY = 1, !Mt.isConchApp &amp;&amp; t.scaleFontWithCtx) {
                    var _ = 1, f = 1;
                    if (Mt.isConchApp ? (_ = e._curMat.getScaleX(), f = e._curMat.getScaleY()) : (_ = e.getMatScaleX(), 
                    f = e.getMatScaleY()), _ &lt; 1e-4 || f &lt; .1) return;
                    _ &gt; 1 &amp;&amp; (this.fontScaleX = _), f &gt; 1 &amp;&amp; (this.fontScaleY = f);
                }
                a._italic &amp;&amp; (e._italicDeg = 13);
                var d = i, p = !n &amp;&amp; i instanceof laya.utils.WordText, m = i, g = !!n, v = p ? d.pageChars : [], y = 0;
                switch (p ? (m = d._text, (y = d.width) &lt; 0 &amp;&amp; (y = d.width = this.charRender.getWidth(this.fontStr, m))) : y = m ? this.charRender.getWidth(this.fontStr, m) : 0, 
                u) {
                  case ut.ENUM_TEXTALIGN_CENTER:
                    r -= y / 2;
                    break;

                  case ut.ENUM_TEXTALIGN_RIGHT:
                    r -= y;
                }
                d &amp;&amp; v &amp;&amp; this.hasFreedText(v) &amp;&amp; (v = d.pageChars = []);
                var x = null, T = this.renderPerChar = !p || t.forceSplitRender || g || p &amp;&amp; d.splitRender;
                if (!v || v.length &lt; 1) if (T) {
                    var b = 0, w = 0;
                    this._curStrPos = 0;
                    for (var C; ;) {
                        if (g) {
                            var A = n[this._curStrPos++];
                            A ? (C = A.char, b = A.x, w = A.y) : C = null;
                        } else C = this.getNextChar(m);
                        if (!C) break;
                        if (!(x = this.getCharRenderInfo(C, a, o, h, l, !1))) break;
                        if (x.isSpace) ; else {
                            var E = v[x.tex.id];
                            if (E) E = E.words; else {
                                var S = {
                                    texgen: x.tex.genID,
                                    tex: x.tex,
                                    words: []
                                };
                                v[x.tex.id] = S, E = S.words;
                            }
                            Mt.isConchApp ? E.push({
                                ri: x,
                                x: b,
                                y: w,
                                w: x.bmpWidth / this.fontScaleX,
                                h: x.bmpHeight / this.fontScaleY
                            }) : E.push({
                                ri: x,
                                x: b + 1 / this.fontScaleX,
                                y: w,
                                w: (x.bmpWidth - 2) / this.fontScaleX,
                                h: (x.bmpHeight - 1) / this.fontScaleY
                            }), b += x.width;
                        }
                    }
                } else {
                    var M = t.noAtlas || y * this.fontScaleX &gt; t.atlasWidth;
                    x = this.getCharRenderInfo(m, a, o, h, l, M), Mt.isConchApp ? v[0] = {
                        texgen: x.tex.genID,
                        tex: x.tex,
                        words: [ {
                            ri: x,
                            x: 0,
                            y: 0,
                            w: x.bmpWidth / this.fontScaleX,
                            h: x.bmpHeight / this.fontScaleY
                        } ]
                    } : v[0] = {
                        texgen: x.tex.genID,
                        tex: x.tex,
                        words: [ {
                            ri: x,
                            x: 1 / this.fontScaleX,
                            y: 0 / this.fontScaleY,
                            w: (x.bmpWidth - 2) / this.fontScaleX,
                            h: (x.bmpHeight - 1) / this.fontScaleY
                        } ]
                    };
                }
                this._drawResortedWords(e, r, s, v), e._italicDeg = 0;
            }
        }, e._drawResortedWords = function(t, e, i, n) {
            for (var r = t._charSubmitCache &amp;&amp; t._charSubmitCache._enbale, s = t._curMat, a = n.length, o = 0; o &lt; a; o++) {
                var h = n[o];
                if (h) {
                    var l = h.words, u = l.length;
                    if (!(u &lt;= 0)) for (var c = n[o].tex, _ = 0; _ &lt; u; _++) {
                        var f = l[_], d = f.ri;
                        d.isSpace || (d.touch(), t.drawTexAlign = !0, Mt.isConchApp ? t._drawTextureM(c.texture, e + f.x - d.orix, i + f.y - d.oriy, f.w, f.h, null, 1, d.uv) : t._inner_drawTexture(c.texture, c.texture.bitmap.id, e + f.x - d.orix, i + f.y - d.oriy, f.w, f.h, s, d.uv, 1, r), 
                        t.touches &amp;&amp; t.touches.push(d));
                    }
                }
            }
        }, e.hasFreedText = function(t) {
            for (var e = t.length, i = 0; i &lt; e; i++) {
                var n = t[i];
                if (n) {
                    var r = n.tex;
                    if (r.__destroyed || r.genID != n.texgen) return !0;
                }
            }
            return !1;
        }, e.getCharRenderInfo = function(e, i, n, r, s, a) {
            void 0 === a &amp;&amp; (a = !1);
            var o = this.mapFont[i._family];
            void 0 == o &amp;&amp; (this.mapFont[i._family] = o = this.fontID++);
            var h = e + "_" + o + "_" + i._size + "_" + n;
            s &gt; 0 &amp;&amp; (h += "_" + r + s), i._bold &amp;&amp; (h += "P"), 1 == this.fontScaleX &amp;&amp; 1 == this.fontScaleY || (h += (20 * this.fontScaleX | 0) + "_" + (20 * this.fontScaleY | 0));
            var l = 0, u = this.textAtlases.length, c = null, _ = null;
            if (!a) for (l = 0; l &lt; u; l++) if (_ = this.textAtlases[l], c = _.charMaps[h]) return c.touch(), 
            c;
            c = new ft(), this.charRender.scale(this.fontScaleX, this.fontScaleY), c.char = e, 
            c.height = i._size;
            var f = i._size / 3 | 0, d = null, p = Math.ceil(this.charRender.getWidth(this.fontStr, e) * this.fontScaleX);
            if (p &gt; this.charRender.canvasWidth &amp;&amp; (this.charRender.canvasWidth = Math.min(2048, p + 2 * f)), 
            a) {
                d = this.charRender.getCharBmp(e, this.fontStr, s, n, r, c, f, f, f, f, null);
                var m = qe.getTextTexture(d.width, d.height);
                m.addChar(d, 0, 0, c.uv), c.tex = m, c.orix = f, c.oriy = f, m.ri = c, this.isoTextures.push(m);
            } else {
                var g = e.length, v = 1 * s, y = Math.ceil((this.fontSizeW + 2 * v) * this.fontScaleX), x = Math.ceil((this.fontSizeH + 2 * v) * this.fontScaleY);
                t.imgdtRect[0] = (f - this.fontSizeOffX - v) * this.fontScaleX | 0, t.imgdtRect[1] = (f - this.fontSizeOffY - v) * this.fontScaleY | 0, 
                this.renderPerChar || 1 == g ? (t.imgdtRect[2] = Math.max(p, y), t.imgdtRect[3] = Math.max(p, x)) : (t.imgdtRect[2] = -1, 
                t.imgdtRect[3] = x), d = this.charRender.getCharBmp(e, this.fontStr, s, n, r, c, f, f, f, f, t.imgdtRect), 
                _ = this.addBmpData(d, c), t.isWan1Wan ? (c.orix = f, c.oriy = f) : (c.orix = this.fontSizeOffX + v, 
                c.oriy = this.fontSizeOffY + v), _.charMaps[h] = c;
            }
            return c;
        }, e.addBmpData = function(t, e) {
            for (var i = t.width, n = t.height, r = this.textAtlases.length, s = null, a = !1, o = 0; o &lt; r &amp;&amp; (s = this.textAtlases[o], 
            !(a = s.getAEmpty(i, n, this.tmpAtlasPos))); o++) ;
            if (!a) {
                if (s = new kt(), this.textAtlases.push(s), !(a = s.getAEmpty(i, n, this.tmpAtlasPos))) throw "err1";
                this.cleanAtlases();
            }
            return a &amp;&amp; (s.texture.addChar(t, this.tmpAtlasPos.x, this.tmpAtlasPos.y, e.uv), 
            e.tex = s.texture), s;
        }, e.GC = function() {
            for (var e = 0, i = this.textAtlases.length, n = t.destroyAtlasDt, r = 0, s = A.loopCount, a = -1, o = 0, h = null, l = null; e &lt; i; e++) {
                if (l = this.textAtlases[e], h = l.texture) {
                    h.curUsedCovRate, r += h.curUsedCovRateAtlas;
                    var u = l.usedRate - h.curUsedCovRateAtlas;
                    o &lt; u &amp;&amp; (o = u, a = e);
                }
                s - l.texture.lastTouchTm &gt; n &amp;&amp; (t.showLog &amp;&amp; console.log(l.texture.id), l.destroy(), 
                this.textAtlases[e] = this.textAtlases[i - 1], i--, e--, a = -1);
            }
            for (this.textAtlases.length = i, i = this.isoTextures.length, e = 0; e &lt; i; e++) s - (h = this.isoTextures[e]).lastTouchTm &gt; t.destroyUnusedTextureDt &amp;&amp; (h.ri.deleted = !0, 
            h.ri.tex = null, h.destroy(), this.isoTextures[e] = this.isoTextures[i - 1], i--, 
            e--);
            this.isoTextures.length = i;
            var c = this.textAtlases.length &gt; 1 &amp;&amp; this.textAtlases.length - r &gt;= 2;
            (t.atlasWidth * t.atlasWidth * 4 * this.textAtlases.length &gt; t.cleanMem || c || t.simClean) &amp;&amp; (t.simClean = !1, 
            t.showLog &amp;&amp; console.log("æ¸…ç†ä½¿ç”¨çŽ‡ä½Žçš„è´´å›¾ã€‚æ€»ä½¿ç”¨çŽ‡:", r, ":", this.textAtlases.length, "æœ€å·®è´´å›¾:" + a), 
            a &gt;= 0 &amp;&amp; ((l = this.textAtlases[a]).destroy(), this.textAtlases[a] = this.textAtlases[this.textAtlases.length - 1], 
            this.textAtlases.length = this.textAtlases.length - 1)), qe.clean();
        }, e.cleanAtlases = function() {}, e.getCharBmp = function(t) {}, e.checkBmpLine = function(t, e, i, n) {
            this.bmpData32.buffer != t.data.buffer &amp;&amp; (this.bmpData32 = new Uint32Array(t.data.buffer));
            for (var r = t.width * e + i, s = i; s &lt; n; s++) if (0 != this.bmpData32[r++]) return !0;
            return !1;
        }, e.updateBbx = function(t, e, i) {
            void 0 === i &amp;&amp; (i = !1);
            var n = t.width, r = t.height, s = 0, a = e[1], o = 0, h = a;
            if (this.checkBmpLine(t, a, 0, n)) for (;;) {
                if (1 + (h = (a + o) / 2 | 0) &gt;= a) {
                    e[1] = h;
                    break;
                }
                this.checkBmpLine(t, h, 0, n) ? a = h : o = h;
            }
            if (e[3] &gt; r) e[3] = r; else if (h = a = e[3], o = r, this.checkBmpLine(t, a, 0, n)) for (;;) {
                if ((h = (a + o) / 2 | 0) - 1 &lt;= a) {
                    e[3] = h;
                    break;
                }
                this.checkBmpLine(t, h, 0, n) ? a = h : o = h;
            }
            if (!i) {
                var l = e[0], u = n * e[1];
                for (h = e[1]; h &lt; e[3]; h++) {
                    for (s = 0; s &lt; l; s++) if (0 != this.bmpData32[u + s]) {
                        l = s;
                        break;
                    }
                    u += n;
                }
                e[0] = l;
                var c = e[2];
                for (u = n * e[1], h = e[1]; h &lt; e[3]; h++) {
                    for (s = c; s &lt; n; s++) if (0 != this.bmpData32[u + s]) {
                        c = s;
                        break;
                    }
                    u += n;
                }
                e[2] = c;
            }
        }, e.getFontSizeInfo = function(e) {
            var i = this.fontSizeInfo[e];
            if (void 0 != i) return i;
            var n = "bold " + t.standardFontSize + "px " + e;
            if (t.isWan1Wan) {
                this.fontSizeW = 1.5 * this.charRender.getWidth(n, "æœ‰"), this.fontSizeH = 1.5 * t.standardFontSize;
                var r = this.fontSizeW &lt;&lt; 8 | this.fontSizeH;
                return this.fontSizeInfo[e] = r, r;
            }
            t.pixelBBX[0] = t.standardFontSize / 2, t.pixelBBX[1] = t.standardFontSize / 2, 
            t.pixelBBX[2] = t.standardFontSize, t.pixelBBX[3] = t.standardFontSize;
            var s = 16, a = 16;
            this.charRender.scale(1, 1), t.tmpRI.height = t.standardFontSize;
            var o = this.charRender.getCharBmp("g", n, 0, "red", null, t.tmpRI, s, a, 16, 16);
            Mt.isConchApp &amp;&amp; (o.data = new Uint8ClampedArray(o.data)), this.bmpData32 = new Uint32Array(o.data.buffer), 
            this.updateBbx(o, t.pixelBBX, !1), o = this.charRender.getCharBmp("æœ‰", n, 0, "red", null, t.tmpRI, a, a, 16, 16), 
            Mt.isConchApp &amp;&amp; (o.data = new Uint8ClampedArray(o.data)), this.bmpData32 = new Uint32Array(o.data.buffer), 
            t.pixelBBX[2] &lt; s + t.tmpRI.width &amp;&amp; (t.pixelBBX[2] = s + t.tmpRI.width), this.updateBbx(o, t.pixelBBX, !1), 
            Mt.isConchApp &amp;&amp; (s = 0, a = 0);
            var h = Math.max(s - t.pixelBBX[0], 0) &lt;&lt; 24 | Math.max(a - t.pixelBBX[1], 0) &lt;&lt; 16 | t.pixelBBX[2] - t.pixelBBX[0] &lt;&lt; 8 | t.pixelBBX[3] - t.pixelBBX[1] + 1;
            return this.fontSizeInfo[e] = h, h;
        }, e.printDbgInfo = function() {
            console.log("å›¾é›†ä¸ªæ•°:" + this.textAtlases.length + ",æ¯ä¸ªå›¾é›†å¤§å°:" + t.atlasWidth + "x" + t.atlasWidth, " ç”¨canvas:", t.isWan1Wan), 
            console.log("å›¾é›†å&nbsp;ç”¨ç©ºé—´:" + t.atlasWidth * t.atlasWidth * 4 / 1024 / 1024 * this.textAtlases.length + "M"), 
            console.log("ç¼“å­˜ç”¨åˆ°çš„å­—ä½“:");
            for (var e in this.mapFont) {
                var i = this.getFontSizeInfo(e), n = i &gt;&gt; 24, r = i &gt;&gt; 16 &amp; 255, s = i &gt;&gt; 8 &amp; 255, a = 255 &amp; i;
                console.log("    " + e, " off:", n, r, " size:", s, a);
            }
            var o = 0;
            console.log("ç¼“å­˜æ•°æ®:");
            var h = 0, l = 0;
            this.textAtlases.forEach(function(e) {
                var i = e.texture.id, n = A.loopCount - e.texture.lastTouchTm, r = n &gt; 0 ? n + "å¸§ä»¥å‰" : "å½“å‰å¸§";
                h += e.texture.curUsedCovRate, l += e.texture.curUsedCovRateAtlas, console.log("--å›¾é›†(id:" + i + ",å½“å‰ä½¿ç”¨çŽ‡:" + (1e3 * e.texture.curUsedCovRate | 0) + "â€°", "å½“å‰å›¾é›†ä½¿ç”¨çŽ‡:", (100 * e.texture.curUsedCovRateAtlas | 0) + "%", "å›¾é›†ä½¿ç”¨çŽ‡:", 100 * e.usedRate | 0, "%, ä½¿ç”¨äºŽ:" + r + ")--:");
                for (var s in e.charMaps) {
                    var a = e.charMaps[s];
                    console.log("     off:", a.orix, a.oriy, " bmpå®½é«˜:", a.bmpWidth, a.bmpHeight, "æ—&nbsp;æ•ˆ:", a.deleted, "touchdt:", A.loopCount - a.touchTick, "ä½ç½®:", a.uv[0] * t.atlasWidth | 0, a.uv[1] * t.atlasWidth | 0, "å­—ç¬¦:", a.char, "key:", s), 
                    o++;
                }
            }), console.log("ç‹¬ç«‹è´´å›¾æ–‡å­—(" + this.isoTextures.length + "ä¸ª):"), this.isoTextures.forEach(function(t) {
                console.log("    size:", t._texW, t._texH, "touché—´éš”:", A.loopCount - t.lastTouchTm, "char:", t.ri.char);
            }), console.log("æ€»ç¼“å­˜:", o, "æ€»ä½¿ç”¨çŽ‡:", h, "æ€»å½“å‰å›¾é›†ä½¿ç”¨çŽ‡:", l);
        }, e.showAtlas = function(e, n, r, s, a, o) {
            if (!this.textAtlases[e]) return console.log("æ²¡æœ‰è¿™ä¸ªå›¾é›†"), null;
            var h = new je(), l = this.textAtlases[e].texture, u = {
                width: t.atlasWidth,
                height: t.atlasWidth,
                sourceWidth: t.atlasWidth,
                sourceHeight: t.atlasWidth,
                offsetX: 0,
                offsetY: 0,
                getIsReady: function() {
                    return !0;
                },
                _addReference: function() {},
                _removeReference: function() {},
                _getSource: function() {
                    return l._getSource();
                },
                bitmap: {
                    id: l.id
                },
                _uv: Ie.DEF_UV
            };
            return h.size = function(t, e) {
                return this.width = t, this.height = e, h.graphics.clear(), h.graphics.drawRect(0, 0, h.width, h.height, n), 
                h.graphics.drawTexture(u, 0, 0, h.width, h.height), this;
            }, h.graphics.drawRect(0, 0, a, o, n), h.graphics.drawTexture(u, 0, 0, a, o), h.pos(r, s), 
            i.stage.addChild(h), h;
        }, e.filltext_native = function(t, e, i, n, r, s, a, o, h, l, u) {
            if (void 0 === u &amp;&amp; (u = 0), !(e &amp;&amp; e.length &lt;= 0 || i &amp;&amp; i.length &lt; 1)) {
                var c = de.Parse(s), _ = 0;
                switch (l) {
                  case "center":
                    _ = ut.ENUM_TEXTALIGN_CENTER;
                    break;

                  case "right":
                    _ = ut.ENUM_TEXTALIGN_RIGHT;
                }
                return this._fast_filltext(t, e, i, n, r, c, a, o, h, _, u);
            }
        }, t.useOldCharBook = !1, t.atlasWidth = 2048, t.noAtlas = !1, t.forceSplitRender = !1, 
        t.forceWholeRender = !1, t.scaleFontWithCtx = !0, t.standardFontSize = 32, t.destroyAtlasDt = 10, 
        t.checkCleanTextureDt = 2e3, t.destroyUnusedTextureDt = 3e3, t.cleanMem = 104857600, 
        t.isWan1Wan = !1, t.showLog = !1, t.debugUV = !1, t.atlasWidth2 = 4194304, t.textRenderInst = null, 
        t.simClean = !1, n(t, [ "tmpRI", function() {
            return this.tmpRI = new ft();
        }, "pixelBBX", function() {
            return this.pixelBBX = [ 0, 0, 0, 0 ];
        }, "imgdtRect", function() {
            return this.imgdtRect = [ 0, 0, 0, 0 ];
        } ]), t;
    }(), A = function() {
        function t() {}
        return r(t, "laya.utils.Stat"), s(1, t, "onclick", null, function(e) {
            t._sp &amp;&amp; t._sp.on("click", t._sp, e), t._canvas &amp;&amp; (t._canvas.source.onclick = e, 
            t._canvas.source.style.pointerEvents = "");
        }), t.show = function(e, i) {
            void 0 === e &amp;&amp; (e = 0), void 0 === i &amp;&amp; (i = 0), Dt.onMiniGame || Dt.onLimixiu || Mt.isConchApp || Dt.onBDMiniGame || Dt.onKGMiniGame || Dt.onQGMiniGame || (t._useCanvas = !0), 
            t._show = !0, t._fpsData.length = 60, t._view[0] = {
                title: "FPS(Canvas)",
                value: "_fpsStr",
                color: "yellow",
                units: "int"
            }, t._view[1] = {
                title: "Sprite",
                value: "_spriteStr",
                color: "white",
                units: "int"
            }, t._view[2] = {
                title: "RenderBatches",
                value: "renderBatches",
                color: "white",
                units: "int"
            }, t._view[3] = {
                title: "SavedRenderBatches",
                value: "savedRenderBatches",
                color: "white",
                units: "int"
            }, t._view[4] = {
                title: "CPUMemory",
                value: "cpuMemory",
                color: "yellow",
                units: "M"
            }, t._view[5] = {
                title: "GPUMemory",
                value: "gpuMemory",
                color: "yellow",
                units: "M"
            }, t._view[6] = {
                title: "Shader",
                value: "shaderCall",
                color: "white",
                units: "int"
            }, Mt.is3DMode ? (t._view[0].title = "FPS(3D)", t._view[7] = {
                title: "TriFaces",
                value: "trianglesFaces",
                color: "white",
                units: "int"
            }, t._view[8] = {
                title: "FrustumCulling",
                value: "frustumCulling",
                color: "white",
                units: "int"
            }, t._view[9] = {
                title: "OctreeNodeCulling",
                value: "octreeNodeCulling",
                color: "white",
                units: "int"
            }) : (t._view[0].title = "FPS(WebGL)", t._view[7] = {
                title: "Canvas",
                value: "_canvasStr",
                color: "white",
                units: "int"
            }), t._useCanvas ? t.createUIPre(e, i) : t.createUI(e, i), t.enable();
        }, t.createUIPre = function(e, i) {
            var n = Dt.pixelRatio;
            t._width = 180 * n, t._vx = 120 * n, t._height = n * (12 * t._view.length + 3 * n) + 4, 
            t._fontSize = 12 * n;
            for (var r = 0; r &lt; t._view.length; r++) t._view[r].x = 4, t._view[r].y = r * t._fontSize + 2 * n;
            t._canvas || ((t._canvas = new si(!0)).size(t._width, t._height), (t._ctx = t._canvas.getContext("2d")).textBaseline = "top", 
            t._ctx.font = t._fontSize + "px Arial", t._canvas.source.style.cssText = "pointer-events:none;background:rgba(150,150,150,0.8);z-index:100000;position: absolute;direction:ltr;left:" + e + "px;top:" + i + "px;width:" + t._width / n + "px;height:" + t._height / n + "px;"), 
            Dt.onKGMiniGame || Dt.container.appendChild(t._canvas.source), t._first = !0, t.loop(), 
            t._first = !1;
        }, t.createUI = function(e, i) {
            var n = t._sp, r = Dt.pixelRatio;
            n || (n = new je(), (t._leftText = new ei()).pos(5, 5), t._leftText.color = "#ffffff", 
            n.addChild(t._leftText), (t._txt = new ei()).pos(80 * r, 5), t._txt.color = "#ffffff", 
            n.addChild(t._txt), t._sp = n), n.pos(e, i);
            for (var s = "", a = 0; a &lt; t._view.length; a++) s += t._view[a].title + "\n";
            t._leftText.text = s;
            var o = 138 * r, h = r * (12 * t._view.length + 3 * r) + 4;
            t._txt.fontSize = t._fontSize * r, t._leftText.fontSize = t._fontSize * r, n.size(o, h), 
            n.graphics.clear(), n.graphics.alpha(.5), n.graphics.drawRect(0, 0, o, h, "#999999"), 
            n.graphics.alpha(2), t.loop();
        }, t.enable = function() {
            i.systemTimer.frameLoop(1, t, t.loop);
        }, t.hide = function() {
            t._show = !1, i.systemTimer.clear(t, t.loop), t._canvas &amp;&amp; Dt.removeElement(t._canvas.source);
        }, t.clear = function() {
            t.trianglesFaces = t.renderBatches = t.savedRenderBatches = t.shaderCall = t.spriteRenderUseCacheCount = t.frustumCulling = t.octreeNodeCulling = t.canvasNormal = t.canvasBitmap = t.canvasReCache = 0;
        }, t.loop = function() {
            t._count++;
            var e = Dt.now();
            if (!(e - t._timer &lt; 1e3)) {
                var i = t._count;
                if (t.FPS = Math.round(1e3 * i / (e - t._timer)), t._show) {
                    t.trianglesFaces = Math.round(t.trianglesFaces / i), t.renderBatches = t._useCanvas ? Math.round(t.renderBatches / i) : Math.round(t.renderBatches / i) - 1, 
                    t.savedRenderBatches = Math.round(t.savedRenderBatches / i), t.shaderCall = Math.round(t.shaderCall / i), 
                    t.spriteRenderUseCacheCount = Math.round(t.spriteRenderUseCacheCount / i), t.canvasNormal = Math.round(t.canvasNormal / i), 
                    t.canvasBitmap = Math.round(t.canvasBitmap / i), t.canvasReCache = Math.ceil(t.canvasReCache / i), 
                    t.frustumCulling = Math.round(t.frustumCulling / i), t.octreeNodeCulling = Math.round(t.octreeNodeCulling / i);
                    var n = t.FPS &gt; 0 ? Math.floor(1e3 / t.FPS).toString() : " ";
                    t._fpsStr = t.FPS + (t.renderSlow ? " slow" : "") + " " + n, t._spriteStr = t._useCanvas ? t.spriteCount - 1 + (t.spriteRenderUseCacheCount ? "/" + t.spriteRenderUseCacheCount : "") : t.spriteCount - 4 + (t.spriteRenderUseCacheCount ? "/" + t.spriteRenderUseCacheCount : ""), 
                    t._canvasStr = t.canvasReCache + "/" + t.canvasNormal + "/" + t.canvasBitmap, t.cpuMemory = Ee.cpuMemory, 
                    t.gpuMemory = Ee.gpuMemory, t._useCanvas ? t.renderInfoPre() : t.renderInfo(), t.clear();
                }
                t._count = 0, t._timer = e;
            }
        }, t.renderInfoPre = function() {
            var e, i, n = 0;
            if (t._canvas) {
                var r = t._ctx;
                for (r.clearRect(t._first ? 0 : t._vx, 0, t._width, t._height), n = 0; n &lt; t._view.length; n++) e = t._view[n], 
                t._first &amp;&amp; (r.fillStyle = "white", r.fillText(e.title, e.x, e.y)), r.fillStyle = e.color, 
                i = t[e.value], "M" == e.units &amp;&amp; (i = Math.floor(i / 1048576 * 100) / 100 + " M"), 
                r.fillText(i + "", e.x + t._vx, e.y);
            }
        }, t.renderInfo = function() {
            for (var e = "", i = 0; i &lt; t._view.length; i++) {
                var n = t._view[i], r = t[n.value];
                "M" == n.units &amp;&amp; (r = Math.floor(r / 1048576 * 100) / 100 + " M"), "K" == n.units &amp;&amp; (r = Math.floor(r / 1024 * 100) / 100 + " K"), 
                e += r + "\n";
            }
            t._txt.text = e;
        }, t.FPS = 0, t.loopCount = 0, t.shaderCall = 0, t.renderBatches = 0, t.savedRenderBatches = 0, 
        t.trianglesFaces = 0, t.spriteCount = 0, t.spriteRenderUseCacheCount = 0, t.frustumCulling = 0, 
        t.octreeNodeCulling = 0, t.canvasNormal = 0, t.canvasBitmap = 0, t.canvasReCache = 0, 
        t.renderSlow = !1, t.gpuMemory = 0, t.cpuMemory = 0, t._fpsStr = null, t._canvasStr = null, 
        t._spriteStr = null, t._fpsData = [], t._timer = 0, t._count = 0, t._view = [], 
        t._fontSize = 12, t._txt = null, t._leftText = null, t._sp = null, t._titleSp = null, 
        t._bgSp = null, t._show = !1, t._useCanvas = !1, t._canvas = null, t._ctx = null, 
        t._first = !1, t._vx = NaN, t._width = 0, t._height = 100, t;
    }(), E = function() {
        function t() {
            this._lastOriX = 0, this._lastOriY = 0, this.paths = [], this._curPath = null;
        }
        var e;
        r(t, "laya.webgl.canvas.Path");
        var i = t.prototype;
        return i.beginPath = function(t) {
            this.paths.length = 1, this._curPath = this.paths[0] = new e(), this._curPath.convex = t;
        }, i.closePath = function() {
            this._curPath.loop = !0;
        }, i.newPath = function() {
            this._curPath = new e(), this.paths.push(this._curPath);
        }, i.addPoint = function(t, e) {
            this._curPath.path.push(t, e);
        }, i.push = function(t, i) {
            this._curPath ? this._curPath.path.length &gt; 0 &amp;&amp; (this._curPath = new e(), this.paths.push(this._curPath)) : (this._curPath = new e(), 
            this.paths.push(this._curPath));
            var n = this._curPath;
            n.path = t.slice(), n.convex = i;
        }, i.reset = function() {
            this.paths.length = 0;
        }, t.__init$ = function() {
            e = function() {
                function t() {
                    this.path = [], this.loop = !1, this.convex = !1;
                }
                return r(t, ""), t;
            }();
        }, t;
    }(), S = function() {
        function t() {
            this.mouseX = 0, this.mouseY = 0, this.disableMouseEvent = !1, this.mouseDownTime = 0, 
            this.mouseMoveAccuracy = 2, this._stage = null, this._captureSp = null, this._captureExlusiveMode = !1, 
            this._hitCaputreSp = !1, this._target = null, this._lastMoveTimer = 0, this._isLeftMouse = !1, 
            this._touchIDs = {}, this._id = 1, this._tTouchID = 0, this._event = new w(), this._captureChain = [], 
            this._matrix = new st(), this._point = new Yt(), this._rect = new mt(), this._prePoint = new Yt(), 
            this._curTouchID = NaN;
        }
        r(t, "laya.events.MouseManager");
        var e = t.prototype;
        return e.__init__ = function(e, i) {
            var n = this;
            this._stage = e;
            var r = this;
            i.oncontextmenu = function(e) {
                if (t.enabled) return !1;
            }, i.addEventListener("mousedown", function(e) {
                t.enabled &amp;&amp; (Dt.onIE || e.preventDefault(), r.mouseDownTime = Dt.now(), n.runEvent(e));
            }), i.addEventListener("mouseup", function(e) {
                t.enabled &amp;&amp; (e.preventDefault(), r.mouseDownTime = -Dt.now(), n.runEvent(e));
            }, !0), i.addEventListener("mousemove", function(e) {
                if (t.enabled) {
                    e.preventDefault();
                    var i = Dt.now();
                    if (i - r._lastMoveTimer &lt; 10) return;
                    r._lastMoveTimer = i, n.runEvent(e);
                }
            }, !0), i.addEventListener("mouseout", function(e) {
                t.enabled &amp;&amp; n.runEvent(e);
            }), i.addEventListener("mouseover", function(e) {
                t.enabled &amp;&amp; n.runEvent(e);
            }), i.addEventListener("touchstart", function(e) {
                t.enabled &amp;&amp; (t._isFirstTouch || li.isInputting || e.preventDefault(), r.mouseDownTime = Dt.now(), 
                n.runEvent(e));
            }), i.addEventListener("touchend", function(e) {
                t.enabled ? (t._isFirstTouch || li.isInputting || e.preventDefault(), t._isFirstTouch = !1, 
                r.mouseDownTime = -Dt.now(), n.runEvent(e)) : n._curTouchID = NaN;
            }, !0), i.addEventListener("touchmove", function(e) {
                t.enabled &amp;&amp; (e.preventDefault(), n.runEvent(e));
            }, !0), i.addEventListener("touchcancel", function(e) {
                t.enabled ? (e.preventDefault(), n.runEvent(e)) : n._curTouchID = NaN;
            }, !0), i.addEventListener("mousewheel", function(e) {
                t.enabled &amp;&amp; n.runEvent(e);
            }), i.addEventListener("DOMMouseScroll", function(e) {
                t.enabled &amp;&amp; n.runEvent(e);
            });
        }, e.initEvent = function(t, e) {
            this._event._stoped = !1, this._event.nativeEvent = e || t, this._target = null, 
            this._point.setTo(t.pageX || t.clientX, t.pageY || t.clientY), this._stage._canvasTransform &amp;&amp; (this._stage._canvasTransform.invertTransformPoint(this._point), 
            this.mouseX = this._point.x, this.mouseY = this._point.y), this._event.touchId = t.identifier || 0, 
            this._tTouchID = this._event.touchId;
            var i;
            (i = _.I._event)._stoped = !1, i.nativeEvent = this._event.nativeEvent, i.touchId = this._event.touchId;
        }, e.checkMouseWheel = function(t) {
            this._event.delta = t.wheelDelta ? .025 * t.wheelDelta : -t.detail;
            for (var e = _.I.getLastOvers(), i = 0, n = e.length; i &lt; n; i++) {
                var r = e[i];
                r.event("mousewheel", this._event.setTo("mousewheel", r, this._target));
            }
        }, e.onMouseMove = function(t) {
            _.I.onMouseMove(t, this._tTouchID);
        }, e.onMouseDown = function(t) {
            if (li.isInputting &amp;&amp; i.stage.focus &amp;&amp; i.stage.focus.focus &amp;&amp; !i.stage.focus.contains(this._target)) {
                var e = i.stage.focus._tf || i.stage.focus, n = t._tf || t;
                n instanceof laya.display.Input &amp;&amp; n.multiline == e.multiline ? e._focusOut() : e.focus = !1;
            }
            _.I.onMouseDown(t, this._tTouchID, this._isLeftMouse);
        }, e.onMouseUp = function(t) {
            _.I.onMouseUp(t, this._tTouchID, this._isLeftMouse);
        }, e.check = function(t, e, i, n) {
            this._point.setTo(e, i), t.fromParentPoint(this._point), e = this._point.x, i = this._point.y;
            var r = t._style.scrollRect;
            if (r &amp;&amp; (this._rect.setTo(r.x, r.y, r.width, r.height), !this._rect.contains(e, i))) return !1;
            if (!this.disableMouseEvent) {
                if (t.hitTestPrior &amp;&amp; !t.mouseThrough &amp;&amp; !this.hitTest(t, e, i)) return !1;
                for (var s = t._children.length - 1; s &gt; -1; s--) {
                    var a = t._children[s];
                    if (!a.destroyed &amp;&amp; a._mouseState &gt; 1 &amp;&amp; a._visible &amp;&amp; this.check(a, e, i, n)) return !0;
                }
                for (s = t._extUIChild.length - 1; s &gt;= 0; s--) {
                    var o = t._extUIChild[s];
                    if (!o.destroyed &amp;&amp; o._mouseState &gt; 1 &amp;&amp; o._visible &amp;&amp; this.check(o, e, i, n)) return !0;
                }
            }
            var h = !(!t.hitTestPrior || t.mouseThrough || this.disableMouseEvent) || this.hitTest(t, e, i);
            return h ? (this._target = t, n.call(this, t), this._target == this._hitCaputreSp &amp;&amp; (this._hitCaputreSp = !0)) : n === this.onMouseUp &amp;&amp; t === this._stage &amp;&amp; (this._target = this._stage, 
            n.call(this, this._target)), h;
        }, e.hitTest = function(t, e, i) {
            var n = !1;
            t.scrollRect &amp;&amp; (e -= t._style.scrollRect.x, i -= t._style.scrollRect.y);
            var r = t._style.hitArea;
            return r &amp;&amp; r._hit ? r.contains(e, i) : ((t.width &gt; 0 &amp;&amp; t.height &gt; 0 || t.mouseThrough || r) &amp;&amp; (n = t.mouseThrough ? t.getGraphicBounds().contains(e, i) : (r || this._rect.setTo(0, 0, t.width, t.height)).contains(e, i)), 
            n);
        }, e._checkAllBaseUI = function(t, e, i) {
            var n = this.handleExclusiveCapture(this.mouseX, this.mouseY, i);
            return !!n || (n = this.check(this._stage, this.mouseX, this.mouseY, i), this.handleCapture(this.mouseX, this.mouseY, i) || n);
        }, e.check3DUI = function(t, e, i) {
            for (var n = this._stage._3dUI, r = 0, s = !1; r &lt; n.length; r++) {
                var a = n[r];
                this._stage._curUIBase = a, !a.destroyed &amp;&amp; a._mouseState &gt; 1 &amp;&amp; a._visible &amp;&amp; (s = s || this.check(a, this.mouseX, this.mouseY, i));
            }
            return this._stage._curUIBase = this._stage, s;
        }, e.handleExclusiveCapture = function(t, e, i) {
            if (this._captureExlusiveMode &amp;&amp; this._captureSp &amp;&amp; this._captureChain.length &gt; 0) {
                var n;
                this._point.setTo(t, e);
                for (var r = 0; r &lt; this._captureChain.length; r++) (n = this._captureChain[r]).fromParentPoint(this._point);
                return this._target = n, i.call(this, n), !0;
            }
            return !1;
        }, e.handleCapture = function(t, e, i) {
            if (!this._hitCaputreSp &amp;&amp; this._captureSp &amp;&amp; this._captureChain.length &gt; 0) {
                var n;
                this._point.setTo(t, e);
                for (var r = 0; r &lt; this._captureChain.length; r++) (n = this._captureChain[r]).fromParentPoint(this._point);
                return this._target = n, i.call(this, n), !0;
            }
            return !1;
        }, e.runEvent = function(e) {
            var i, n = 0, r = 0;
            switch ("mousemove" !== e.type &amp;&amp; (this._prePoint.x = this._prePoint.y = -1e6), 
            e.type) {
              case "mousedown":
                this._touchIDs[0] = this._id++, t._isTouchRespond ? t._isTouchRespond = !1 : (this._isLeftMouse = 0 === e.button, 
                this.initEvent(e), this._checkAllBaseUI(this.mouseX, this.mouseY, this.onMouseDown));
                break;

              case "mouseup":
                this._isLeftMouse = 0 === e.button, this.initEvent(e), this._checkAllBaseUI(this.mouseX, this.mouseY, this.onMouseUp);
                break;

              case "mousemove":
                Math.abs(this._prePoint.x - e.clientX) + Math.abs(this._prePoint.y - e.clientY) &gt;= this.mouseMoveAccuracy &amp;&amp; (this._prePoint.x = e.clientX, 
                this._prePoint.y = e.clientY, this.initEvent(e), this._checkAllBaseUI(this.mouseX, this.mouseY, this.onMouseMove));
                break;

              case "touchstart":
                t._isTouchRespond = !0, this._isLeftMouse = !0;
                var s = e.changedTouches;
                for (n = 0, r = s.length; n &lt; r; n++) i = s[n], (t.multiTouchEnabled || isNaN(this._curTouchID)) &amp;&amp; (this._curTouchID = i.identifier, 
                this._id % 200 == 0 &amp;&amp; (this._touchIDs = {}), this._touchIDs[i.identifier] = this._id++, 
                this.initEvent(i, e), this._checkAllBaseUI(this.mouseX, this.mouseY, this.onMouseDown));
                break;

              case "touchend":
              case "touchcancel":
                t._isTouchRespond = !0, this._isLeftMouse = !0;
                var a = e.changedTouches;
                for (n = 0, r = a.length; n &lt; r; n++) i = a[n], (t.multiTouchEnabled || i.identifier == this._curTouchID) &amp;&amp; (this._curTouchID = NaN, 
                this.initEvent(i, e), this._checkAllBaseUI(this.mouseX, this.mouseY, this.onMouseUp) || this.onMouseUp(null));
                break;

              case "touchmove":
                var o = e.changedTouches;
                for (n = 0, r = o.length; n &lt; r; n++) i = o[n], (t.multiTouchEnabled || i.identifier == this._curTouchID) &amp;&amp; (this.initEvent(i, e), 
                this._checkAllBaseUI(this.mouseX, this.mouseY, this.onMouseMove));
                break;

              case "wheel":
              case "mousewheel":
              case "DOMMouseScroll":
                this.checkMouseWheel(e);
                break;

              case "mouseout":
                _.I.stageMouseOut();
                break;

              case "mouseover":
                this._stage.event("mouseover", this._event.setTo("mouseover", this._stage, this._stage));
            }
        }, e.setCapture = function(t, e) {
            void 0 === e &amp;&amp; (e = !1), this._captureSp = t, this._captureExlusiveMode = e, this._captureChain.length = 0, 
            this._captureChain.push(t);
            for (var n = t; n != i.stage &amp;&amp; n != i.stage._curUIBase &amp;&amp; (n = n.parent); ) this._captureChain.splice(0, 0, n);
        }, e.releaseCapture = function() {
            console.log("release capture"), this._captureSp = null;
        }, t.enabled = !0, t.multiTouchEnabled = !0, t._isTouchRespond = !1, t._isFirstTouch = !0, 
        n(t, [ "instance", function() {
            return this.instance = new t();
        } ]), t;
    }(), M = function() {
        function t() {
            this.useDic = {}, this.shapeDic = {}, this.shapeLineDic = {}, this._id = 0, this._checkKey = !1, 
            this._freeIdArray = [], Q.regCacheByFunction(ie.bind(this.startDispose, this), ie.bind(this.getCacheList, this));
        }
        r(t, "laya.utils.VectorGraphManager");
        var e = t.prototype;
        return e.getId = function() {
            return this._id++;
        }, e.addShape = function(t, e) {
            this.shapeDic[t] = e, this.useDic[t] || (this.useDic[t] = !0);
        }, e.addLine = function(t, e) {
            this.shapeLineDic[t] = e, this.shapeLineDic[t] || (this.shapeLineDic[t] = !0);
        }, e.getShape = function(t) {
            this._checkKey &amp;&amp; null != this.useDic[t] &amp;&amp; (this.useDic[t] = !0);
        }, e.deleteShape = function(t) {
            this.shapeDic[t] &amp;&amp; (this.shapeDic[t] = null, delete this.shapeDic[t]), this.shapeLineDic[t] &amp;&amp; (this.shapeLineDic[t] = null, 
            delete this.shapeLineDic[t]), null != this.useDic[t] &amp;&amp; delete this.useDic[t];
        }, e.getCacheList = function() {
            var t, e = [];
            for (t in this.shapeDic) e.push(this.shapeDic[t]);
            for (t in this.shapeLineDic) e.push(this.shapeLineDic[t]);
            return e;
        }, e.startDispose = function(t) {
            var e;
            for (e in this.useDic) this.useDic[e] = !1;
            this._checkKey = !0;
        }, e.endDispose = function() {
            if (this._checkKey) {
                var t;
                for (t in this.useDic) this.useDic[t] || this.deleteShape(t);
                this._checkKey = !1;
            }
        }, t.getInstance = function() {
            return t.instance = t.instance || new t();
        }, t.instance = null, t;
    }(), R = function() {
        function t() {}
        return r(t, "laya.maths.MathUtil"), t.subtractVector3 = function(t, e, i) {
            i[0] = t[0] - e[0], i[1] = t[1] - e[1], i[2] = t[2] - e[2];
        }, t.lerp = function(t, e, i) {
            return t * (1 - i) + e * i;
        }, t.scaleVector3 = function(t, e, i) {
            i[0] = t[0] * e, i[1] = t[1] * e, i[2] = t[2] * e;
        }, t.lerpVector3 = function(t, e, i, n) {
            var r = t[0], s = t[1], a = t[2];
            n[0] = r + i * (e[0] - r), n[1] = s + i * (e[1] - s), n[2] = a + i * (e[2] - a);
        }, t.lerpVector4 = function(t, e, i, n) {
            var r = t[0], s = t[1], a = t[2], o = t[3];
            n[0] = r + i * (e[0] - r), n[1] = s + i * (e[1] - s), n[2] = a + i * (e[2] - a), 
            n[3] = o + i * (e[3] - o);
        }, t.slerpQuaternionArray = function(t, e, i, n, r, s, a) {
            var o, h, l, u, c, _ = t[e + 0], f = t[e + 1], d = t[e + 2], p = t[e + 3], m = i[n + 0], g = i[n + 1], v = i[n + 2], y = i[n + 3];
            return (h = _ * m + f * g + d * v + p * y) &lt; 0 &amp;&amp; (h = -h, m = -m, g = -g, v = -v, 
            y = -y), 1 - h &gt; 1e-6 ? (o = Math.acos(h), l = Math.sin(o), u = Math.sin((1 - r) * o) / l, 
            c = Math.sin(r * o) / l) : (u = 1 - r, c = r), s[a + 0] = u * _ + c * m, s[a + 1] = u * f + c * g, 
            s[a + 2] = u * d + c * v, s[a + 3] = u * p + c * y, s;
        }, t.getRotation = function(t, e, i, n) {
            return Math.atan2(n - e, i - t) / Math.PI * 180;
        }, t.sortBigFirst = function(t, e) {
            return t == e ? 0 : e &gt; t ? 1 : -1;
        }, t.sortSmallFirst = function(t, e) {
            return t == e ? 0 : e &gt; t ? -1 : 1;
        }, t.sortNumBigFirst = function(t, e) {
            return parseFloat(e) - parseFloat(t);
        }, t.sortNumSmallFirst = function(t, e) {
            return parseFloat(t) - parseFloat(e);
        }, t.sortByKey = function(e, i, n) {
            void 0 === i &amp;&amp; (i = !1), void 0 === n &amp;&amp; (n = !0);
            var r;
            return r = i ? n ? t.sortNumBigFirst : t.sortBigFirst : n ? t.sortNumSmallFirst : t.sortSmallFirst, 
            function(t, i) {
                return r(t[e], i[e]);
            };
        }, t;
    }(), I = function() {
        function t(e, i) {
            if (a.map[e]) return this._fun = a.map[e], void (this._next = t.NORENDER);
            switch (this._next = i || t.NORENDER, e) {
              case 0:
                return void (this._fun = this._no);

              case 1:
                return void (this._fun = this._alpha);

              case 2:
                return void (this._fun = this._transform);

              case 4:
                return void (this._fun = this._blend);

              case 8:
                return void (this._fun = this._canvas);

              case 32:
                return void (this._fun = this._mask);

              case 64:
                return void (this._fun = this._clip);

              case 128:
                return void (this._fun = this._style);

              case 512:
                return void (this._fun = this._graphics);

              case 8192:
                return void (this._fun = this._children);

              case 2048:
                return void (this._fun = this._custom);

              case 256:
                return void (this._fun = this._texture);

              case 16:
                return void (this._fun = c._filter);

              case 69905:
                return void (this._fun = t._initRenderFun);
            }
            this.onCreate(e);
        }
        r(t, "laya.renders.RenderSprite");
        var e = t.prototype;
        return e.onCreate = function(t) {}, e._style = function(t, e, i, n) {
            var r = t._style;
            null != r.render &amp;&amp; r.render(t, e, i, n);
            var s = this._next;
            s._fun.call(s, t, e, i, n);
        }, e._no = function(t, e, i, n) {}, e._custom = function(t, e, i, n) {
            t.customRender(e, i, n), this._next._fun.call(this._next, t, e, i - t.pivotX, n - t.pivotY);
        }, e._clip = function(e, i, n, r) {
            var s = this._next;
            if (s != t.NORENDER) {
                var a = e._style.scrollRect;
                i.save(), i.clipRect(n, r, a.width, a.height), s._fun.call(s, e, i, n - a.x, r - a.y), 
                i.restore();
            }
        }, e._texture = function(e, i, n, r) {
            var s = e.texture;
            s._getSource() &amp;&amp; i.drawTexture(s, n - e.pivotX + s.offsetX, r - e.pivotY + s.offsetY, e._width || s.width, e._height || s.height);
            var a = this._next;
            a != t.NORENDER &amp;&amp; a._fun.call(a, e, i, n, r);
        }, e._graphics = function(e, i, n, r) {
            var s = e._style, a = e._graphics;
            a &amp;&amp; a._render(e, i, n - s.pivotX, r - s.pivotY);
            var o = this._next;
            o != t.NORENDER &amp;&amp; o._fun.call(o, e, i, n, r);
        }, e._image = function(t, e, i, n) {
            var r = t._style;
            e.drawTexture2(i, n, r.pivotX, r.pivotY, t.transform, t._graphics._one);
        }, e._image2 = function(t, e, i, n) {
            var r = t._style;
            e.drawTexture2(i, n, r.pivotX, r.pivotY, t.transform, t._graphics._one);
        }, e._alpha = function(t, e, i, n) {
            var r;
            if ((r = t._style.alpha) &gt; .01 || t._needRepaint()) {
                var s = e.globalAlpha;
                e.globalAlpha *= r;
                var a = this._next;
                a._fun.call(a, t, e, i, n), e.globalAlpha = s;
            }
        }, e._transform = function(e, i, n, r) {
            var s = e.transform, a = this._next;
            e._style, s &amp;&amp; a != t.NORENDER ? (i.save(), i.transform(s.a, s.b, s.c, s.d, s.tx + n, s.ty + r), 
            a._fun.call(a, e, i, 0, 0), i.restore()) : a != t.NORENDER &amp;&amp; a._fun.call(a, e, i, n, r);
        }, e._children = function(t, e, i, n) {
            var r, s = t._style, a = t._children, o = a.length;
            i -= t.pivotX, n -= t.pivotY;
            var h = t._getBit(256) &amp;&amp; e.drawCallOptimize(!0);
            if (s.viewport) {
                var l = s.viewport, u = l.x, c = l.y, _ = l.right, f = l.bottom, d = NaN, p = NaN;
                for (m = 0; m &lt; o; ++m) (r = a[m])._visible &amp;&amp; (d = r._x) &lt; _ &amp;&amp; d + r.width &gt; u &amp;&amp; (p = r._y) &lt; f &amp;&amp; p + r.height &gt; c &amp;&amp; r.render(e, i, n);
            } else for (var m = 0; m &lt; o; ++m) (r = a[m])._visible &amp;&amp; r.render(e, i, n);
            h &amp;&amp; e.drawCallOptimize(!1);
        }, e._canvas = function(t, e, n, r) {
            var s = t._cacheStyle, a = this._next;
            if (s.enableCanvasRender) {
                "bitmap" === s.cacheAs ? A.canvasBitmap++ : A.canvasNormal++;
                var o = !1, h = !1;
                if (s.canvas) {
                    var l = s.canvas, u = (l.context, l.touches);
                    if (u) for (var c = 0; c &lt; u.length; c++) if (u[c].deleted) {
                        h = !0;
                        break;
                    }
                    o = l.isCacheValid &amp;&amp; !l.isCacheValid();
                }
                if (t._needRepaint() || !s.canvas || h || o || i.stage.isGlobalRepaint()) if ("normal" === s.cacheAs) {
                    if (e._targets) return void a._fun.call(a, t, e, n, r);
                    this._canvas_webgl_normal_repaint(t, e);
                } else this._canvas_repaint(t, e, n, r);
                var _ = s.cacheRect;
                e.drawCanvas(s.canvas, n + _.x, r + _.y, _.width, _.height);
            } else a._fun.call(a, t, e, n, r);
        }, e._canvas_repaint = function(t, e, i, n) {
            var r, s, a, o, h, l, u, c, _, f = t._cacheStyle, d = this._next, p = f.canvas, m = f.cacheAs;
            if (_ = f._calculateCacheRect(t, m, i, n), u = _.x, c = _.y, o = f.cacheRect, h = o.width * u, 
            l = o.height * c, s = o.x, a = o.y, "bitmap" === m &amp;&amp; (h &gt; 2048 || l &gt; 2048)) return console.warn("cache bitmap size larger than 2048,cache ignored"), 
            f.releaseContext(), void d._fun.call(d, t, e, i, n);
            if (p || (f.createContext(), p = f.canvas), r = p.context, r.sprite = t, (p.width != h || p.height != l) &amp;&amp; p.size(h, l), 
            "bitmap" === m ? r.asBitmap = !0 : "normal" === m &amp;&amp; (r.asBitmap = !1), r.clear(), 
            1 != u || 1 != c) {
                var g = r;
                g.save(), g.scale(u, c), d._fun.call(d, t, r, -s, -a), g.restore(), t._applyFilters();
            } else g = r, d._fun.call(d, t, r, -s, -a), t._applyFilters();
            f.staticCache &amp;&amp; (f.reCache = !1), A.canvasReCache++;
        }, e._canvas_webgl_normal_repaint = function(t, e) {
            var n = t._cacheStyle, r = this._next, s = n.canvas, a = n.cacheAs;
            n._calculateCacheRect(t, a, 0, 0), s || (s = n.canvas = new i.WebGLCacheAsNormalCanvas(e, t));
            var o = s.context;
            s.startRec(), r._fun.call(r, t, o, t.pivotX, t.pivotY), t._applyFilters(), A.canvasReCache++, 
            s.endRec();
        }, e._blend = function(t, e, i, n) {
            var r = t._style, s = this._next;
            r.blendMode ? (e.save(), e.globalCompositeOperation = r.blendMode, s._fun.call(s, t, e, i, n), 
            e.restore()) : s._fun.call(s, t, e, i, n);
        }, e._mask = function(e, i, n, r) {
            var s = this._next, a = e.mask, o = i;
            if (a) {
                o.save();
                var h = o.globalCompositeOperation, l = new mt();
                if (l.copyFrom(a.getBounds()), l.width = Math.round(l.width), l.height = Math.round(l.height), 
                l.x = Math.round(l.x), l.y = Math.round(l.y), l.width &gt; 0 &amp;&amp; l.height &gt; 0) {
                    var u = l.width, c = l.height, _ = ee.getRT(u, c);
                    o.breakNextMerge(), o.pushRT(), o.addRenderObject($.create([ o, _, u, c ], t.tmpTarget, this)), 
                    a.render(o, -l.x, -l.y), o.breakNextMerge(), o.popRT(), o.save(), o.clipRect(n + l.x - e.getStyle().pivotX, r + l.y - e.getStyle().pivotY, u, c), 
                    s._fun.call(s, e, o, n, r), o.restore(), h = o.globalCompositeOperation, o.addRenderObject($.create([ "mask" ], t.setBlendMode, this));
                    var f = X.create(1, 0), d = Ie.INV_UV;
                    o.drawTarget(_, n + l.x - e.getStyle().pivotX, r + l.y - e.getStyle().pivotY, u, c, st.TEMP.identity(), f, d, 6), 
                    o.addRenderObject($.create([ _ ], t.recycleTarget, this)), o.addRenderObject($.create([ h ], t.setBlendMode, this));
                }
                o.restore();
            } else s._fun.call(s, e, i, n, r);
        }, t.__init__ = function() {
            a.__init__();
            var e, i = 0, n = 0;
            for (e = new t(69905, null), n = t.renders.length = 16384, i = 0; i &lt; n; i++) t.renders[i] = e;
            t.renders[0] = new t(0, null);
        }, t._initRenderFun = function(e, i, n, r) {
            var s = e._renderType;
            (t.renders[s] = t._getTypeRender(s))._fun(e, i, n, r);
        }, t._getTypeRender = function(e) {
            if (a.map[e]) return new t(e, null);
            for (var i = null, n = 8192; n &gt; 0; ) n &amp; e &amp;&amp; (i = new t(n, i)), n &gt;&gt;= 1;
            return i;
        }, t.tmpTarget = function(t, e, i, n) {
            e.start(), e.clear(0, 0, 0, 0);
        }, t.recycleTarget = function(t) {
            ee.releaseRT(t);
        }, t.setBlendMode = function(t) {
            var e = wt.mainContext;
            _e.targetFns[_e.TOINT[t]](e);
        }, t.INIT = 69905, t.renders = [], t.NORENDER = new t(0, null), n(t, [ "tempUV", function() {
            return this.tempUV = new Array(8);
        } ]), t;
    }(), P = (function() {
        function t() {}
        r(t, "laya.events.Keyboard"), t.NUMBER_0 = 48, t.NUMBER_1 = 49, t.NUMBER_2 = 50, 
        t.NUMBER_3 = 51, t.NUMBER_4 = 52, t.NUMBER_5 = 53, t.NUMBER_6 = 54, t.NUMBER_7 = 55, 
        t.NUMBER_8 = 56, t.NUMBER_9 = 57, t.A = 65, t.B = 66, t.C = 67, t.D = 68, t.E = 69, 
        t.F = 70, t.G = 71, t.H = 72, t.I = 73, t.J = 74, t.K = 75, t.L = 76, t.M = 77, 
        t.N = 78, t.O = 79, t.P = 80, t.Q = 81, t.R = 82, t.S = 83, t.T = 84, t.U = 85, 
        t.V = 86, t.W = 87, t.X = 88, t.Y = 89, t.Z = 90, t.F1 = 112, t.F2 = 113, t.F3 = 114, 
        t.F4 = 115, t.F5 = 116, t.F6 = 117, t.F7 = 118, t.F8 = 119, t.F9 = 120, t.F10 = 121, 
        t.F11 = 122, t.F12 = 123, t.F13 = 124, t.F14 = 125, t.F15 = 126, t.NUMPAD = 21, 
        t.NUMPAD_0 = 96, t.NUMPAD_1 = 97, t.NUMPAD_2 = 98, t.NUMPAD_3 = 99, t.NUMPAD_4 = 100, 
        t.NUMPAD_5 = 101, t.NUMPAD_6 = 102, t.NUMPAD_7 = 103, t.NUMPAD_8 = 104, t.NUMPAD_9 = 105, 
        t.NUMPAD_ADD = 107, t.NUMPAD_DECIMAL = 110, t.NUMPAD_DIVIDE = 111, t.NUMPAD_ENTER = 108, 
        t.NUMPAD_MULTIPLY = 106, t.NUMPAD_SUBTRACT = 109, t.SEMICOLON = 186, t.EQUAL = 187, 
        t.COMMA = 188, t.MINUS = 189, t.PERIOD = 190, t.SLASH = 191, t.BACKQUOTE = 192, 
        t.LEFTBRACKET = 219, t.BACKSLASH = 220, t.RIGHTBRACKET = 221, t.QUOTE = 222, t.ALTERNATE = 18, 
        t.BACKSPACE = 8, t.CAPS_LOCK = 20, t.COMMAND = 15, t.CONTROL = 17, t.DELETE = 46, 
        t.ENTER = 13, t.ESCAPE = 27, t.PAGE_UP = 33, t.PAGE_DOWN = 34, t.END = 35, t.HOME = 36, 
        t.LEFT = 37, t.UP = 38, t.RIGHT = 39, t.DOWN = 40, t.SHIFT = 16, t.SPACE = 32, t.TAB = 9, 
        t.INSERT = 45;
    }(), function() {
        function t() {}
        r(t, "laya.display.cmd.RestoreCmd");
        var e = t.prototype;
        return e.recover = function() {
            U.recover("RestoreCmd", this);
        }, e.run = function(t, e, i) {
            t.restore();
        }, s(0, e, "cmdID", function() {
            return "Restore";
        }), t.create = function() {
            return U.getItemByClass("RestoreCmd", t);
        }, t.ID = "Restore", t;
    }()), D = function() {
        function t(t, e, i) {
            this._value = 0, this._name2int = t, this._int2name = e, this._int2nameMap = i;
        }
        r(t, "laya.webgl.shader.ShaderDefinesBase");
        var e = t.prototype;
        return e.add = function(t) {
            return "string" == typeof t &amp;&amp; (t = this._name2int[t]), this._value |= t, this._value;
        }, e.addInt = function(t) {
            return this._value |= t, this._value;
        }, e.remove = function(t) {
            return "string" == typeof t &amp;&amp; (t = this._name2int[t]), this._value &amp;= ~t, this._value;
        }, e.isDefine = function(t) {
            return (this._value &amp; t) === t;
        }, e.getValue = function() {
            return this._value;
        }, e.setValue = function(t) {
            this._value = t;
        }, e.toNameDic = function() {
            return this._int2nameMap[this._value] || t._toText(this._value, this._int2name, this._int2nameMap);
        }, t._reg = function(t, e, i, n) {
            i[t] = e, n[e] = t;
        }, t._toText = function(t, e, i) {
            var n = i[t];
            if (n) return n;
            for (var r = {}, s = 1, a = 0; a &lt; 32 &amp;&amp; !((s = 1 &lt;&lt; a) &gt; t); a++) if (t &amp; s) {
                var o = e[s];
                o &amp;&amp; (r[o] = "");
            }
            return i[t] = r, r;
        }, t._toInt = function(t, e) {
            for (var i = t.split("."), n = 0, r = 0, s = i.length; r &lt; s; r++) {
                var a = e[i[r]];
                if (!a) throw new Error("Defines to int err:" + t + "/" + i[r]);
                n |= a;
            }
            return n;
        }, t;
    }(), L = function() {
        function t() {
            this._texture = null, this._fontCharDic = {}, this._fontWidthMap = {}, this._complete = null, 
            this._path = null, this._maxWidth = 0, this._spaceWidth = 10, this._padding = null, 
            this.fontSize = 12, this.autoScaleSize = !1, this.letterSpacing = 0;
        }
        r(t, "laya.display.BitmapFont");
        var e = t.prototype;
        return e.loadFont = function(t, e) {
            this._path = t, this._complete = e, t &amp;&amp; -1 !== t.indexOf(".fnt") ? i.loader.load([ {
                url: t,
                type: "xml"
            }, {
                url: t.replace(".fnt", ".png"),
                type: "image"
            } ], g.create(this, this._onLoaded)) : console.error('Bitmap font configuration information must be a ".fnt" file');
        }, e._onLoaded = function() {
            this.parseFont(De.getRes(this._path), De.getRes(this._path.replace(".fnt", ".png"))), 
            this._complete &amp;&amp; this._complete.run();
        }, e.parseFont = function(t, e) {
            if (null != t &amp;&amp; null != e) {
                this._texture = e;
                var i = t.getElementsByTagName("info");
                if (!i[0].getAttributeNode) return this.parseFont2(t, e);
                this.fontSize = parseInt(i[0].getAttributeNode("size").nodeValue);
                var n = i[0].getAttributeNode("padding").nodeValue.split(",");
                this._padding = [ parseInt(n[0]), parseInt(n[1]), parseInt(n[2]), parseInt(n[3]) ];
                var r;
                r = t.getElementsByTagName("char");
                var s = 0;
                for (s = 0; s &lt; r.length; s++) {
                    var a = r[s], o = parseInt(a.getAttributeNode("id").nodeValue), h = parseInt(a.getAttributeNode("xoffset").nodeValue) / 1, l = parseInt(a.getAttributeNode("yoffset").nodeValue) / 1, u = parseInt(a.getAttributeNode("xadvance").nodeValue) / 1, c = new mt();
                    c.x = parseInt(a.getAttributeNode("x").nodeValue), c.y = parseInt(a.getAttributeNode("y").nodeValue), 
                    c.width = parseInt(a.getAttributeNode("width").nodeValue), c.height = parseInt(a.getAttributeNode("height").nodeValue);
                    var _ = Ie.create(e, c.x, c.y, c.width, c.height, h, l);
                    this._maxWidth = Math.max(this._maxWidth, u + this.letterSpacing), this._fontCharDic[o] = _, 
                    this._fontWidthMap[o] = u;
                }
            }
        }, e.parseFont2 = function(t, e) {
            if (null != t &amp;&amp; null != e) {
                this._texture = e;
                var i = t.getElementsByTagName("info");
                this.fontSize = parseInt(i[0].attributes.size.nodeValue);
                var n = i[0].attributes.padding.nodeValue.split(",");
                this._padding = [ parseInt(n[0]), parseInt(n[1]), parseInt(n[2]), parseInt(n[3]) ];
                var r = t.getElementsByTagName("char"), s = 0;
                for (s = 0; s &lt; r.length; s++) {
                    var a = r[s].attributes, o = parseInt(a.id.nodeValue), h = parseInt(a.xoffset.nodeValue) / 1, l = parseInt(a.yoffset.nodeValue) / 1, u = parseInt(a.xadvance.nodeValue) / 1, c = new mt();
                    c.x = parseInt(a.x.nodeValue), c.y = parseInt(a.y.nodeValue), c.width = parseInt(a.width.nodeValue), 
                    c.height = parseInt(a.height.nodeValue);
                    var _ = Ie.create(e, c.x, c.y, c.width, c.height, h, l);
                    this._maxWidth = Math.max(this._maxWidth, u + this.letterSpacing), this._fontCharDic[o] = _, 
                    this._fontWidthMap[o] = u;
                }
            }
        }, e.getCharTexture = function(t) {
            return this._fontCharDic[t.charCodeAt(0)];
        }, e.destroy = function() {
            if (this._texture) {
                for (var t in this._fontCharDic) {
                    var e = this._fontCharDic[t];
                    e &amp;&amp; e.destroy();
                }
                this._texture.destroy(), this._fontCharDic = null, this._fontWidthMap = null, this._texture = null, 
                this._complete = null, this._padding = null;
            }
        }, e.setSpaceWidth = function(t) {
            this._spaceWidth = t;
        }, e.getCharWidth = function(t) {
            var e = t.charCodeAt(0);
            return this._fontWidthMap[e] ? this._fontWidthMap[e] + this.letterSpacing : " " === t ? this._spaceWidth + this.letterSpacing : 0;
        }, e.getTextWidth = function(t) {
            for (var e = 0, i = 0, n = t.length; i &lt; n; i++) e += this.getCharWidth(t.charAt(i));
            return e;
        }, e.getMaxWidth = function() {
            return this._maxWidth;
        }, e.getMaxHeight = function() {
            return this.fontSize;
        }, e._drawText = function(t, e, i, n, r, s) {
            var a, o = this.getTextWidth(t), h = 0;
            "center" === r &amp;&amp; (h = (s - o) / 2), "right" === r &amp;&amp; (h = s - o);
            for (var l = 0, u = 0, c = t.length; u &lt; c; u++) (a = this.getCharTexture(t.charAt(u))) &amp;&amp; (e.graphics.drawImage(a, i + l + h, n), 
            l += this.getCharWidth(t.charAt(u)));
        }, t;
    }(), B = function() {
        function t() {}
        r(t, "laya.display.cmd.ClipRectCmd");
        var e = t.prototype;
        return e.recover = function() {
            U.recover("ClipRectCmd", this);
        }, e.run = function(t, e, i) {
            t.clipRect(this.x + e, this.y + i, this.width, this.height);
        }, s(0, e, "cmdID", function() {
            return "ClipRect";
        }), t.create = function(e, i, n, r) {
            var s = U.getItemByClass("ClipRectCmd", t);
            return s.x = e, s.y = i, s.width = n, s.height = r, s;
        }, t.ID = "ClipRect", t;
    }(), F = function() {
        function t() {
            this.ALPHA = 1, this.shaderType = 0, this.defines = new Re(), this.fillStyle = Et.DEFAULT, 
            this.strokeStyle = Et.DEFAULT;
        }
        return r(t, "laya.webgl.shader.d2.Shader2D"), t.prototype.destroy = function() {
            this.defines = null, this.filters = null;
        }, t.__init__ = function() {
            var t, e;
            t = "/*\n\ttextureå’Œfillrectä½¿ç”¨çš„ã€‚\n*/\nattribute vec4 posuv;\nattribute vec4 attribColor;\nattribute vec4 attribFlags;\n//attribute vec4 clipDir;\n//attribute vec2 clipRect;\nuniform vec4 clipMatDir;\nuniform vec2 clipMatPos;\t\t// è¿™ä¸ªæ˜¯å…¨å±€çš„ï¼Œä¸ç”¨å†åº”ç”¨çŸ©é˜µäº†ã€‚\nvarying vec2 cliped;\nuniform vec2 size;\nuniform vec2 clipOff;\t\t\t// ä½¿ç”¨è¦æŠŠclipåç§»ã€‚cacheas normalç”¨. åªç”¨äº†[0]\n#ifdef WORLDMAT\n\tuniform mat4 mmat;\n#endif\n#ifdef MVP3D\n\tuniform mat4 u_MvpMatrix;\n#endif\nvarying vec4 v_texcoordAlpha;\nvarying vec4 v_color;\nvarying float v_useTex;\n\nvoid main() {\n\n\tvec4 pos = vec4(posuv.xy,0.,1.);\n#ifdef WORLDMAT\n\tpos=mmat*pos;\n#endif\n\tvec4 pos1  =vec4((pos.x/size.x-0.5)*2.0,(0.5-pos.y/size.y)*2.0,0.,1.0);\n#ifdef MVP3D\n\tgl_Position=u_MvpMatrix*pos1;\n#else\n\tgl_Position=pos1;\n#endif\n\tv_texcoordAlpha.xy = posuv.zw;\n\t//v_texcoordAlpha.z = attribColor.a/255.0;\n\tv_color = attribColor/255.0;\n\tv_color.xyz*=v_color.w;//åæ­£åŽé¢ä¹Ÿè¦é¢„ä¹˜\n\t\n\tv_useTex = attribFlags.r/255.0;\n\tfloat clipw = length(clipMatDir.xy);\n\tfloat cliph = length(clipMatDir.zw);\n\t\n\tvec2 clpos = clipMatPos.xy;\n\t#ifdef WORLDMAT\n\t\t// å¦‚æžœæœ‰mmatï¼Œéœ€è¦ä¿®æ”¹clipMatPos,å›&nbsp;ä¸º è¿™æ˜¯cacheas normal ï¼ˆå¦‚æžœä¸æ˜¯å°±é”™äº†ï¼‰ï¼Œ clipMatPosè¢«åŽ»æŽ‰äº†åç§»\n\t\tif(clipOff[0]&gt;0.0){\n\t\t\tclpos.x+=mmat[3].x;\t//tx\tæœ€ç®€å•å¤„ç†\n\t\t\tclpos.y+=mmat[3].y;\t//ty\n\t\t}\n\t#endif\n\tvec2 clippos = pos.xy - clpos;\t//poså·²ç»åº”ç”¨çŸ©é˜µäº†ï¼Œä¸ºäº†å‡çš„æœ‰æ„ä¹‰ï¼Œclipçš„ä½ç½®ä¹Ÿè¦ç¼©æ”¾\n\tif(clipw&gt;20000. &amp;&amp; cliph&gt;20000.)\n\t\tcliped = vec2(0.5,0.5);\n\telse {\n\t\t//è½¬æˆ0åˆ°1ä¹‹é—´ã€‚/clipw/clipw è¡¨ç¤ºclipposä¸Žnormalizeä¹‹åŽçš„clipæœå‘ç‚¹ç§¯ä¹‹åŽï¼Œå†é™¤ä»¥clipw\n\t\tcliped=vec2( dot(clippos,clipMatDir.xy)/clipw/clipw, dot(clippos,clipMatDir.zw)/cliph/cliph);\n\t}\n\n}", 
            e = "/*\n\ttextureå’Œfillrectä½¿ç”¨çš„ã€‚\n*/\n#ifdef FSHIGHPRECISION\nprecision highp float;\n#else\nprecision mediump float;\n#endif\n\nvarying vec4 v_texcoordAlpha;\nvarying vec4 v_color;\nvarying float v_useTex;\nuniform sampler2D texture;\nvarying vec2 cliped;\n\n#ifdef BLUR_FILTER\nuniform vec4 strength_sig2_2sig2_gauss1;\nuniform vec2 blurInfo;\n\n#define PI 3.141593\n\nfloat getGaussian(float x, float y){\n    return strength_sig2_2sig2_gauss1.w*exp(-(x*x+y*y)/strength_sig2_2sig2_gauss1.z);\n}\n\nvec4 blur(){\n    const float blurw = 9.0;\n    vec4 vec4Color = vec4(0.0,0.0,0.0,0.0);\n    vec2 halfsz=vec2(blurw,blurw)/2.0/blurInfo;    \n    vec2 startpos=v_texcoordAlpha.xy-halfsz;\n    vec2 ctexcoord = startpos;\n    vec2 step = 1.0/blurInfo;  //æ¯ä¸ªåƒç´&nbsp;      \n    \n    for(float y = 0.0;y&lt;=blurw; ++y){\n        ctexcoord.x=startpos.x;\n        for(float x = 0.0;x&lt;=blurw; ++x){\n            //TODO çº¹ç†åæ&nbsp;‡çš„å›ºå®šåç§»åº”è¯¥åœ¨vsä¸­å¤„ç†\n            vec4Color += texture2D(texture, ctexcoord)*getGaussian(x-blurw/2.0,y-blurw/2.0);\n            ctexcoord.x+=step.x;\n        }\n        ctexcoord.y+=step.y;\n    }\n    return vec4Color;\n}\n#endif\n\n#ifdef COLOR_FILTER\nuniform vec4 colorAlpha;\nuniform mat4 colorMat;\n#endif\n\n#ifdef GLOW_FILTER\nuniform vec4 u_color;\nuniform vec4 u_blurInfo1;\nuniform vec4 u_blurInfo2;\n#endif\n\n#ifdef COLOR_ADD\nuniform vec4 colorAdd;\n#endif\n\n#ifdef FILLTEXTURE\t\nuniform vec4 u_TexRange;//startu,startv,urange, vrange\n#endif\nvoid main() {\n\tif(cliped.x&lt;0.) discard;\n\tif(cliped.x&gt;1.) discard;\n\tif(cliped.y&lt;0.) discard;\n\tif(cliped.y&gt;1.) discard;\n\t\n#ifdef FILLTEXTURE\t\n   vec4 color= texture2D(texture, fract(v_texcoordAlpha.xy)*u_TexRange.zw + u_TexRange.xy);\n#else\n   vec4 color= texture2D(texture, v_texcoordAlpha.xy);\n#endif\n\n   if(v_useTex&lt;=0.)color = vec4(1.,1.,1.,1.);\n   color.a*=v_color.w;\n   //color.rgb*=v_color.w;\n   color.rgb*=v_color.rgb;\n   gl_FragColor=color;\n   \n   #ifdef COLOR_ADD\n\tgl_FragColor = vec4(colorAdd.rgb,colorAdd.a*gl_FragColor.a);\n\tgl_FragColor.xyz *= colorAdd.a;\n   #endif\n   \n   #ifdef BLUR_FILTER\n\tgl_FragColor =   blur();\n\tgl_FragColor.w*=v_color.w;   \n   #endif\n   \n   #ifdef COLOR_FILTER\n\tmat4 alphaMat =colorMat;\n\n\talphaMat[0][3] *= gl_FragColor.a;\n\talphaMat[1][3] *= gl_FragColor.a;\n\talphaMat[2][3] *= gl_FragColor.a;\n\n\tgl_FragColor = gl_FragColor * alphaMat;\n\tgl_FragColor += colorAlpha/255.0*gl_FragColor.a;\n   #endif\n   \n   #ifdef GLOW_FILTER\n\tconst float c_IterationTime = 10.0;\n\tfloat floatIterationTotalTime = c_IterationTime * c_IterationTime;\n\tvec4 vec4Color = vec4(0.0,0.0,0.0,0.0);\n\tvec2 vec2FilterDir = vec2(-(u_blurInfo1.z)/u_blurInfo2.x,-(u_blurInfo1.w)/u_blurInfo2.y);\n\tvec2 vec2FilterOff = vec2(u_blurInfo1.x/u_blurInfo2.x/c_IterationTime * 2.0,u_blurInfo1.y/u_blurInfo2.y/c_IterationTime * 2.0);\n\tfloat maxNum = u_blurInfo1.x * u_blurInfo1.y;\n\tvec2 vec2Off = vec2(0.0,0.0);\n\tfloat floatOff = c_IterationTime/2.0;\n\tfor(float i = 0.0;i&lt;=c_IterationTime; ++i){\n\t\tfor(float j = 0.0;j&lt;=c_IterationTime; ++j){\n\t\t\tvec2Off = vec2(vec2FilterOff.x * (i - floatOff),vec2FilterOff.y * (j - floatOff));\n\t\t\tvec4Color += texture2D(texture, v_texcoordAlpha.xy + vec2FilterDir + vec2Off)/floatIterationTotalTime;\n\t\t}\n\t}\n\tgl_FragColor = vec4(u_color.rgb,vec4Color.a * u_blurInfo2.z);\n\tgl_FragColor.rgb *= gl_FragColor.a;   \n   #endif\n   \n}", 
            ni.preCompile2D(0, 1, t, e, null), t = "attribute vec4 position;\nattribute vec4 attribColor;\n//attribute vec4 clipDir;\n//attribute vec2 clipRect;\nuniform vec4 clipMatDir;\nuniform vec2 clipMatPos;\n#ifdef WORLDMAT\n\tuniform mat4 mmat;\n#endif\nuniform mat4 u_mmat2;\n//uniform vec2 u_pos;\nuniform vec2 size;\nvarying vec4 color;\n//vec4 dirxy=vec4(0.9,0.1, -0.1,0.9);\n//vec4 clip=vec4(100.,30.,300.,600.);\nvarying vec2 cliped;\nvoid main(){\n\t\n#ifdef WORLDMAT\n\tvec4 pos=mmat*vec4(position.xy,0.,1.);\n\tgl_Position =vec4((pos.x/size.x-0.5)*2.0,(0.5-pos.y/size.y)*2.0,pos.z,1.0);\n#else\n\tgl_Position =vec4((position.x/size.x-0.5)*2.0,(0.5-position.y/size.y)*2.0,position.z,1.0);\n#endif\t\n\tfloat clipw = length(clipMatDir.xy);\n\tfloat cliph = length(clipMatDir.zw);\n\tvec2 clippos = position.xy - clipMatPos.xy;\t//poså·²ç»åº”ç”¨çŸ©é˜µäº†ï¼Œä¸ºäº†å‡çš„æœ‰æ„ä¹‰ï¼Œclipçš„ä½ç½®ä¹Ÿè¦ç¼©æ”¾\n\tif(clipw&gt;20000. &amp;&amp; cliph&gt;20000.)\n\t\tcliped = vec2(0.5,0.5);\n\telse {\n\t\t//clipdiræ˜¯å¸¦ç¼©æ”¾çš„æ–¹å‘ï¼Œç”±äºŽä¸Šé¢clipposæ˜¯åœ¨ç¼©æ”¾åŽçš„ç©ºé—´è®¡ç®—çš„ï¼Œæ‰€ä»¥éœ€è¦æŠŠæ–¹å‘å…ˆnormalizeä¸€ä¸‹\n\t\tcliped=vec2( dot(clippos,clipMatDir.xy)/clipw/clipw, dot(clippos,clipMatDir.zw)/cliph/cliph);\n\t}\n  //pos2d.x = dot(clippos,dirx);\n  color=attribColor/255.;\n}", 
            e = "precision mediump float;\n//precision mediump float;\nvarying vec4 color;\n//uniform float alpha;\nvarying vec2 cliped;\nvoid main(){\n\t//vec4 a=vec4(color.r, color.g, color.b, 1);\n\t//a.a*=alpha;\n    gl_FragColor= color;// vec4(color.r, color.g, color.b, alpha);\n\tgl_FragColor.rgb*=color.a;\n\tif(cliped.x&lt;0.) discard;\n\tif(cliped.x&gt;1.) discard;\n\tif(cliped.y&lt;0.) discard;\n\tif(cliped.y&gt;1.) discard;\n}", 
            ni.preCompile2D(0, 4, t, e, null), t = "attribute vec2 position;\nattribute vec2 texcoord;\nattribute vec4 color;\nuniform vec2 size;\nuniform float offsetX;\nuniform float offsetY;\nuniform mat4 mmat;\nuniform mat4 u_mmat2;\nvarying vec2 v_texcoord;\nvarying vec4 v_color;\nvoid main() {\n  vec4 pos=mmat*u_mmat2*vec4(offsetX+position.x,offsetY+position.y,0,1 );\n  gl_Position = vec4((pos.x/size.x-0.5)*2.0,(0.5-pos.y/size.y)*2.0,pos.z,1.0);\n  v_color = color;\n  v_color.rgb *= v_color.a;\n  v_texcoord = texcoord;  \n}", 
            e = "precision mediump float;\nvarying vec2 v_texcoord;\nvarying vec4 v_color;\nuniform sampler2D texture;\nuniform float alpha;\nvoid main() {\n\tvec4 t_color = texture2D(texture, v_texcoord);\n\tgl_FragColor = t_color.rgba * v_color;\n\tgl_FragColor *= alpha;\n}", 
            ni.preCompile2D(0, 512, t, e, null);
        }, t;
    }(), O = function() {
        function t() {}
        r(t, "laya.display.cmd.DrawPolyCmd");
        var e = t.prototype;
        return e.recover = function() {
            this.points = null, this.fillColor = null, this.lineColor = null, U.recover("DrawPolyCmd", this);
        }, e.run = function(t, e, i) {
            t._drawPoly(this.x + e, this.y + i, this.points, this.fillColor, this.lineColor, this.lineWidth, this.isConvexPolygon, this.vid);
        }, s(0, e, "cmdID", function() {
            return "DrawPoly";
        }), t.create = function(e, i, n, r, s, a, o, h) {
            var l = U.getItemByClass("DrawPolyCmd", t);
            return l.x = e, l.y = i, l.points = n, l.fillColor = r, l.lineColor = s, l.lineWidth = a, 
            l.isConvexPolygon = o, l.vid = h, l;
        }, t.ID = "DrawPoly", t;
    }(), N = function() {
        function t() {
            this.fontName = null, this.complete = null, this.err = null, this._fontTxt = null, 
            this._url = null, this._div = null, this._txtWidth = NaN, this._http = null;
        }
        r(t, "laya.net.TTFLoader");
        var e = t.prototype;
        return e.load = function(t) {
            this._url = t;
            var e = t.split(".ttf")[0].split("/");
            this.fontName = e[e.length - 1], Mt.isConchApp ? this._loadConch() : Dt.window.FontFace ? this._loadWithFontFace() : this._loadWithCSS();
        }, e._loadConch = function() {
            this._http = new Pe(), this._http.on("error", this, this._onErr), this._http.on("complete", this, this._onHttpLoaded), 
            this._http.send(this._url, null, "get", "arraybuffer");
        }, e._onHttpLoaded = function(t) {
            Dt.window.conchTextCanvas.setFontFaceFromBuffer(this.fontName, t), this._clearHttp(), 
            this._complete();
        }, e._clearHttp = function() {
            this._http &amp;&amp; (this._http.off("error", this, this._onErr), this._http.off("complete", this, this._onHttpLoaded), 
            this._http = null);
        }, e._onErr = function() {
            this._clearHttp(), this.err &amp;&amp; (this.err.runWith("fail:" + this._url), this.err = null);
        }, e._complete = function() {
            i.systemTimer.clear(this, this._complete), i.systemTimer.clear(this, this._checkComplete), 
            this._div &amp;&amp; this._div.parentNode &amp;&amp; (this._div.parentNode.removeChild(this._div), 
            this._div = null), this.complete &amp;&amp; (this.complete.runWith(this), this.complete = null);
        }, e._checkComplete = function() {
            ue.measureText("LayaTTFFont", this._fontTxt).width != this._txtWidth &amp;&amp; this._complete();
        }, e._loadWithFontFace = function() {
            var t = new Dt.window.FontFace(this.fontName, "url('" + this._url + "')");
            Dt.window.document.fonts.add(t);
            var e = this;
            t.loaded.then(function() {
                e._complete();
            }), t.load();
        }, e._createDiv = function() {
            this._div = Dt.createElement("div"), this._div.innerHTML = "laya";
            var t = this._div.style;
            t.fontFamily = this.fontName, t.position = "absolute", t.left = "-100px", t.top = "-100px", 
            Dt.document.body.appendChild(this._div);
        }, e._loadWithCSS = function() {
            var t = this, e = Dt.createElement("style");
            e.type = "text/css", Dt.document.body.appendChild(e), e.textContent = "@font-face { font-family:'" + this.fontName + "'; src:url('" + this._url + "');}", 
            this._fontTxt = "40px " + this.fontName, this._txtWidth = ue.measureText("LayaTTFFont", this._fontTxt).width;
            var n = this;
            e.onload = function() {
                i.systemTimer.once(1e4, n, t._complete);
            }, i.systemTimer.loop(20, this, this._checkComplete), this._createDiv();
        }, t._testString = "LayaTTFFont", t;
    }(), k = function() {
        function t() {
            this.blendShader = 0, this.submitType = 0, this.other = 0, this.clear();
        }
        r(t, "laya.webgl.submit.SubmitKey");
        var e = t.prototype;
        return e.clear = function() {
            this.submitType = -1, this.blendShader = this.other = 0;
        }, e.copyFrom = function(t) {
            this.other = t.other, this.blendShader = t.blendShader, this.submitType = t.submitType;
        }, e.copyFrom2 = function(t, e, i) {
            this.other = i, this.submitType = e;
        }, e.equal3_2 = function(t, e, i) {
            return this.submitType === e &amp;&amp; this.other === i &amp;&amp; this.blendShader === t.blendShader;
        }, e.equal4_2 = function(t, e, i) {
            return this.submitType === e &amp;&amp; this.other === i &amp;&amp; this.blendShader === t.blendShader;
        }, e.equal_3 = function(t) {
            return this.submitType === t.submitType &amp;&amp; this.blendShader === t.blendShader;
        }, e.equal = function(t) {
            return this.other === t.other &amp;&amp; this.submitType === t.submitType &amp;&amp; this.blendShader === t.blendShader;
        }, t;
    }(), U = (function() {
        function t() {
            this._graphicsCmdEncoder = null, this._index = 0, this._paramData = null, this.texture = null, 
            this.x = NaN, this.y = NaN, this.width = NaN, this.height = NaN;
        }
        r(t, "laya.display.cmd.DrawCanvasCmd");
        var e = t.prototype;
        e.recover = function() {
            this._graphicsCmdEncoder = null, U.recover("DrawCanvasCmd", this);
        }, s(0, e, "cmdID", function() {
            return "DrawCanvasCmd";
        }), t.create = function(t, e, i, n, r) {
            return null;
        }, t.ID = "DrawCanvasCmd", t._DRAW_IMAGE_CMD_ENCODER_ = null, t._PARAM_TEXTURE_POS_ = 2, 
        t._PARAM_VB_POS_ = 5;
    }(), function() {
        function t() {}
        return r(t, "laya.utils.Pool"), t.getPoolBySign = function(e) {
            return t._poolDic[e] || (t._poolDic[e] = []);
        }, t.clearBySign = function(e) {
            t._poolDic[e] &amp;&amp; (t._poolDic[e].length = 0);
        }, t.recover = function(e, i) {
            i.__InPool || (i.__InPool = !0, t.getPoolBySign(e).push(i));
        }, t.recoverByClass = function(e) {
            if (e) {
                var i = e.__className || e.constructor._$gid;
                i &amp;&amp; t.recover(i, e);
            }
        }, t._getClassSign = function(t) {
            var e = t.__className || t._$gid;
            return e || (t._$gid = e = ie.getGID() + ""), e;
        }, t.createByClass = function(e) {
            return t.getItemByClass(t._getClassSign(e), e);
        }, t.getItemByClass = function(e, i) {
            if (!t._poolDic[e]) return new i();
            var n = t.getPoolBySign(e);
            if (n.length) {
                var r = n.pop();
                r.__InPool = !1;
            } else r = new i();
            return r;
        }, t.getItemByCreateFun = function(e, i, n) {
            var r = t.getPoolBySign(e), s = r.length ? r.pop() : i.call(n);
            return s.__InPool = !1, s;
        }, t.getItem = function(e) {
            var i = t.getPoolBySign(e), n = i.length ? i.pop() : null;
            return n &amp;&amp; (n.__InPool = !1), n;
        }, t.POOLSIGN = "__InPool", t._poolDic = {}, t;
    }()), W = function() {
        function t(t) {
            this.script = null, this.codes = {}, this.funs = {}, this.curUseID = -1, this.funnames = "", 
            this.script = t;
            for (var e = 0, i = 0, n = 0; !((e = t.indexOf("#begin", e)) &lt; 0); ) {
                for (n = e + 5; !((n = t.indexOf("#end", n)) &lt; 0) &amp;&amp; "i" === t.charAt(n + 4); ) n += 5;
                if (n &lt; 0) throw "add include err,no #end:" + t;
                i = t.indexOf("\n", e);
                var r = pe.splitToWords(t.substr(e, i - e), null);
                "code" == r[1] ? this.codes[r[2]] = t.substr(i + 1, n - i - 1) : "function" == r[1] &amp;&amp; (i = t.indexOf("function", e), 
                i += "function".length, this.funs[r[3]] = t.substr(i + 1, n - i - 1), this.funnames += r[3] + ";"), 
                e = n + 1;
            }
        }
        r(t, "laya.webgl.utils.InlcudeFile");
        var e = t.prototype;
        return e.getWith = function(t) {
            var e = t ? this.codes[t] : this.script;
            if (!e) throw "get with error:" + t;
            return e;
        }, e.getFunsScript = function(t) {
            var e = "";
            for (var i in this.funs) t.indexOf(i + ";") &gt;= 0 &amp;&amp; (e += this.funs[i]);
            return e;
        }, t;
    }(), V = (function() {
        function t() {}
        r(t, "laya.display.SpriteConst"), t.ALPHA = 1, t.TRANSFORM = 2, t.BLEND = 4, t.CANVAS = 8, 
        t.FILTERS = 16, t.MASK = 32, t.CLIP = 64, t.STYLE = 128, t.TEXTURE = 256, t.GRAPHICS = 512, 
        t.LAYAGL3D = 1024, t.CUSTOM = 2048, t.ONECHILD = 4096, t.CHILDS = 8192, t.REPAINT_NONE = 0, 
        t.REPAINT_NODE = 1, t.REPAINT_CACHE = 2, t.REPAINT_ALL = 3;
    }(), function() {
        function t() {
            this._glBuffer = null, this._buffer = null, this._bufferType = 0, this._bufferUsage = 0, 
            this._byteLength = 0, this._glBuffer = Pt.instance.createBuffer();
        }
        r(t, "laya.webgl.utils.Buffer");
        var e = t.prototype;
        return e._bindForVAO = function() {}, e.bind = function() {
            return !1;
        }, e.destroy = function() {
            this._glBuffer &amp;&amp; (Pt.instance.deleteBuffer(this._glBuffer), this._glBuffer = null);
        }, s(0, e, "bufferUsage", function() {
            return this._bufferUsage;
        }), t._bindedVertexBuffer = null, t._bindedIndexBuffer = null, t;
    }()), G = function() {
        function t() {
            this.colorFlt = null;
        }
        r(t, "laya.display.cmd.DrawTextureCmd");
        var e = t.prototype;
        return e.recover = function() {
            this.texture._removeReference(), this.texture = null, this.matrix = null, U.recover("DrawTextureCmd", this);
        }, e.run = function(t, e, i) {
            t.drawTextureWithTransform(this.texture, this.x, this.y, this.width, this.height, this.matrix, e, i, this.alpha, this.blendMode, this.colorFlt);
        }, s(0, e, "cmdID", function() {
            return "DrawTexture";
        }), t.create = function(e, i, n, r, s, a, o, h, l) {
            var u = U.getItemByClass("DrawTextureCmd", t);
            return u.texture = e, e._addReference(), u.x = i, u.y = n, u.width = r, u.height = s, 
            u.matrix = a, u.alpha = o, u.color = h, u.blendMode = l, h &amp;&amp; (u.colorFlt = new Te(), 
            u.colorFlt.setColor(h)), u;
        }, t.ID = "DrawTexture", t;
    }(), X = function() {
        function t(e, i) {
            this.size = [ 0, 0 ], this.alpha = 1, this.ALPHA = 1, this.subID = 0, this.ref = 1, 
            this._cacheID = 0, this.clipMatDir = [ 99999999, 0, 0, 99999999 ], this.clipMatPos = [ 0, 0 ], 
            this.clipOff = [ 0, 0 ], this.defines = new Re(), this.mainID = e, this.subID = i, 
            this.textureHost = null, this.texture = null, this.color = null, this.colorAdd = null, 
            this.u_mmat2 = null, this._cacheID = e | i, this._inClassCache = t._cache[this._cacheID], 
            e &gt; 0 &amp;&amp; !this._inClassCache &amp;&amp; (this._inClassCache = t._cache[this._cacheID] = [], 
            this._inClassCache._length = 0), this.clear();
        }
        r(t, "laya.webgl.shader.d2.value.Value2D");
        var e = t.prototype;
        return e.setValue = function(t) {}, e._ShaderWithCompile = function() {
            return ni.withCompile2D(0, this.mainID, this.defines.toNameDic(), this.mainID | this.defines._value, ui.create, this._attribLocation);
        }, e.upload = function() {
            var t = dt;
            dt.worldMatrix4 === dt.TEMPMAT4_ARRAY || this.defines.addInt(128), this.mmat = t.worldMatrix4, 
            dt.matWVP &amp;&amp; (this.defines.addInt(2048), this.u_MvpMatrix = dt.matWVP.elements);
            var e = ni.sharders[this.mainID | this.defines._value] || this._ShaderWithCompile();
            e._shaderValueWidth !== t.width || e._shaderValueHeight !== t.height ? (this.size[0] = t.width, 
            this.size[1] = t.height, e._shaderValueWidth = t.width, e._shaderValueHeight = t.height, 
            e.upload(this, null)) : e.upload(this, e._params2dQuick2 || e._make2dQuick2());
        }, e.setFilters = function(t) {
            if (this.filters = t, t) for (var e, i = t.length, n = 0; n &lt; i; n++) (e = t[n]) &amp;&amp; (this.defines.add(e.type), 
            e.action.setValue(this));
        }, e.clear = function() {
            this.defines._value = this.subID + (wt.shaderHighPrecision ? 1024 : 0), this.clipOff[0] = 0;
        }, e.release = function() {
            --this.ref &lt; 1 &amp;&amp; (this._inClassCache &amp;&amp; (this._inClassCache[this._inClassCache._length++] = this), 
            this.clear(), this.filters = null, this.ref = 1, this.clipOff[0] = 0);
        }, t._initone = function(e, i) {
            t._typeClass[e] = i, t._cache[e] = [], t._cache[e]._length = 0;
        }, t.__init__ = function() {
            t._initone(4, Xe), t._initone(512, Ye), t._initone(1, Oe), t._initone(9, Oe);
        }, t.create = function(e, i) {
            var n = t._cache[e | i];
            return n._length ? n[--n._length] : new t._typeClass[e | i](i);
        }, t._cache = [], t._typeClass = [], t.TEMPMAT4_ARRAY = [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], 
        t;
    }(), Y = function() {
        function t() {}
        return r(t, "laya.maths.GrahamScan"), t.multiply = function(t, e, i) {
            return (t.x - i.x) * (e.y - i.y) - (e.x - i.x) * (t.y - i.y);
        }, t.dis = function(t, e) {
            return (t.x - e.x) * (t.x - e.x) + (t.y - e.y) * (t.y - e.y);
        }, t._getPoints = function(e, i, n) {
            for (void 0 === i &amp;&amp; (i = !1), t._mPointList || (t._mPointList = []); t._mPointList.length &lt; e; ) t._mPointList.push(new Yt());
            return n || (n = []), n.length = 0, i ? t.getFrom(n, t._mPointList, e) : t.getFromR(n, t._mPointList, e), 
            n;
        }, t.getFrom = function(t, e, i) {
            var n = 0;
            for (n = 0; n &lt; i; n++) t.push(e[n]);
            return t;
        }, t.getFromR = function(t, e, i) {
            var n = 0;
            for (n = 0; n &lt; i; n++) t.push(e.pop());
            return t;
        }, t.pListToPointList = function(e, i) {
            void 0 === i &amp;&amp; (i = !1);
            var n = 0, r = e.length / 2, s = t._getPoints(r, i, t._tempPointList);
            for (n = 0; n &lt; r; n++) s[n].setTo(e[n + n], e[n + n + 1]);
            return s;
        }, t.pointListToPlist = function(e) {
            var i, n = 0, r = e.length, s = t._temPList;
            for (s.length = 0, n = 0; n &lt; r; n++) i = e[n], s.push(i.x, i.y);
            return s;
        }, t.scanPList = function(e) {
            return ie.copyArray(e, t.pointListToPlist(t.scan(t.pListToPointList(e, !0))));
        }, t.scan = function(e) {
            var i, n, r, s = 0, a = 0, o = 0, h = e.length, l = {};
            for ((n = t._temArr).length = 0, s = (h = e.length) - 1; s &gt;= 0; s--) r = (i = e[s]).x + "_" + i.y, 
            l.hasOwnProperty(r) || (l[r] = !0, n.push(i));
            for (h = n.length, ie.copyArray(e, n), s = 1; s &lt; h; s++) (e[s].y &lt; e[o].y || e[s].y == e[o].y &amp;&amp; e[s].x &lt; e[o].x) &amp;&amp; (o = s);
            for (i = e[0], e[0] = e[o], e[o] = i, s = 1; s &lt; h - 1; s++) {
                for (o = s, a = s + 1; a &lt; h; a++) (t.multiply(e[a], e[o], e[0]) &gt; 0 || 0 == t.multiply(e[a], e[o], e[0]) &amp;&amp; t.dis(e[0], e[a]) &lt; t.dis(e[0], e[o])) &amp;&amp; (o = a);
                i = e[s], e[s] = e[o], e[o] = i;
            }
            if (n = t._temArr, n.length = 0, e.length &lt; 3) return ie.copyArray(n, e);
            for (n.push(e[0], e[1], e[2]), s = 3; s &lt; h; s++) {
                for (;n.length &gt;= 2 &amp;&amp; t.multiply(e[s], n[n.length - 1], n[n.length - 2]) &gt;= 0; ) n.pop();
                e[s] &amp;&amp; n.push(e[s]);
            }
            return n;
        }, t._mPointList = null, t._tempPointList = [], t._temPList = [], t._temArr = [], 
        t;
    }(), H = function() {
        function t() {
            this._saveuse = 0;
        }
        r(t, "laya.webgl.canvas.save.SaveMark");
        var e = t.prototype;
        return i.imps(e, {
            "laya.webgl.canvas.save.ISaveData": !0
        }), e.isSaveMark = function() {
            return !0;
        }, e.restore = function(e) {
            e._saveMark = this._preSaveMark, t.POOL[t.POOL._length++] = this;
        }, t.Create = function(e) {
            var i = t.POOL, n = i._length &gt; 0 ? i[--i._length] : new t();
            return n._saveuse = 0, n._preSaveMark = e._saveMark, e._saveMark = n, n;
        }, t.POOL = h._createArray(), t;
    }(), z = function() {
        function t() {
            this.gid = 0, this.repeat = 1, this._count = 0;
        }
        r(t, "laya.utils.Tween");
        var e = t.prototype;
        return e.to = function(t, e, i, n, r, s, a) {
            return void 0 === s &amp;&amp; (s = 0), void 0 === a &amp;&amp; (a = !1), this._create(t, e, i, n, r, s, a, !0, !1, !0);
        }, e.from = function(t, e, i, n, r, s, a) {
            return void 0 === s &amp;&amp; (s = 0), void 0 === a &amp;&amp; (a = !1), this._create(t, e, i, n, r, s, a, !1, !1, !0);
        }, e._create = function(e, n, r, s, a, o, h, l, u, c) {
            if (!e) throw new Error("Tween:target is null");
            this._target = e, this._duration = r, this._ease = s || n.ease || t.easeNone, this._complete = a || n.complete, 
            this._delay = o, this._props = [], this._usedTimer = 0, this._startTimer = Dt.now(), 
            this._usedPool = u, this._delayParam = null, this.update = n.update;
            var _ = e.$_GID || (e.$_GID = ie.getGID());
            return t.tweenMap[_] ? (h &amp;&amp; t.clearTween(e), t.tweenMap[_].push(this)) : t.tweenMap[_] = [ this ], 
            c ? o &lt;= 0 ? this.firstStart(e, n, l) : (this._delayParam = [ e, n, l ], i.timer.once(o, this, this.firstStart, this._delayParam)) : this._initProps(e, n, l), 
            this;
        }, e.firstStart = function(t, e, i) {
            this._delayParam = null, t.destroyed ? this.clear() : (this._initProps(t, e, i), 
            this._beginLoop());
        }, e._initProps = function(t, e, i) {
            for (var n in e) if ("number" == typeof t[n]) {
                var r = i ? t[n] : e[n], s = i ? e[n] : t[n];
                this._props.push([ n, r, s - r ]), i || (t[n] = r);
            }
        }, e._beginLoop = function() {
            i.timer.frameLoop(1, this, this._doEase);
        }, e._doEase = function() {
            this._updateEase(Dt.now());
        }, e._updateEase = function(e) {
            var i = this._target;
            if (i) {
                if (i.destroyed) return t.clearTween(i);
                var n = this._usedTimer = e - this._startTimer - this._delay;
                if (!(n &lt; 0)) {
                    if (n &gt;= this._duration) return this.complete();
                    for (var r = n &gt; 0 ? this._ease(n, 0, 1, this._duration) : 0, s = this._props, a = 0, o = s.length; a &lt; o; a++) {
                        var h = s[a];
                        i[h[0]] = h[1] + r * h[2];
                    }
                    this.update &amp;&amp; this.update.run();
                }
            }
        }, e.complete = function() {
            if (this._target) {
                i.timer.runTimer(this, this.firstStart);
                for (var t = this._target, e = this._props, n = this._complete, r = 0, s = e.length; r &lt; s; r++) {
                    var a = e[r];
                    t[a[0]] = a[1] + a[2];
                }
                this.update &amp;&amp; this.update.run(), this._count++, 0 != this.repeat &amp;&amp; this._count &gt;= this.repeat ? (this.clear(), 
                n &amp;&amp; n.run()) : this.restart();
            }
        }, e.pause = function() {
            i.timer.clear(this, this._beginLoop), i.timer.clear(this, this._doEase), i.timer.clear(this, this.firstStart);
            var t = NaN;
            (t = Dt.now() - this._startTimer - this._delay) &lt; 0 &amp;&amp; (this._usedTimer = t);
        }, e.setStartTime = function(t) {
            this._startTimer = t;
        }, e.clear = function() {
            this._target &amp;&amp; (this._remove(), this._clear());
        }, e._clear = function() {
            this.pause(), i.timer.clear(this, this.firstStart), this._complete = null, this._target = null, 
            this._ease = null, this._props = null, this._delayParam = null, this._usedPool &amp;&amp; (this.update = null, 
            U.recover("tween", this));
        }, e.recover = function() {
            this._usedPool = !0, this._clear();
        }, e._remove = function() {
            var e = t.tweenMap[this._target.$_GID];
            if (e) for (var i = 0, n = e.length; i &lt; n; i++) if (e[i] === this) {
                e.splice(i, 1);
                break;
            }
        }, e.restart = function() {
            if (this.pause(), this._usedTimer = 0, this._startTimer = Dt.now(), this._delayParam) i.timer.once(this._delay, this, this.firstStart, this._delayParam); else {
                for (var t = this._props, e = 0, n = t.length; e &lt; n; e++) {
                    var r = t[e];
                    this._target[r[0]] = r[1];
                }
                i.timer.once(this._delay, this, this._beginLoop);
            }
        }, e.resume = function() {
            this._usedTimer &gt;= this._duration || (this._startTimer = Dt.now() - this._usedTimer - this._delay, 
            this._delayParam ? this._usedTimer &lt; 0 ? i.timer.once(-this._usedTimer, this, this.firstStart, this._delayParam) : this.firstStart.apply(this, this._delayParam) : this._beginLoop());
        }, s(0, e, "progress", null, function(t) {
            var e = t * this._duration;
            this._startTimer = Dt.now() - this._delay - e;
        }), t.to = function(e, i, n, r, s, a, o, h) {
            return void 0 === a &amp;&amp; (a = 0), void 0 === o &amp;&amp; (o = !1), void 0 === h &amp;&amp; (h = !0), 
            U.getItemByClass("tween", t)._create(e, i, n, r, s, a, o, !0, h, !0);
        }, t.from = function(e, i, n, r, s, a, o, h) {
            return void 0 === a &amp;&amp; (a = 0), void 0 === o &amp;&amp; (o = !1), void 0 === h &amp;&amp; (h = !0), 
            U.getItemByClass("tween", t)._create(e, i, n, r, s, a, o, !1, h, !0);
        }, t.clearAll = function(e) {
            if (e &amp;&amp; e.$_GID) {
                var i = t.tweenMap[e.$_GID];
                if (i) {
                    for (var n = 0, r = i.length; n &lt; r; n++) i[n]._clear();
                    i.length = 0;
                }
            }
        }, t.clear = function(t) {
            t.clear();
        }, t.clearTween = function(e) {
            t.clearAll(e);
        }, t.easeNone = function(t, e, i, n) {
            return i * t / n + e;
        }, t.tweenMap = [], t;
    }(), j = function() {
        function t() {}
        r(t, "laya.display.cmd.DrawRectCmd");
        var e = t.prototype;
        return e.recover = function() {
            this.fillColor = null, this.lineColor = null, U.recover("DrawRectCmd", this);
        }, e.run = function(t, e, i) {
            t.drawRect(this.x + e, this.y + i, this.width, this.height, this.fillColor, this.lineColor, this.lineWidth);
        }, s(0, e, "cmdID", function() {
            return "DrawRect";
        }), t.create = function(e, i, n, r, s, a, o) {
            var h = U.getItemByClass("DrawRectCmd", t);
            return h.x = e, h.y = i, h.width = n, h.height = r, h.fillColor = s, h.lineColor = a, 
            h.lineWidth = o, h;
        }, t.ID = "DrawRect", t;
    }(), K = function() {
        function t(t, e, i) {
            this.i = null, this.x = null, this.y = null, this.prev = null, this.next = null, 
            this.z = null, this.prevZ = null, this.nextZ = null, this.steiner = null, this.i = t, 
            this.x = e, this.y = i, this.prev = null, this.next = null, this.z = null, this.prevZ = null, 
            this.nextZ = null, this.steiner = !1;
        }
        return r(t, "laya.webgl.shapes.EarcutNode"), t;
    }(), $ = function() {
        function t() {
            this.fun = null, this._this = null, this.args = null, this._ref = 1, this._key = new k();
        }
        r(t, "laya.webgl.submit.SubmitCMD");
        var e = t.prototype;
        return i.imps(e, {
            "laya.webgl.submit.ISubmit": !0
        }), e.renderSubmit = function() {
            return this.fun.apply(this._this, this.args), 1;
        }, e.getRenderType = function() {
            return 0;
        }, e.reUse = function(t, e) {
            return this._ref++, e;
        }, e.releaseRender = function() {
            if (--this._ref &lt; 1) {
                var e = t.POOL;
                e[e._length++] = this;
            }
        }, e.clone = function(t, e, i) {
            return null;
        }, t.create = function(e, i, n) {
            var r = t.POOL._length ? t.POOL[--t.POOL._length] : new t();
            return r.fun = i, r.args = e, r._this = n, r._ref = 1, r._key.clear(), r;
        }, t.POOL = [], t.__init$ = function() {
            t.POOL._length = 0;
        }, t;
    }(), q = function() {
        function t(e) {
            this._url = null, this._path = null, this._url = t.formatURL(e), this._path = t.getPath(e);
        }
        r(t, "laya.net.URL");
        var e = t.prototype;
        return s(0, e, "path", function() {
            return this._path;
        }), s(0, e, "url", function() {
            return this._url;
        }), s(1, t, "basePath", function() {
            return t._basePath;
        }, function(e) {
            t._basePath = i._getUrlPath(), t._basePath = t.formatURL(e);
        }), t.formatURL = function(e) {
            if (!e) return "null path";
            if (e.indexOf(":") &gt; 0) return e;
            if (null != t.customFormat &amp;&amp; (e = t.customFormat(e)), e.indexOf(":") &gt; 0) return e;
            var i = e.charAt(0);
            if ("." === i) return t._formatRelativePath(t._basePath + e);
            if ("~" === i) return t.rootPath + e.substring(1);
            if ("d" === i) {
                if (0 === e.indexOf("data:image")) return e;
            } else if ("/" === i) return e;
            return t._basePath + e;
        }, t._formatRelativePath = function(t) {
            for (var e = t.split("/"), i = 0, n = e.length; i &lt; n; i++) ".." == e[i] &amp;&amp; (e.splice(i - 1, 2), 
            i -= 2);
            return e.join("/");
        }, t.getPath = function(t) {
            var e = t.lastIndexOf("/");
            return e &gt; 0 ? t.substr(0, e + 1) : "";
        }, t.getFileName = function(t) {
            var e = t.lastIndexOf("/");
            return e &gt; 0 ? t.substr(e + 1) : t;
        }, t.getAdptedFilePath = function(e) {
            if (!t.exportSceneToJson || !e) return e;
            var i = 0, n = 0;
            n = t._adpteTypeList.length;
            var r;
            for (i = 0; i &lt; n; i++) r = t._adpteTypeList[i], e = e.replace(r[0], r[1]);
            return e;
        }, t.version = {}, t.exportSceneToJson = !1, t._basePath = "", t.rootPath = "", 
        t.customFormat = function(e) {
            var i = t.version[e];
            return !Mt.isConchApp &amp;&amp; i &amp;&amp; (e += "?v=" + i), e;
        }, n(t, [ "_adpteTypeList", function() {
            return this._adpteTypeList = [ [ ".scene3d", ".json" ], [ ".scene", ".json" ], [ ".taa", ".json" ], [ ".prefab", ".json" ] ];
        } ]), t;
    }(), Q = function() {
        function t() {}
        return r(t, "laya.utils.CacheManger"), t.regCacheByFunction = function(e, i) {
            t.unRegCacheByFunction(e, i);
            var n;
            n = {
                tryDispose: e,
                getCacheList: i
            }, t._cacheList.push(n);
        }, t.unRegCacheByFunction = function(e, i) {
            var n = 0, r = 0;
            for (r = t._cacheList.length, n = 0; n &lt; r; n++) if (t._cacheList[n].tryDispose == e &amp;&amp; t._cacheList[n].getCacheList == i) return void t._cacheList.splice(n, 1);
        }, t.forceDispose = function() {
            var e = 0, i = t._cacheList.length;
            for (e = 0; e &lt; i; e++) t._cacheList[e].tryDispose(!0);
        }, t.beginCheck = function(e) {
            void 0 === e &amp;&amp; (e = 15e3), i.systemTimer.loop(e, null, t._checkLoop);
        }, t.stopCheck = function() {
            i.systemTimer.clear(null, t._checkLoop);
        }, t._checkLoop = function() {
            var e = t._cacheList;
            if (!(e.length &lt; 1)) {
                var i = Dt.now(), n = 0, r = 0;
                for (r = n = e.length; n &gt; 0 &amp;&amp; (t._index++, t._index = t._index % r, e[t._index].tryDispose(!1), 
                !(Dt.now() - i &gt; t.loopTimeLimit)); ) n--;
            }
        }, t.loopTimeLimit = 2, t._cacheList = [], t._index = 0, t;
    }(), Z = function() {
        function t() {
            this.reset();
        }
        r(t, "laya.display.css.SpriteStyle");
        var e = t.prototype;
        return e.reset = function() {
            return this.scaleX = this.scaleY = 1, this.skewX = this.skewY = 0, this.pivotX = this.pivotY = this.rotation = 0, 
            this.alpha = 1, this.scrollRect &amp;&amp; this.scrollRect.recover(), this.scrollRect = null, 
            this.viewport &amp;&amp; this.viewport.recover(), this.viewport = null, this.hitArea = null, 
            this.dragging = null, this.blendMode = null, this;
        }, e.recover = function() {
            this !== t.EMPTY &amp;&amp; U.recover("SpriteStyle", this.reset());
        }, t.create = function() {
            return U.getItemByClass("SpriteStyle", t);
        }, t.EMPTY = new t(), t;
    }(), J = (function() {
        function t(t, e) {
            this.submitStartPos = 0, this.submitEndPos = 0, this.context = null, this.touches = [], 
            this.submits = [], this.sprite = null, this._mesh = null, this._pathMesh = null, 
            this._triangleMesh = null, this.meshlist = [], this._oldMesh = null, this._oldPathMesh = null, 
            this._oldTriMesh = null, this._oldMeshList = null, this.oldTx = 0, this.oldTy = 0, 
            this.cachedClipInfo = new st(), this.invMat = new st(), this.context = t, this.sprite = e, 
            t._globalClipMatrix.copyTo(this.cachedClipInfo);
        }
        r(t, "laya.webgl.canvas.WebGLCacheAsNormalCanvas");
        var e = t.prototype;
        e.startRec = function() {
            this.context._charSubmitCache._enbale &amp;&amp; (this.context._charSubmitCache.enable(!1, this.context), 
            this.context._charSubmitCache.enable(!0, this.context)), this.context._incache = !0, 
            this.touches.length = 0, this.context.touches = this.touches, this.context._globalClipMatrix.copyTo(this.cachedClipInfo), 
            this.submits.length = 0, this.submitStartPos = this.context._submits._length;
            for (var t = 0, e = this.meshlist.length; t &lt; e; t++) {
                var i = this.meshlist[t];
                i.canReuse ? i.releaseMesh() : i.destroy();
            }
            this.meshlist.length = 0, this._mesh = Be.getAMesh(!1), this._pathMesh = Se.getAMesh(!1), 
            this._triangleMesh = ke.getAMesh(!1), this.meshlist.push(this._mesh), this.meshlist.push(this._pathMesh), 
            this.meshlist.push(this._triangleMesh), this.context._curSubmit = l.RENDERBASE, 
            this._oldMesh = this.context._mesh, this._oldPathMesh = this.context._pathMesh, 
            this._oldTriMesh = this.context._triangleMesh, this._oldMeshList = this.context.meshlist, 
            this.context._mesh = this._mesh, this.context._pathMesh = this._pathMesh, this.context._triangleMesh = this._triangleMesh, 
            this.context.meshlist = this.meshlist, this.oldTx = this.context._curMat.tx, this.oldTy = this.context._curMat.ty, 
            this.context._curMat.tx = 0, this.context._curMat.ty = 0, this.context._curMat.copyTo(this.invMat), 
            this.invMat.invert();
        }, e.endRec = function() {
            this.context._charSubmitCache._enbale &amp;&amp; (this.context._charSubmitCache.enable(!1, this.context), 
            this.context._charSubmitCache.enable(!0, this.context));
            var t = this.context._submits;
            this.submitEndPos = t._length;
            for (var e = this.submitEndPos - this.submitStartPos, i = 0; i &lt; e; i++) this.submits.push(t[this.submitStartPos + i]);
            t._length -= e, this.context._mesh = this._oldMesh, this.context._pathMesh = this._oldPathMesh, 
            this.context._triangleMesh = this._oldTriMesh, this.context.meshlist = this._oldMeshList, 
            this.context._curSubmit = l.RENDERBASE, this.context._curMat.tx = this.oldTx, this.context._curMat.ty = this.oldTy, 
            this.context.touches = null, this.context._incache = !1;
        }, e.isCacheValid = function() {
            var t = this.context._globalClipMatrix;
            return t.a == this.cachedClipInfo.a &amp;&amp; t.b == this.cachedClipInfo.b &amp;&amp; t.c == this.cachedClipInfo.c &amp;&amp; t.d == this.cachedClipInfo.d &amp;&amp; t.tx == this.cachedClipInfo.tx &amp;&amp; t.ty == this.cachedClipInfo.ty;
        }, e.flushsubmit = function() {
            var t = l.RENDERBASE;
            this.submits.forEach(function(e) {
                e != l.RENDERBASE &amp;&amp; (l.preRender = t, t = e, e.renderSubmit());
            });
        }, e.releaseMem = function() {}, n(t, [ "matI", function() {
            return this.matI = new st();
        } ]);
    }(), function() {
        function t(t) {
            this.scale = 1, this.currFrame = 0, this._delta = 0, this._map = [], this._handlers = [], 
            this._temp = [], this._count = 0, this.currTimer = Dt.now(), this._lastTimer = Dt.now(), 
            void 0 === t &amp;&amp; (t = !0), t &amp;&amp; i.systemTimer &amp;&amp; i.systemTimer.frameLoop(1, this, this._update);
        }
        var e;
        r(t, "laya.utils.Timer");
        var n = t.prototype;
        return n._update = function() {
            if (this.scale &lt;= 0) this._lastTimer = Dt.now(); else {
                var t = this.currFrame = this.currFrame + this.scale, e = Dt.now();
                this._delta = (e - this._lastTimer) * this.scale;
                var i = this.currTimer = this.currTimer + this._delta;
                this._lastTimer = e;
                var n = this._handlers;
                this._count = 0;
                for (var r = 0, s = n.length; r &lt; s; r++) {
                    var a = n[r];
                    if (null !== a.method) {
                        var o = a.userFrame ? t : i;
                        if (o &gt;= a.exeTime) if (a.repeat) if (a.jumpFrame) for (;o &gt;= a.exeTime; ) a.exeTime += a.delay, 
                        a.run(!1); else a.exeTime += a.delay, a.run(!1), o &gt; a.exeTime &amp;&amp; (a.exeTime += Math.ceil((o - a.exeTime) / a.delay) * a.delay); else a.run(!0);
                    } else this._count++;
                }
                (this._count &gt; 30 || t % 200 == 0) &amp;&amp; this._clearHandlers();
            }
        }, n._clearHandlers = function() {
            for (var t = this._handlers, e = 0, i = t.length; e &lt; i; e++) {
                var n = t[e];
                null !== n.method ? this._temp.push(n) : this._recoverHandler(n);
            }
            this._handlers = this._temp, t.length = 0, this._temp = t;
        }, n._recoverHandler = function(e) {
            this._map[e.key] == e &amp;&amp; (this._map[e.key] = null), e.clear(), t._pool.push(e);
        }, n._create = function(i, n, r, s, a, o, h) {
            if (!r) return a.apply(s, o), null;
            if (h) {
                var l = this._getHandler(s, a);
                if (l) return l.repeat = n, l.userFrame = i, l.delay = r, l.caller = s, l.method = a, 
                l.args = o, l.exeTime = r + (i ? this.currFrame : this.currTimer + Dt.now() - this._lastTimer), 
                l;
            }
            return l = t._pool.length &gt; 0 ? t._pool.pop() : new e(), l.repeat = n, l.userFrame = i, 
            l.delay = r, l.caller = s, l.method = a, l.args = o, l.exeTime = r + (i ? this.currFrame : this.currTimer + Dt.now() - this._lastTimer), 
            this._indexHandler(l), this._handlers.push(l), l;
        }, n._indexHandler = function(e) {
            var i = e.caller, n = e.method, r = i ? i.$_GID || (i.$_GID = ie.getGID()) : 0, s = n.$_TID || (n.$_TID = 1e5 * t._mid++);
            e.key = r + s, this._map[e.key] = e;
        }, n.once = function(t, e, i, n, r) {
            void 0 === r &amp;&amp; (r = !0), this._create(!1, !1, t, e, i, n, r);
        }, n.loop = function(t, e, i, n, r, s) {
            void 0 === r &amp;&amp; (r = !0), void 0 === s &amp;&amp; (s = !1);
            var a = this._create(!1, !0, t, e, i, n, r);
            a &amp;&amp; (a.jumpFrame = s);
        }, n.frameOnce = function(t, e, i, n, r) {
            void 0 === r &amp;&amp; (r = !0), this._create(!0, !1, t, e, i, n, r);
        }, n.frameLoop = function(t, e, i, n, r) {
            void 0 === r &amp;&amp; (r = !0), this._create(!0, !0, t, e, i, n, r);
        }, n.toString = function() {
            return " handlers:" + this._handlers.length + " pool:" + t._pool.length;
        }, n.clear = function(t, e) {
            var i = this._getHandler(t, e);
            i &amp;&amp; (this._map[i.key] = null, i.key = 0, i.clear());
        }, n.clearAll = function(t) {
            if (t) for (var e = 0, i = this._handlers.length; e &lt; i; e++) {
                var n = this._handlers[e];
                n.caller === t &amp;&amp; (this._map[n.key] = null, n.key = 0, n.clear());
            }
        }, n._getHandler = function(e, i) {
            var n = e ? e.$_GID || (e.$_GID = ie.getGID()) : 0, r = i.$_TID || (i.$_TID = 1e5 * t._mid++);
            return this._map[n + r];
        }, n.callLater = function(t, e, i) {
            $t.I.callLater(t, e, i);
        }, n.runCallLater = function(t, e) {
            $t.I.runCallLater(t, e);
        }, n.runTimer = function(t, e) {
            var i = this._getHandler(t, e);
            i &amp;&amp; null != i.method &amp;&amp; (this._map[i.key] = null, i.run(!0));
        }, n.pause = function() {
            this.scale = 0;
        }, n.resume = function() {
            this.scale = 1;
        }, s(0, n, "delta", function() {
            return this._delta;
        }), t._pool = [], t._mid = 1, t.__init$ = function() {
            e = function() {
                function t() {
                    this.key = 0, this.repeat = !1, this.delay = 0, this.userFrame = !1, this.exeTime = 0, 
                    this.caller = null, this.method = null, this.args = null, this.jumpFrame = !1;
                }
                r(t, "");
                var e = t.prototype;
                return e.clear = function() {
                    this.caller = null, this.method = null, this.args = null;
                }, e.run = function(t) {
                    var e = this.caller;
                    if (e &amp;&amp; e.destroyed) return this.clear();
                    var i = this.method, n = this.args;
                    t &amp;&amp; this.clear(), null != i &amp;&amp; (n ? i.apply(e, n) : i.call(e));
                }, t;
            }();
        }, t;
    }()), tt = function() {
        function t() {
            this.reset();
        }
        r(t, "laya.display.css.CacheStyle");
        var e = t.prototype;
        return e.needBitmapCache = function() {
            return this.cacheForFilters || !!this.mask;
        }, e.needEnableCanvasRender = function() {
            return "none" != this.userSetCache || this.cacheForFilters || !!this.mask;
        }, e.releaseContext = function() {
            this.canvas &amp;&amp; this.canvas.size &amp;&amp; (U.recover("CacheCanvas", this.canvas), this.canvas.size(0, 0), 
            this.canvas.width = 0, this.canvas.height = 0), this.canvas = null;
        }, e.createContext = function() {
            if (!this.canvas) {
                this.canvas = U.getItem("CacheCanvas") || new si(!1);
                var t = this.canvas.context;
                t || (t = this.canvas.getContext("2d"));
            }
        }, e.releaseFilterCache = function() {
            var t = this.filterCache;
            t &amp;&amp; (t.destroy(), t.recycle(), this.filterCache = null);
        }, e.recover = function() {
            this !== t.EMPTY &amp;&amp; U.recover("SpriteCache", this.reset());
        }, e.reset = function() {
            return this.releaseContext(), this.releaseFilterCache(), this.cacheAs = "none", 
            this.enableCanvasRender = !1, this.userSetCache = "none", this.cacheForFilters = !1, 
            this.staticCache = !1, this.reCache = !0, this.mask = null, this.maskParent = null, 
            this.filterCache = null, this.filters = null, this.hasGlowFilter = !1, this.cacheRect &amp;&amp; this.cacheRect.recover(), 
            this.cacheRect = null, this;
        }, e._calculateCacheRect = function(e, i, n, r) {
            var s = e._cacheStyle;
            s.cacheRect || (s.cacheRect = mt.create());
            var a;
            if ("bitmap" === i ? ((a = e.getSelfBounds()).width = a.width + 32, a.height = a.height + 32, 
            a.x = a.x - e.pivotX, a.y = a.y - e.pivotY, a.x = a.x - 16, a.y = a.y - 16, a.x = Math.floor(a.x + n) - n, 
            a.y = Math.floor(a.y + r) - r, a.width = Math.floor(a.width), a.height = Math.floor(a.height), 
            s.cacheRect.copyFrom(a)) : s.cacheRect.setTo(-e._style.pivotX, -e._style.pivotY, 1, 1), 
            a = s.cacheRect, e._style.scrollRect) {
                var o = e._style.scrollRect;
                a.x -= o.x, a.y -= o.y;
            }
            return t._scaleInfo.setTo(1, 1), t._scaleInfo;
        }, t.create = function() {
            return U.getItemByClass("SpriteCache", t);
        }, t.EMPTY = new t(), t.CANVAS_EXTEND_EDGE = 16, n(t, [ "_scaleInfo", function() {
            return this._scaleInfo = new Yt();
        } ]), t;
    }(), et = function() {
        function t() {
            this._mat = new st();
        }
        r(t, "laya.webgl.canvas.save.SaveTranslate");
        var e = t.prototype;
        return i.imps(e, {
            "laya.webgl.canvas.save.ISaveData": !0
        }), e.isSaveMark = function() {
            return !1;
        }, e.restore = function(e) {
            this._mat.copyTo(e._curMat), t.POOL[t.POOL._length++] = this;
        }, t.save = function(e) {
            var i = t.POOL, n = i._length &gt; 0 ? i[--i._length] : new t();
            e._curMat.copyTo(n._mat);
            var r = e._save;
            r[r._length++] = n;
        }, t.POOL = h._createArray(), t;
    }(), it = function() {
        function t() {}
        r(t, "laya.display.cmd.DrawLineCmd");
        var e = t.prototype;
        return e.recover = function() {
            U.recover("DrawLineCmd", this);
        }, e.run = function(t, e, i) {
            t._drawLine(e, i, this.fromX, this.fromY, this.toX, this.toY, this.lineColor, this.lineWidth, this.vid);
        }, s(0, e, "cmdID", function() {
            return "DrawLine";
        }), t.create = function(e, i, n, r, s, a, o) {
            var h = U.getItemByClass("DrawLineCmd", t);
            return h.fromX = e, h.fromY = i, h.toX = n, h.toY = r, h.lineColor = s, h.lineWidth = a, 
            h.vid = o, h;
        }, t.ID = "DrawLine", t;
    }(), nt = function() {
        function e() {}
        r(e, "laya.webgl.WebGLContext");
        var i = e.prototype;
        return i.getContextAttributes = function() {
            return null;
        }, i.isContextLost = function() {}, i.getSupportedExtensions = function() {
            return null;
        }, i.getExtension = function(t) {
            return null;
        }, i.activeTexture = function(t) {}, i.attachShader = function(t, e) {}, i.bindAttribLocation = function(t, e, i) {}, 
        i.bindBuffer = function(t, e) {}, i.bindFramebuffer = function(t, e) {}, i.bindRenderbuffer = function(t, e) {}, 
        i.bindTexture = function(t, e) {}, i.useTexture = function(t) {}, i.blendColor = function(t, e, i, n) {}, 
        i.blendEquation = function(t) {}, i.blendEquationSeparate = function(t, e) {}, i.blendFunc = function(t, e) {}, 
        i.blendFuncSeparate = function(t, e, i, n) {}, i.bufferData = function(t, e, i) {}, 
        i.bufferSubData = function(t, e, i) {}, i.checkFramebufferStatus = function(t) {
            return null;
        }, i.clear = function(t) {}, i.clearColor = function(t, e, i, n) {}, i.clearDepth = function(t) {}, 
        i.clearStencil = function(t) {}, i.colorMask = function(t, e, i, n) {}, i.compileShader = function(t) {}, 
        i.copyTexImage2D = function(t, e, i, n, r, s, a, o) {}, i.copyTexSubImage2D = function(t, e, i, n, r, s, a, o) {}, 
        i.createBuffer = function() {}, i.createFramebuffer = function() {}, i.createProgram = function() {}, 
        i.createRenderbuffer = function() {}, i.createShader = function(t) {}, i.createTexture = function() {
            return null;
        }, i.cullFace = function(t) {}, i.deleteBuffer = function(t) {}, i.deleteFramebuffer = function(t) {}, 
        i.deleteProgram = function(t) {}, i.deleteRenderbuffer = function(t) {}, i.deleteShader = function(t) {}, 
        i.deleteTexture = function(t) {}, i.depthFunc = function(t) {}, i.depthMask = function(t) {}, 
        i.depthRange = function(t, e) {}, i.detachShader = function(t, e) {}, i.disable = function(t) {}, 
        i.disableVertexAttribArray = function(t) {}, i.drawArrays = function(t, e, i) {}, 
        i.drawElements = function(t, e, i, n) {}, i.enable = function(t) {}, i.enableVertexAttribArray = function(t) {}, 
        i.finish = function() {}, i.flush = function() {}, i.framebufferRenderbuffer = function(t, e, i, n) {}, 
        i.framebufferTexture2D = function(t, e, i, n, r) {}, i.frontFace = function(t) {
            return null;
        }, i.generateMipmap = function(t) {
            return null;
        }, i.getActiveAttrib = function(t, e) {
            return null;
        }, i.getActiveUniform = function(t, e) {
            return null;
        }, i.getAttribLocation = function(t, e) {
            return 0;
        }, i.getParameter = function(t) {
            return null;
        }, i.getBufferParameter = function(t, e) {
            return null;
        }, i.getError = function() {
            return null;
        }, i.getFramebufferAttachmentParameter = function(t, e, i) {}, i.getProgramParameter = function(t, e) {
            return 0;
        }, i.getProgramInfoLog = function(t) {
            return null;
        }, i.getRenderbufferParameter = function(t, e) {
            return null;
        }, i.getShaderPrecisionFormat = function(t) {
            return null;
        }, i.getShaderParameter = function(t, e) {}, i.getShaderInfoLog = function(t) {
            return null;
        }, i.getShaderSource = function(t) {
            return null;
        }, i.getTexParameter = function(t, e) {}, i.getUniform = function(t, e) {}, i.getUniformLocation = function(t, e) {
            return null;
        }, i.getVertexAttrib = function(t, e) {
            return null;
        }, i.getVertexAttribOffset = function(t, e) {
            return null;
        }, i.hint = function(t, e) {}, i.isBuffer = function(t) {}, i.isEnabled = function(t) {}, 
        i.isFramebuffer = function(t) {}, i.isProgram = function(t) {}, i.isRenderbuffer = function(t) {}, 
        i.isShader = function(t) {}, i.isTexture = function(t) {}, i.lineWidth = function(t) {}, 
        i.linkProgram = function(t) {}, i.pixelStorei = function(t, e) {}, i.polygonOffset = function(t, e) {}, 
        i.readPixels = function(t, e, i, n, r, s, a) {}, i.renderbufferStorage = function(t, e, i, n) {}, 
        i.sampleCoverage = function(t, e) {}, i.scissor = function(t, e, i, n) {}, i.shaderSource = function(t, e) {}, 
        i.stencilFunc = function(t, e, i) {}, i.stencilFuncSeparate = function(t, e, i, n) {}, 
        i.stencilMask = function(t) {}, i.stencilMaskSeparate = function(t, e) {}, i.stencilOp = function(t, e, i) {}, 
        i.stencilOpSeparate = function(t, e, i, n) {}, i.texImage2D = function(t) {}, i.texParameterf = function(t, e, i) {}, 
        i.texParameteri = function(t, e, i) {}, i.texSubImage2D = function(t) {}, i.uniform1f = function(t, e) {}, 
        i.uniform1fv = function(t, e) {}, i.uniform1i = function(t, e) {}, i.uniform1iv = function(t, e) {}, 
        i.uniform2f = function(t, e, i) {}, i.uniform2fv = function(t, e) {}, i.uniform2i = function(t, e, i) {}, 
        i.uniform2iv = function(t, e) {}, i.uniform3f = function(t, e, i, n) {}, i.uniform3fv = function(t, e) {}, 
        i.uniform3i = function(t, e, i, n) {}, i.uniform3iv = function(t, e) {}, i.uniform4f = function(t, e, i, n, r) {}, 
        i.uniform4fv = function(t, e) {}, i.uniform4i = function(t, e, i, n, r) {}, i.uniform4iv = function(t, e) {}, 
        i.uniformMatrix2fv = function(t, e, i) {}, i.uniformMatrix3fv = function(t, e, i) {}, 
        i.uniformMatrix4fv = function(t, e, i) {}, i.useProgram = function(t) {}, i.validateProgram = function(t) {}, 
        i.vertexAttrib1f = function(t, e) {}, i.vertexAttrib1fv = function(t, e) {}, i.vertexAttrib2f = function(t, e, i) {}, 
        i.vertexAttrib2fv = function(t, e) {}, i.vertexAttrib3f = function(t, e, i, n) {}, 
        i.vertexAttrib3fv = function(t, e) {}, i.vertexAttrib4f = function(t, e, i, n, r) {}, 
        i.vertexAttrib4fv = function(t, e) {}, i.vertexAttribPointer = function(t, e, i, n, r, s) {}, 
        i.viewport = function(t, e, i, n) {}, i.configureBackBuffer = function(t, e, i, n, r) {
            void 0 === n &amp;&amp; (n = !0), void 0 === r &amp;&amp; (r = !1);
        }, i.compressedTexImage2D = function(t) {}, i.createVertexArray = function() {
            throw "not implemented";
        }, i.bindVertexArray = function(t) {
            throw "not implemented";
        }, i.deleteVertexArray = function(t) {
            throw "not implemented";
        }, i.isVertexArray = function(t) {
            throw "not implemented";
        }, e._forceSupportVAOPlatform = function() {
            return Dt.onMiniGame &amp;&amp; Dt.onIOS || Dt.onBDMiniGame || Dt.onQGMiniGame;
        }, e.__init__ = function(i) {
            if (laya.webgl.WebGLContext._checkExtensions(i), !wt._isWebGL2 &amp;&amp; !Mt.isConchApp) {
                t._setupVertexArrayObject &amp;&amp; (e._forceSupportVAOPlatform() ? t._forceSetupVertexArrayObject(i) : t._setupVertexArrayObject(i));
                var n = (i.rawgl || i).getExtension("OES_vertex_array_object");
                if (n) {
                    var r = i;
                    r.createVertexArray = function() {
                        return n.createVertexArrayOES();
                    }, r.bindVertexArray = function(t) {
                        n.bindVertexArrayOES(t);
                    }, r.deleteVertexArray = function(t) {
                        n.deleteVertexArrayOES(t);
                    }, r.isVertexArray = function(t) {
                        n.isVertexArrayOES(t);
                    };
                }
            }
        }, e._getExtension = function(t, i) {
            var n = e._extentionVendorPrefixes;
            for (var r in n) {
                var s = t.getExtension(n[r] + i);
                if (s) return s;
            }
            return null;
        }, e._checkExtensions = function(t) {
            e._extTextureFilterAnisotropic = e._getExtension(t, "EXT_texture_filter_anisotropic"), 
            e._compressedTextureS3tc = e._getExtension(t, "WEBGL_compressed_texture_s3tc"), 
            e._compressedTexturePvrtc = e._getExtension(t, "WEBGL_compressed_texture_pvrtc"), 
            e._compressedTextureEtc1 = e._getExtension(t, "WEBGL_compressed_texture_etc1"), 
            e._forceSupportVAOPlatform() || (e._angleInstancedArrays = e._getExtension(t, "ANGLE_instanced_arrays"));
        }, e.__init_native = function() {
            if (Mt.supportWebGLPlusRendering) {
                var t = e;
                t.activeTexture = t.activeTextureForNative, t.bindTexture = t.bindTextureForNative;
            }
        }, e.useProgram = function(t, i) {
            return e._useProgram !== i &amp;&amp; (t.useProgram(i), e._useProgram = i, !0);
        }, e.setDepthTest = function(t, i) {
            i !== e._depthTest &amp;&amp; (e._depthTest = i, i ? t.enable(2929) : t.disable(2929));
        }, e.setDepthMask = function(t, i) {
            i !== e._depthMask &amp;&amp; (e._depthMask = i, t.depthMask(i));
        }, e.setDepthFunc = function(t, i) {
            i !== e._depthFunc &amp;&amp; (e._depthFunc = i, t.depthFunc(i));
        }, e.setBlend = function(t, i) {
            i !== e._blend &amp;&amp; (e._blend = i, i ? t.enable(3042) : t.disable(3042));
        }, e.setBlendFunc = function(t, i, n) {
            (i !== e._sFactor || n !== e._dFactor) &amp;&amp; (e._sFactor = e._srcAlpha = i, e._dFactor = e._dstAlpha = n, 
            t.blendFunc(i, n));
        }, e.setBlendFuncSeperate = function(t, i, n, r, s) {
            i === e._sFactor &amp;&amp; n === e._dFactor &amp;&amp; r === e._srcAlpha &amp;&amp; s === e._dstAlpha || (e._sFactor = i, 
            e._dFactor = n, e._srcAlpha = r, e._dstAlpha = s, t.blendFuncSeparate(i, n, r, s));
        }, e.setCullFace = function(t, i) {
            i !== e._cullFace &amp;&amp; (e._cullFace = i, i ? t.enable(2884) : t.disable(2884));
        }, e.setFrontFace = function(t, i) {
            i !== e._frontFace &amp;&amp; (e._frontFace = i, t.frontFace(i));
        }, e.activeTexture = function(t, i) {
            e._activedTextureID !== i &amp;&amp; (t.activeTexture(i), e._activedTextureID = i);
        }, e.bindTexture = function(t, i, n) {
            e._activeTextures[e._activedTextureID - 33984] !== n &amp;&amp; (t.bindTexture(i, n), e._activeTextures[e._activedTextureID - 33984] = n);
        }, e.useProgramForNative = function(t, e) {
            return t.useProgram(e), !0;
        }, e.setDepthTestForNative = function(t, e) {
            e ? t.enable(2929) : t.disable(2929);
        }, e.setDepthMaskForNative = function(t, e) {
            t.depthMask(e);
        }, e.setDepthFuncForNative = function(t, e) {
            t.depthFunc(e);
        }, e.setBlendForNative = function(t, e) {
            e ? t.enable(3042) : t.disable(3042);
        }, e.setBlendFuncForNative = function(t, e, i) {
            t.blendFunc(e, i);
        }, e.setCullFaceForNative = function(t, e) {
            e ? t.enable(2884) : t.disable(2884);
        }, e.setFrontFaceForNative = function(t, e) {
            t.frontFace(e);
        }, e.activeTextureForNative = function(t, e) {
            t.activeTexture(e);
        }, e.bindTextureForNative = function(t, e, i) {
            t.bindTexture(e, i);
        }, e.bindVertexArrayForNative = function(t, e) {
            t.bindVertexArray(e);
        }, e.DEPTH_BUFFER_BIT = 256, e.STENCIL_BUFFER_BIT = 1024, e.COLOR_BUFFER_BIT = 16384, 
        e.POINTS = 0, e.LINES = 1, e.LINE_LOOP = 2, e.LINE_STRIP = 3, e.TRIANGLES = 4, e.TRIANGLE_STRIP = 5, 
        e.TRIANGLE_FAN = 6, e.ZERO = 0, e.ONE = 1, e.SRC_COLOR = 768, e.ONE_MINUS_SRC_COLOR = 769, 
        e.SRC_ALPHA = 770, e.ONE_MINUS_SRC_ALPHA = 771, e.DST_ALPHA = 772, e.ONE_MINUS_DST_ALPHA = 773, 
        e.DST_COLOR = 774, e.ONE_MINUS_DST_COLOR = 775, e.SRC_ALPHA_SATURATE = 776, e.FUNC_ADD = 32774, 
        e.BLEND_EQUATION = 32777, e.BLEND_EQUATION_RGB = 32777, e.BLEND_EQUATION_ALPHA = 34877, 
        e.FUNC_SUBTRACT = 32778, e.FUNC_REVERSE_SUBTRACT = 32779, e.BLEND_DST_RGB = 32968, 
        e.BLEND_SRC_RGB = 32969, e.BLEND_DST_ALPHA = 32970, e.BLEND_SRC_ALPHA = 32971, e.CONSTANT_COLOR = 32769, 
        e.ONE_MINUS_CONSTANT_COLOR = 32770, e.CONSTANT_ALPHA = 32771, e.ONE_MINUS_CONSTANT_ALPHA = 32772, 
        e.BLEND_COLOR = 32773, e.ARRAY_BUFFER = 34962, e.ELEMENT_ARRAY_BUFFER = 34963, e.ARRAY_BUFFER_BINDING = 34964, 
        e.ELEMENT_ARRAY_BUFFER_BINDING = 34965, e.STREAM_DRAW = 35040, e.STATIC_DRAW = 35044, 
        e.DYNAMIC_DRAW = 35048, e.BUFFER_SIZE = 34660, e.BUFFER_USAGE = 34661, e.CURRENT_VERTEX_ATTRIB = 34342, 
        e.FRONT = 1028, e.BACK = 1029, e.CULL_FACE = 2884, e.FRONT_AND_BACK = 1032, e.BLEND = 3042, 
        e.DITHER = 3024, e.STENCIL_TEST = 2960, e.DEPTH_TEST = 2929, e.SCISSOR_TEST = 3089, 
        e.POLYGON_OFFSET_FILL = 32823, e.SAMPLE_ALPHA_TO_COVERAGE = 32926, e.SAMPLE_COVERAGE = 32928, 
        e.NO_ERROR = 0, e.INVALID_ENUM = 1280, e.INVALID_VALUE = 1281, e.INVALID_OPERATION = 1282, 
        e.OUT_OF_MEMORY = 1285, e.CW = 2304, e.CCW = 2305, e.LINE_WIDTH = 2849, e.ALIASED_POINT_SIZE_RANGE = 33901, 
        e.ALIASED_LINE_WIDTH_RANGE = 33902, e.CULL_FACE_MODE = 2885, e.FRONT_FACE = 2886, 
        e.DEPTH_RANGE = 2928, e.DEPTH_WRITEMASK = 2930, e.DEPTH_CLEAR_VALUE = 2931, e.DEPTH_FUNC = 2932, 
        e.STENCIL_CLEAR_VALUE = 2961, e.STENCIL_FUNC = 2962, e.STENCIL_FAIL = 2964, e.STENCIL_PASS_DEPTH_FAIL = 2965, 
        e.STENCIL_PASS_DEPTH_PASS = 2966, e.STENCIL_REF = 2967, e.STENCIL_VALUE_MASK = 2963, 
        e.STENCIL_WRITEMASK = 2968, e.STENCIL_BACK_FUNC = 34816, e.STENCIL_BACK_FAIL = 34817, 
        e.STENCIL_BACK_PASS_DEPTH_FAIL = 34818, e.STENCIL_BACK_PASS_DEPTH_PASS = 34819, 
        e.STENCIL_BACK_REF = 36003, e.STENCIL_BACK_VALUE_MASK = 36004, e.STENCIL_BACK_WRITEMASK = 36005, 
        e.VIEWPORT = 2978, e.SCISSOR_BOX = 3088, e.COLOR_CLEAR_VALUE = 3106, e.COLOR_WRITEMASK = 3107, 
        e.UNPACK_ALIGNMENT = 3317, e.PACK_ALIGNMENT = 3333, e.MAX_TEXTURE_SIZE = 3379, e.MAX_VIEWPORT_DIMS = 3386, 
        e.SUBPIXEL_BITS = 3408, e.RED_BITS = 3410, e.GREEN_BITS = 3411, e.BLUE_BITS = 3412, 
        e.ALPHA_BITS = 3413, e.DEPTH_BITS = 3414, e.STENCIL_BITS = 3415, e.POLYGON_OFFSET_UNITS = 10752, 
        e.POLYGON_OFFSET_FACTOR = 32824, e.TEXTURE_BINDING_2D = 32873, e.SAMPLE_BUFFERS = 32936, 
        e.SAMPLES = 32937, e.SAMPLE_COVERAGE_VALUE = 32938, e.SAMPLE_COVERAGE_INVERT = 32939, 
        e.NUM_COMPRESSED_TEXTURE_FORMATS = 34466, e.COMPRESSED_TEXTURE_FORMATS = 34467, 
        e.DONT_CARE = 4352, e.FASTEST = 4353, e.NICEST = 4354, e.GENERATE_MIPMAP_HINT = 33170, 
        e.BYTE = 5120, e.UNSIGNED_BYTE = 5121, e.SHORT = 5122, e.UNSIGNED_SHORT = 5123, 
        e.INT = 5124, e.UNSIGNED_INT = 5125, e.FLOAT = 5126, e.DEPTH_COMPONENT = 6402, e.ALPHA = 6406, 
        e.RGB = 6407, e.RGBA = 6408, e.LUMINANCE = 6409, e.LUMINANCE_ALPHA = 6410, e.UNSIGNED_SHORT_4_4_4_4 = 32819, 
        e.UNSIGNED_SHORT_5_5_5_1 = 32820, e.UNSIGNED_SHORT_5_6_5 = 33635, e.FRAGMENT_SHADER = 35632, 
        e.VERTEX_SHADER = 35633, e.MAX_VERTEX_ATTRIBS = 34921, e.MAX_VERTEX_UNIFORM_VECTORS = 36347, 
        e.MAX_VARYING_VECTORS = 36348, e.MAX_COMBINED_TEXTURE_IMAGE_UNITS = 35661, e.MAX_VERTEX_TEXTURE_IMAGE_UNITS = 35660, 
        e.MAX_TEXTURE_IMAGE_UNITS = 34930, e.MAX_FRAGMENT_UNIFORM_VECTORS = 36349, e.SHADER_TYPE = 35663, 
        e.DELETE_STATUS = 35712, e.LINK_STATUS = 35714, e.VALIDATE_STATUS = 35715, e.ATTACHED_SHADERS = 35717, 
        e.ACTIVE_UNIFORMS = 35718, e.ACTIVE_ATTRIBUTES = 35721, e.SHADING_LANGUAGE_VERSION = 35724, 
        e.CURRENT_PROGRAM = 35725, e.NEVER = 512, e.LESS = 513, e.EQUAL = 514, e.LEQUAL = 515, 
        e.GREATER = 516, e.NOTEQUAL = 517, e.GEQUAL = 518, e.ALWAYS = 519, e.KEEP = 7680, 
        e.REPLACE = 7681, e.INCR = 7682, e.DECR = 7683, e.INVERT = 5386, e.INCR_WRAP = 34055, 
        e.DECR_WRAP = 34056, e.VENDOR = 7936, e.RENDERER = 7937, e.VERSION = 7938, e.NEAREST = 9728, 
        e.LINEAR = 9729, e.NEAREST_MIPMAP_NEAREST = 9984, e.LINEAR_MIPMAP_NEAREST = 9985, 
        e.NEAREST_MIPMAP_LINEAR = 9986, e.LINEAR_MIPMAP_LINEAR = 9987, e.TEXTURE_MAG_FILTER = 10240, 
        e.TEXTURE_MIN_FILTER = 10241, e.TEXTURE_WRAP_S = 10242, e.TEXTURE_WRAP_T = 10243, 
        e.TEXTURE_2D = 3553, e.TEXTURE_3D = 32879, e.TEXTURE = 5890, e.TEXTURE_CUBE_MAP = 34067, 
        e.TEXTURE_BINDING_CUBE_MAP = 34068, e.TEXTURE_CUBE_MAP_POSITIVE_X = 34069, e.TEXTURE_CUBE_MAP_NEGATIVE_X = 34070, 
        e.TEXTURE_CUBE_MAP_POSITIVE_Y = 34071, e.TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072, e.TEXTURE_CUBE_MAP_POSITIVE_Z = 34073, 
        e.TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074, e.MAX_CUBE_MAP_TEXTURE_SIZE = 34076, e.TEXTURE0 = 33984, 
        e.TEXTURE1 = 33985, e.TEXTURE2 = 33986, e.TEXTURE3 = 33987, e.TEXTURE4 = 33988, 
        e.TEXTURE5 = 33989, e.TEXTURE6 = 33990, e.TEXTURE7 = 33991, e.TEXTURE8 = 33992, 
        e.TEXTURE9 = 33993, e.TEXTURE10 = 33994, e.TEXTURE11 = 33995, e.TEXTURE12 = 33996, 
        e.TEXTURE13 = 33997, e.TEXTURE14 = 33998, e.TEXTURE15 = 33999, e.TEXTURE16 = 34e3, 
        e.TEXTURE17 = 34001, e.TEXTURE18 = 34002, e.TEXTURE19 = 34003, e.TEXTURE20 = 34004, 
        e.TEXTURE21 = 34005, e.TEXTURE22 = 34006, e.TEXTURE23 = 34007, e.TEXTURE24 = 34008, 
        e.TEXTURE25 = 34009, e.TEXTURE26 = 34010, e.TEXTURE27 = 34011, e.TEXTURE28 = 34012, 
        e.TEXTURE29 = 34013, e.TEXTURE30 = 34014, e.TEXTURE31 = 34015, e.ACTIVE_TEXTURE = 34016, 
        e.REPEAT = 10497, e.CLAMP_TO_EDGE = 33071, e.MIRRORED_REPEAT = 33648, e.FLOAT_VEC2 = 35664, 
        e.FLOAT_VEC3 = 35665, e.FLOAT_VEC4 = 35666, e.INT_VEC2 = 35667, e.INT_VEC3 = 35668, 
        e.INT_VEC4 = 35669, e.BOOL = 35670, e.BOOL_VEC2 = 35671, e.BOOL_VEC3 = 35672, e.BOOL_VEC4 = 35673, 
        e.FLOAT_MAT2 = 35674, e.FLOAT_MAT3 = 35675, e.FLOAT_MAT4 = 35676, e.SAMPLER_2D = 35678, 
        e.SAMPLER_CUBE = 35680, e.VERTEX_ATTRIB_ARRAY_ENABLED = 34338, e.VERTEX_ATTRIB_ARRAY_SIZE = 34339, 
        e.VERTEX_ATTRIB_ARRAY_STRIDE = 34340, e.VERTEX_ATTRIB_ARRAY_TYPE = 34341, e.VERTEX_ATTRIB_ARRAY_NORMALIZED = 34922, 
        e.VERTEX_ATTRIB_ARRAY_POINTER = 34373, e.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 34975, 
        e.COMPILE_STATUS = 35713, e.LOW_FLOAT = 36336, e.MEDIUM_FLOAT = 36337, e.HIGH_FLOAT = 36338, 
        e.LOW_INT = 36339, e.MEDIUM_INT = 36340, e.HIGH_INT = 36341, e.FRAMEBUFFER = 36160, 
        e.RENDERBUFFER = 36161, e.RGBA4 = 32854, e.RGB5_A1 = 32855, e.RGB565 = 36194, e.DEPTH_COMPONENT16 = 33189, 
        e.STENCIL_INDEX = 6401, e.STENCIL_INDEX8 = 36168, e.DEPTH_STENCIL = 34041, e.RENDERBUFFER_WIDTH = 36162, 
        e.RENDERBUFFER_HEIGHT = 36163, e.RENDERBUFFER_INTERNAL_FORMAT = 36164, e.RENDERBUFFER_RED_SIZE = 36176, 
        e.RENDERBUFFER_GREEN_SIZE = 36177, e.RENDERBUFFER_BLUE_SIZE = 36178, e.RENDERBUFFER_ALPHA_SIZE = 36179, 
        e.RENDERBUFFER_DEPTH_SIZE = 36180, e.RENDERBUFFER_STENCIL_SIZE = 36181, e.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 36048, 
        e.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 36049, e.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 36050, 
        e.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 36051, e.COLOR_ATTACHMENT0 = 36064, 
        e.DEPTH_ATTACHMENT = 36096, e.STENCIL_ATTACHMENT = 36128, e.DEPTH_STENCIL_ATTACHMENT = 33306, 
        e.NONE = 0, e.FRAMEBUFFER_COMPLETE = 36053, e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 36054, 
        e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 36055, e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 36057, 
        e.FRAMEBUFFER_UNSUPPORTED = 36061, e.FRAMEBUFFER_BINDING = 36006, e.RENDERBUFFER_BINDING = 36007, 
        e.MAX_RENDERBUFFER_SIZE = 34024, e.INVALID_FRAMEBUFFER_OPERATION = 1286, e.UNPACK_FLIP_Y_WEBGL = 37440, 
        e.UNPACK_PREMULTIPLY_ALPHA_WEBGL = 37441, e.CONTEXT_LOST_WEBGL = 37442, e.UNPACK_COLORSPACE_CONVERSION_WEBGL = 37443, 
        e.BROWSER_DEFAULT_WEBGL = 37444, e._extTextureFilterAnisotropic = null, e._compressedTextureS3tc = null, 
        e._compressedTexturePvrtc = null, e._compressedTextureEtc1 = null, e._angleInstancedArrays = null, 
        e._glTextureIDs = [ 33984, 33985, 33986, 33987, 33988, 33989, 33990, 33991 ], e._useProgram = null, 
        e._depthTest = !0, e._depthMask = !0, e._blend = !1, e._cullFace = !1, e._activedTextureID = 33984, 
        n(e, [ "_extentionVendorPrefixes", function() {
            return this._extentionVendorPrefixes = [ "", "WEBKIT_", "MOZ_" ];
        }, "_activeTextures", function() {
            return this._activeTextures = new Array(8);
        }, "_depthFunc", function() {
            return this._depthFunc = 513;
        }, "_sFactor", function() {
            return this._sFactor = 1;
        }, "_dFactor", function() {
            return this._dFactor = 0;
        }, "_srcAlpha", function() {
            return this._srcAlpha = 1;
        }, "_dstAlpha", function() {
            return this._dstAlpha = 0;
        }, "_frontFace", function() {
            return this._frontFace = 2305;
        } ]), e;
    }(), rt = (function() {
        function t() {}
        r(t, "laya.net.ResourceVersion"), t.enable = function(e, n, r) {
            void 0 === r &amp;&amp; (r = 2), laya.net.ResourceVersion.type = r, i.loader.load(e, g.create(null, t.onManifestLoaded, [ n ]), null, "json"), 
            q.customFormat = t.addVersionPrefix;
        }, t.onManifestLoaded = function(e, i) {
            t.manifest = i, e.run(), i || console.warn("èµ„æºç‰ˆæœ¬æ¸…å•æ–‡ä»¶ä¸å­˜åœ¨ï¼Œä¸ä½¿ç”¨èµ„æºç‰ˆæœ¬ç®¡ç†ã€‚å¿½ç•¥ERR_FILE_NOT_FOUNDé”™è¯¯ã€‚");
        }, t.addVersionPrefix = function(e) {
            return e = q.getAdptedFilePath(e), t.manifest &amp;&amp; t.manifest[e] ? 2 == t.type ? t.manifest[e] : t.manifest[e] + "/" + e : e;
        }, t.FOLDER_VERSION = 1, t.FILENAME_VERSION = 2, t.manifest = null, t.type = 1;
    }(), function() {
        function t() {}
        r(t, "laya.display.cmd.FillWordsCmd");
        var e = t.prototype;
        return e.recover = function() {
            this.words = null, U.recover("FillWordsCmd", this);
        }, e.run = function(t, e, i) {
            t.fillWords(this.words, this.x + e, this.y + i, this.font, this.color);
        }, s(0, e, "cmdID", function() {
            return "FillWords";
        }), t.create = function(e, i, n, r, s) {
            var a = U.getItemByClass("FillWordsCmd", t);
            return a.words = e, a.x = i, a.y = n, a.font = r, a.color = s, a;
        }, t.ID = "FillWords", t;
    }()), st = function() {
        function t(e, i, n, r, s, a, o) {
            if (this._bTransform = !1, void 0 === e &amp;&amp; (e = 1), void 0 === i &amp;&amp; (i = 0), void 0 === n &amp;&amp; (n = 0), 
            void 0 === r &amp;&amp; (r = 1), void 0 === s &amp;&amp; (s = 0), void 0 === a &amp;&amp; (a = 0), void 0 === o &amp;&amp; (o = 0), 
            null != t._createFun) return t._createFun(e, i, n, r, s, a, o);
            this.a = e, this.b = i, this.c = n, this.d = r, this.tx = s, this.ty = a, this._checkTransform();
        }
        r(t, "laya.maths.Matrix");
        var e = t.prototype;
        return e.identity = function() {
            return this.a = this.d = 1, this.b = this.tx = this.ty = this.c = 0, this._bTransform = !1, 
            this;
        }, e._checkTransform = function() {
            return this._bTransform = 1 !== this.a || 0 !== this.b || 0 !== this.c || 1 !== this.d;
        }, e.setTranslate = function(t, e) {
            return this.tx = t, this.ty = e, this;
        }, e.translate = function(t, e) {
            return this.tx += t, this.ty += e, this;
        }, e.scale = function(t, e) {
            return this.a *= t, this.d *= e, this.c *= t, this.b *= e, this.tx *= t, this.ty *= e, 
            this._bTransform = !0, this;
        }, e.rotate = function(t) {
            var e = Math.cos(t), i = Math.sin(t), n = this.a, r = this.c, s = this.tx;
            return this.a = n * e - this.b * i, this.b = n * i + this.b * e, this.c = r * e - this.d * i, 
            this.d = r * i + this.d * e, this.tx = s * e - this.ty * i, this.ty = s * i + this.ty * e, 
            this._bTransform = !0, this;
        }, e.skew = function(t, e) {
            var i = Math.tan(t), n = Math.tan(e), r = this.a, s = this.b;
            return this.a += n * this.c, this.b += n * this.d, this.c += i * r, this.d += i * s, 
            this;
        }, e.invertTransformPoint = function(t) {
            var e = this.a, i = this.b, n = this.c, r = this.d, s = this.tx, a = e * r - i * n, o = r / a, h = -i / a, l = -n / a, u = e / a, c = (n * this.ty - r * s) / a, _ = -(e * this.ty - i * s) / a;
            return t.setTo(o * t.x + l * t.y + c, h * t.x + u * t.y + _);
        }, e.transformPoint = function(t) {
            return t.setTo(this.a * t.x + this.c * t.y + this.tx, this.b * t.x + this.d * t.y + this.ty);
        }, e.transformPointN = function(t) {
            return t.setTo(this.a * t.x + this.c * t.y, this.b * t.x + this.d * t.y);
        }, e.getScaleX = function() {
            return 0 === this.b ? this.a : Math.sqrt(this.a * this.a + this.b * this.b);
        }, e.getScaleY = function() {
            return 0 === this.c ? this.d : Math.sqrt(this.c * this.c + this.d * this.d);
        }, e.invert = function() {
            var t = this.a, e = this.b, i = this.c, n = this.d, r = this.tx, s = t * n - e * i;
            return this.a = n / s, this.b = -e / s, this.c = -i / s, this.d = t / s, this.tx = (i * this.ty - n * r) / s, 
            this.ty = -(t * this.ty - e * r) / s, this;
        }, e.setTo = function(t, e, i, n, r, s) {
            return this.a = t, this.b = e, this.c = i, this.d = n, this.tx = r, this.ty = s, 
            this;
        }, e.concat = function(t) {
            var e = this.a, i = this.c, n = this.tx;
            return this.a = e * t.a + this.b * t.c, this.b = e * t.b + this.b * t.d, this.c = i * t.a + this.d * t.c, 
            this.d = i * t.b + this.d * t.d, this.tx = n * t.a + this.ty * t.c + t.tx, this.ty = n * t.b + this.ty * t.d + t.ty, 
            this;
        }, e.scaleEx = function(t, e) {
            var i = this.a, n = this.b, r = this.c, s = this.d;
            0 !== n || 0 !== r ? (this.a = t * i, this.b = t * n, this.c = e * r, this.d = e * s) : (this.a = t * i, 
            this.b = 0 * s, this.c = 0 * i, this.d = e * s), this._bTransform = !0;
        }, e.rotateEx = function(t) {
            var e = Math.cos(t), i = Math.sin(t), n = this.a, r = this.b, s = this.c, a = this.d;
            0 !== r || 0 !== s ? (this.a = e * n + i * s, this.b = e * r + i * a, this.c = -i * n + e * s, 
            this.d = -i * r + e * a) : (this.a = e * n, this.b = i * a, this.c = -i * n, this.d = e * a), 
            this._bTransform = !0;
        }, e.clone = function() {
            var e = t.create();
            return e.a = this.a, e.b = this.b, e.c = this.c, e.d = this.d, e.tx = this.tx, e.ty = this.ty, 
            e._bTransform = this._bTransform, e;
        }, e.copyTo = function(t) {
            return t.a = this.a, t.b = this.b, t.c = this.c, t.d = this.d, t.tx = this.tx, t.ty = this.ty, 
            t._bTransform = this._bTransform, t;
        }, e.toString = function() {
            return this.a + "," + this.b + "," + this.c + "," + this.d + "," + this.tx + "," + this.ty;
        }, e.destroy = function() {
            this.recover();
        }, e.recover = function() {
            U.recover("Matrix", this.identity());
        }, t.mul = function(t, e, i) {
            var n = t.a, r = t.b, s = t.c, a = t.d, o = t.tx, h = t.ty, l = e.a, u = e.b, c = e.c, _ = e.d, f = e.tx, d = e.ty;
            return 0 !== u || 0 !== c ? (i.a = n * l + r * c, i.b = n * u + r * _, i.c = s * l + a * c, 
            i.d = s * u + a * _, i.tx = l * o + c * h + f, i.ty = u * o + _ * h + d) : (i.a = n * l, 
            i.b = r * _, i.c = s * l, i.d = a * _, i.tx = l * o + f, i.ty = _ * h + d), i;
        }, t.mul16 = function(t, e, i) {
            var n = t.a, r = t.b, s = t.c, a = t.d, o = t.tx, h = t.ty, l = e.a, u = e.b, c = e.c, _ = e.d, f = e.tx, d = e.ty;
            return 0 !== u || 0 !== c ? (i[0] = n * l + r * c, i[1] = n * u + r * _, i[4] = s * l + a * c, 
            i[5] = s * u + a * _, i[12] = l * o + c * h + f, i[13] = u * o + _ * h + d) : (i[0] = n * l, 
            i[1] = r * _, i[4] = s * l, i[5] = a * _, i[12] = l * o + f, i[13] = _ * h + d), 
            i;
        }, t.create = function() {
            return U.getItemByClass("Matrix", t);
        }, t.EMPTY = new t(), t.TEMP = new t(), t._createFun = null, t;
    }(), at = function() {
        function t(t, e, i, n) {
            this.id = 0, this.name = null, this.color = 0, this.scale = 1, this.datapos = 0, 
            this.datas = new Array(oi.DATANUM), this.id = t, this.color = e, this.name = i, 
            this.scale = n;
        }
        return r(t, "laya.utils.PerfData"), t.prototype.addData = function(t) {
            this.datas[this.datapos] = t, this.datapos++, this.datapos %= oi.DATANUM;
        }, t;
    }(), ot = function() {
        function t() {}
        r(t, "laya.display.cmd.TransformCmd");
        var e = t.prototype;
        return e.recover = function() {
            this.matrix = null, U.recover("TransformCmd", this);
        }, e.run = function(t, e, i) {
            t._transform(this.matrix, this.pivotX + e, this.pivotY + i);
        }, s(0, e, "cmdID", function() {
            return "Transform";
        }), t.create = function(e, i, n) {
            var r = U.getItemByClass("TransformCmd", t);
            return r.matrix = e, r.pivotX = i, r.pivotY = n, r;
        }, t.ID = "Transform", t;
    }(), ht = function() {
        function t() {}
        r(t, "laya.display.cmd.DrawTexturesCmd");
        var e = t.prototype;
        return e.recover = function() {
            this.texture._removeReference(), this.texture = null, this.pos = null, U.recover("DrawTexturesCmd", this);
        }, e.run = function(t, e, i) {
            t.drawTextures(this.texture, this.pos, e, i);
        }, s(0, e, "cmdID", function() {
            return "DrawTextures";
        }), t.create = function(e, i) {
            var n = U.getItemByClass("DrawTexturesCmd", t);
            return n.texture = e, e._addReference(), n.pos = i, n;
        }, t.ID = "DrawTextures", t;
    }(), lt = function() {
        function t() {}
        r(t, "laya.display.cmd.DrawCircleCmd");
        var e = t.prototype;
        return e.recover = function() {
            this.fillColor = null, this.lineColor = null, U.recover("DrawCircleCmd", this);
        }, e.run = function(t, e, i) {
            t._drawCircle(this.x + e, this.y + i, this.radius, this.fillColor, this.lineColor, this.lineWidth, this.vid);
        }, s(0, e, "cmdID", function() {
            return "DrawCircle";
        }), t.create = function(e, i, n, r, s, a, o) {
            var h = U.getItemByClass("DrawCircleCmd", t);
            return h.x = e, h.y = i, h.radius = n, h.fillColor = r, h.lineColor = s, h.lineWidth = a, 
            h.vid = o, h;
        }, t.ID = "DrawCircle", t;
    }(), ut = function() {
        function t() {
            if (this._drawTriUseAbsMatrix = !1, this._id = ++t._COUNT, this._other = null, this._renderNextSubmitIndex = 0, 
            this._path = null, this._drawCount = 1, this._renderCount = 0, this._isConvexCmd = !0, 
            this._submits = null, this._curSubmit = null, this._mesh = null, this._pathMesh = null, 
            this._triangleMesh = null, this.meshlist = [], this._clipInCache = !1, this._clipInfoID = 0, 
            this._curMat = null, this._lastMatScaleX = 1, this._lastMatScaleY = 1, this._lastMat_a = 1, 
            this._lastMat_b = 0, this._lastMat_c = 0, this._lastMat_d = 1, this._nBlendType = 0, 
            this._save = null, this._targets = null, this._charSubmitCache = null, this._saveMark = null, 
            this.sprite = null, this._italicDeg = 0, this._lastTex = null, this._fillColor = 0, 
            this._flushCnt = 0, this.defTexture = null, this._colorFiler = null, this.drawTexAlign = !1, 
            this._incache = !1, this.isMain = !1, this._tmpMatrix = new st(), this._drawTexToDrawTri_Vert = new Float32Array(8), 
            this._drawTexToDrawTri_Index = new Uint16Array([ 0, 1, 2, 0, 2, 3 ]), this._tempUV = new Float32Array(8), 
            this._width = 99999999, this._height = 99999999, this._submitKey = new k(), this._transedPoints = new Array(8), 
            this._temp4Points = new Array(8), this._clipRect = t.MAXCLIPRECT, this._globalClipMatrix = new st(99999999, 0, 0, 99999999, 0, 0), 
            this._shader2D = new F(), t._contextcount++, !this.defTexture) {
                var e = new _i(2, 2);
                e.setPixels(new Uint8Array(16)), e.lock = !0, this.defTexture = new Ie(e);
            }
            this._lastTex = this.defTexture, this.clear();
        }
        var e;
        r(t, "laya.resource.Context");
        var a = t.prototype;
        return a.drawImage = function(t) {}, a.getImageData = function(t) {}, a.measureText = function(t) {
            return null;
        }, a.setTransform = function(t) {}, a.$transform = function(t, e, i, n, r, s) {}, 
        a.clearRect = function(t, e, i, n) {}, a._drawRect = function(t, e, i, n, r) {
            A.renderBatches++, r &amp;&amp; (this.fillStyle = r), this.fillRect(t, e, i, n);
        }, a.drawTexture2 = function(t, e, i, n, r, s) {}, a.transformByMatrix = function(t, e, i) {
            this.transform(t.a, t.b, t.c, t.d, t.tx + e, t.ty + i);
        }, a.saveTransform = function(t) {
            this.save();
        }, a.restoreTransform = function(t) {
            this.restore();
        }, a.drawRect = function(t, e, i, n, r, s, a) {
            null != r &amp;&amp; (this.fillStyle = r, this.fillRect(t, e, i, n)), null != s &amp;&amp; (this.strokeStyle = s, 
            this.lineWidth = a, this.strokeRect(t, e, i, n));
        }, a.alpha = function(t) {
            this.globalAlpha *= t;
        }, a._transform = function(t, e, i) {
            this.translate(e, i), this.transform(t.a, t.b, t.c, t.d, t.tx, t.ty), this.translate(-e, -i);
        }, a._rotate = function(t, e, i) {
            this.translate(e, i), this.rotate(t), this.translate(-e, -i);
        }, a._scale = function(t, e, i, n) {
            this.translate(i, n), this.scale(t, e), this.translate(-i, -n);
        }, a._drawLine = function(t, e, i, n, r, s, a, o, h) {
            this.beginPath(), this.strokeStyle = a, this.lineWidth = o, this.moveTo(t + i, e + n), 
            this.lineTo(t + r, e + s), this.stroke();
        }, a._drawLines = function(t, e, i, n, r, s) {
            this.beginPath(), this.strokeStyle = n, this.lineWidth = r, i.length, this.addPath(i.slice(), !1, !1, t, e), 
            this.stroke();
        }, a.drawCurves = function(t, e, i, n, r) {
            this.beginPath(), this.strokeStyle = n, this.lineWidth = r, this.moveTo(t + i[0], e + i[1]);
            for (var s = 2, a = i.length; s &lt; a; ) this.quadraticCurveTo(t + i[s++], e + i[s++], t + i[s++], e + i[s++]);
            this.stroke();
        }, a._fillAndStroke = function(t, e, i, n) {
            void 0 === n &amp;&amp; (n = !1), null != t &amp;&amp; (this.fillStyle = t, this.fill()), null != e &amp;&amp; i &gt; 0 &amp;&amp; (this.strokeStyle = e, 
            this.lineWidth = i, this.stroke());
        }, a._drawCircle = function(e, i, n, r, s, a, o) {
            A.renderBatches++, this.beginPath(!0), this.arc(e, i, n, 0, t.PI2), this.closePath(), 
            this._fillAndStroke(r, s, a);
        }, a._drawPie = function(t, e, i, n, r, s, a, o, h) {
            this.beginPath(), this.moveTo(t, e), this.arc(t, e, i, n, r), this.closePath(), 
            this._fillAndStroke(s, a, o);
        }, a._drawPoly = function(t, e, i, n, r, s, a, o) {
            i.length, this.beginPath(), this.addPath(i.slice(), !0, a, t, e), this.closePath(), 
            this._fillAndStroke(n, r, s, a);
        }, a._drawPath = function(t, e, i, n, r) {
            this.beginPath();
            for (var s = 0, a = i.length; s &lt; a; s++) {
                var o = i[s];
                switch (o[0]) {
                  case "moveTo":
                    this.moveTo(t + o[1], e + o[2]);
                    break;

                  case "lineTo":
                    this.lineTo(t + o[1], e + o[2]);
                    break;

                  case "arcTo":
                    this.arcTo(t + o[1], e + o[2], t + o[3], e + o[4], o[5]);
                    break;

                  case "closePath":
                    this.closePath();
                }
            }
            null != n &amp;&amp; (this.fillStyle = n.fillStyle, this.fill()), null != r &amp;&amp; (this.strokeStyle = r.strokeStyle, 
            this.lineWidth = r.lineWidth || 1, this.lineJoin = r.lineJoin, this.lineCap = r.lineCap, 
            this.miterLimit = r.miterLimit, this.stroke());
        }, a.clearBG = function(t, e, i, n) {
            var r = wt.mainContext;
            r.clearColor(t, e, i, n), r.clear(16384);
        }, a._getSubmits = function() {
            return this._submits;
        }, a._releaseMem = function(t) {
            if (void 0 === t &amp;&amp; (t = !1), this._submits) {
                this._curMat.destroy(), this._curMat = null, this._shader2D.destroy(), this._shader2D = null, 
                this._charSubmitCache.clear();
                for (var e = 0, i = this._submits._length; e &lt; i; e++) this._submits[e].releaseRender();
                this._submits.length = 0, this._submits._length = 0, this._submits = null, this._curSubmit = null, 
                this._path = null, this._save = null;
                var n = 0;
                for (e = 0, n = this.meshlist.length; e &lt; n; e++) this.meshlist[e].destroy();
                this.meshlist.length = 0, this.sprite = null, t || (this._targets &amp;&amp; this._targets.destroy(), 
                this._targets = null);
            }
        }, a.destroy = function(e) {
            void 0 === e &amp;&amp; (e = !1), --t._contextcount, this.sprite = null, this._releaseMem(e), 
            this._charSubmitCache.destroy(), this._mesh.destroy(), e || (this._targets &amp;&amp; this._targets.destroy(), 
            this._targets = null);
        }, a.clear = function() {
            this._submits || (this._other = e.DEFAULT, this._curMat = st.create(), this._charSubmitCache = new re(), 
            this._mesh = Be.getAMesh(this.isMain), this.meshlist.push(this._mesh), this._pathMesh = Se.getAMesh(this.isMain), 
            this.meshlist.push(this._pathMesh), this._triangleMesh = ke.getAMesh(this.isMain), 
            this.meshlist.push(this._triangleMesh), this._submits = [], this._save = [ H.Create(this) ], 
            this._save.length = 10, this._shader2D = new F()), this._submitKey.clear(), this._mesh.clearVB(), 
            this._renderCount++, this._drawCount = 1, this._other = e.DEFAULT, this._other.lineWidth = this._shader2D.ALPHA = 1, 
            this._nBlendType = 0, this._clipRect = t.MAXCLIPRECT, this._curSubmit = l.RENDERBASE, 
            l.RENDERBASE._ref = 16777215, l.RENDERBASE._numEle = 0, this._shader2D.fillStyle = this._shader2D.strokeStyle = Et.DEFAULT;
            for (var i = 0, n = this._submits._length; i &lt; n; i++) this._submits[i].releaseRender();
            this._submits._length = 0, this._curMat.identity(), this._other.clear(), this._saveMark = this._save[0], 
            this._save._length = 1;
        }, a.size = function(t, e) {
            this._width == t &amp;&amp; this._height == e || (this._width = t, this._height = e, this._targets &amp;&amp; (this._targets.destroy(), 
            this._targets = new fi(t, e, 1, -1)), Mt._context == this &amp;&amp; (wt.mainContext.viewport(0, 0, t, e), 
            dt.width = t, dt.height = e)), 0 === t &amp;&amp; 0 === e &amp;&amp; this._releaseMem();
        }, a.getMatScaleX = function() {
            return this._lastMat_a == this._curMat.a &amp;&amp; this._lastMat_b == this._curMat.b ? this._lastMatScaleX : (this._lastMatScaleX = this._curMat.getScaleX(), 
            this._lastMat_a = this._curMat.a, this._lastMat_b = this._curMat.b, this._lastMatScaleX);
        }, a.getMatScaleY = function() {
            return this._lastMat_c == this._curMat.c &amp;&amp; this._lastMat_d == this._curMat.d ? this._lastMatScaleY : (this._lastMatScaleY = this._curMat.getScaleY(), 
            this._lastMat_c = this._curMat.c, this._lastMat_d = this._curMat.d, this._lastMatScaleY);
        }, a.setFillColor = function(t) {
            this._fillColor = t;
        }, a.getFillColor = function() {
            return this._fillColor;
        }, a.translate = function(t, e) {
            0 === t &amp;&amp; 0 === e || (et.save(this), this._curMat._bTransform ? (Lt.save(this), 
            this._curMat.tx += t * this._curMat.a + e * this._curMat.c, this._curMat.ty += t * this._curMat.b + e * this._curMat.d) : (this._curMat.tx = t, 
            this._curMat.ty = e));
        }, a.save = function() {
            this._save[this._save._length++] = H.Create(this);
        }, a.restore = function() {
            var t = this._save._length, e = this._nBlendType;
            if (!(t &lt; 1)) {
                for (var i = t - 1; i &gt;= 0; i--) {
                    var n = this._save[i];
                    if (n.restore(this), n.isSaveMark()) return void (this._save._length = i);
                }
                e != this._nBlendType &amp;&amp; (this._curSubmit = l.RENDERBASE);
            }
        }, a.fillText = function(t, e, i, n, r, s) {
            this._fillText(t, null, e, i, n, r, null, 0, null);
        }, a._fillText = function(e, i, n, r, s, a, o, h, l, u) {
            void 0 === u &amp;&amp; (u = 0), e ? t._textRender.filltext(this, e, n, r, s, a, o, h, l, u) : i &amp;&amp; t._textRender.fillWords(this, i, n, r, s, a, o, h);
        }, a._fast_filltext = function(e, i, n, r, s, a, o, h, l) {
            void 0 === l &amp;&amp; (l = 0), t._textRender._fast_filltext(this, e, null, i, n, r, s, a, o, h, l);
        }, a.fillWords = function(t, e, i, n, r) {
            this._fillText(null, t, e, i, n, r, null, -1, null, 0);
        }, a.fillBorderWords = function(t, e, i, n, r, s, a) {
            this._fillBorderText(null, t, e, i, n, r, s, a, null);
        }, a.drawText = function(t, e, i, n, r, s) {
            this._fillText(t, null, e, i, n, o.create(r).strColor, null, -1, s);
        }, a.strokeWord = function(t, e, i, n, r, s, a) {
            this._fillText(t, null, e, i, n, null, o.create(r).strColor, s || 1, a);
        }, a.fillBorderText = function(t, e, i, n, r, s, a, h) {
            this._fillBorderText(t, null, e, i, n, o.create(r).strColor, o.create(s).strColor, a, h);
        }, a._fillBorderText = function(t, e, i, n, r, s, a, o, h) {
            this._fillText(t, e, i, n, r, s, a, o || 1, h);
        }, a._fillRect = function(t, e, i, n, r) {
            var s = this._curSubmit, a = s &amp;&amp; 2 === s._key.submitType &amp;&amp; s._key.blendShader === this._nBlendType;
            this._mesh.vertNum + 4 &gt; 65535 &amp;&amp; (this._mesh = Be.getAMesh(this.isMain), this.meshlist.push(this._mesh), 
            a = !1), a &amp;&amp; (a = a &amp;&amp; this.isSameClipInfo(s)), this.transformQuad(t, e, i, n, 0, this._curMat, this._transedPoints), 
            this.clipedOff(this._transedPoints) || (this._mesh.addQuad(this._transedPoints, Ie.NO_UV, r, !1), 
            a || (s = this._curSubmit = xe.create(this, this._mesh, X.create(1, 0)), this._submits[this._submits._length++] = s, 
            this._copyClipInfo(s, this._globalClipMatrix), s.shaderValue.textureHost = this._lastTex, 
            s._key.other = this._lastTex &amp;&amp; this._lastTex.bitmap ? this._lastTex.bitmap.id : -1, 
            s._renderType = 10016), this._curSubmit._numEle += 6, this._mesh.indexNum += 6, 
            this._mesh.vertNum += 4);
        }, a.fillRect = function(t, e, i, n, r) {
            var s = r ? Et.create(r) : this._shader2D.fillStyle, a = this.mixRGBandAlpha(s.toInt());
            this._fillRect(t, e, i, n, a);
        }, a.fillTexture = function(t, e, n, r, s, a, o, h) {
            t._getSource() ? this._fillTexture(t, t.width, t.height, t.uvrect, e, n, r, s, a, o.x, o.y) : this.sprite &amp;&amp; i.systemTimer.callLater(this, this._repaintSprite);
        }, a._fillTexture = function(t, e, i, n, r, s, a, o, h, l, u) {
            var c = this._curSubmit;
            this._mesh.vertNum + 4 &gt; 65535 &amp;&amp; (this._mesh = Be.getAMesh(this.isMain), this.meshlist.push(this._mesh));
            var _ = !0, f = !0;
            switch (h) {
              case "repeat":
                break;

              case "repeat-x":
                f = !1;
                break;

              case "repeat-y":
                _ = !1;
                break;

              case "no-repeat":
                _ = f = !1;
            }
            var d = this._temp4Points, p = 0, m = 0, g = 0, v = 0, y = 0, x = 0;
            if (l &lt; 0 ? (g = r, p = -l % e / e) : g = r + l, u &lt; 0 ? (v = s, m = -u % i / i) : v = s + u, 
            y = r + a, x = s + o, !_ &amp;&amp; (y = Math.min(y, r + l + e)), !f &amp;&amp; (x = Math.min(x, s + u + i)), 
            !(y &lt; r || x &lt; s || g &gt; y || v &gt; x)) {
                var T = (y - r - l) / e, b = (x - s - u) / i;
                if (this.transformQuad(g, v, y - g, x - v, 0, this._curMat, this._transedPoints), 
                d[0] = p, d[1] = m, d[2] = T, d[3] = m, d[4] = T, d[5] = b, d[6] = p, d[7] = b, 
                !this.clipedOff(this._transedPoints)) {
                    var w = this._mixRGBandAlpha(4294967295, this._shader2D.ALPHA);
                    this._mesh.addQuad(this._transedPoints, d, w, !0);
                    var C = X.create(1, 0);
                    C.defines.add(256), C.u_TexRange = n, c = this._curSubmit = xe.create(this, this._mesh, C), 
                    this._submits[this._submits._length++] = c, this._copyClipInfo(c, this._globalClipMatrix), 
                    c.shaderValue.textureHost = t, c._renderType = 10016, this._curSubmit._numEle += 6, 
                    this._mesh.indexNum += 6, this._mesh.vertNum += 4;
                }
                this.breakNextMerge();
            }
        }, a.setColorFilter = function(t) {
            h.save(this, 8388608, this, !0), this._colorFiler = t, this._curSubmit = l.RENDERBASE;
        }, a.drawTexture = function(t, e, i, n, r) {
            this._drawTextureM(t, e, i, n, r, null, 1, null);
        }, a.drawTextures = function(t, e, n, r) {
            if (t._getSource()) for (var s = e.length / 2, a = 0, o = t.bitmap.id, h = 0; h &lt; s; h++) this._inner_drawTexture(t, o, e[a++] + n, e[a++] + r, 0, 0, null, null, 1, !1); else this.sprite &amp;&amp; i.systemTimer.callLater(this, this._repaintSprite);
        }, a._drawTextureAddSubmit = function(t, e) {
            var i = null;
            i = xe.create(this, this._mesh, X.create(1, 0)), this._submits[this._submits._length++] = i, 
            i.shaderValue.textureHost = e, i._key.other = t, i._renderType = 10016, this._curSubmit = i;
        }, a._drawTextureM = function(t, e, i, n, r, s, a, o) {
            var h = this.sprite;
            return !!t._getSource(function() {
                h &amp;&amp; h.repaint();
            }) &amp;&amp; this._inner_drawTexture(t, t.bitmap.id, e, i, n, r, s, o, a, !1);
        }, a._drawRenderTexture = function(t, e, i, n, r, s, a, o) {
            return this._inner_drawTexture(t, -1, e, i, n, r, s, o, 1, !1);
        }, a.submitDebugger = function() {
            this._submits[this._submits._length++] = $.create([], function() {}, this);
        }, a._copyClipInfo = function(t, e) {
            var i = t.shaderValue.clipMatDir;
            i[0] = e.a, i[1] = e.b, i[2] = e.c, i[3] = e.d;
            var n = t.shaderValue.clipMatPos;
            n[0] = e.tx, n[1] = e.ty, t.clipInfoID = this._clipInfoID, this._clipInCache &amp;&amp; (t.shaderValue.clipOff[0] = 1);
        }, a.isSameClipInfo = function(t) {
            return t.clipInfoID === this._clipInfoID;
        }, a._useNewTex2DSubmit = function(t, e) {
            this._mesh.vertNum + e &gt; 65535 &amp;&amp; (this._mesh = Be.getAMesh(this.isMain), this.meshlist.push(this._mesh));
            var i = xe.create(this, this._mesh, X.create(1, 0));
            this._submits[this._submits._length++] = this._curSubmit = i, i.shaderValue.textureHost = t, 
            this._copyClipInfo(i, this._globalClipMatrix);
        }, a._drawTexRect = function(t, e, i, n, r) {
            this.transformQuad(t, e, i, n, this._italicDeg, this._curMat, this._transedPoints);
            var s = this._transedPoints;
            s[0] = s[0] + .5 | 0, s[1] = s[1] + .5 | 0, s[2] = s[2] + .5 | 0, s[3] = s[3] + .5 | 0, 
            s[4] = s[4] + .5 | 0, s[5] = s[5] + .5 | 0, s[6] = s[6] + .5 | 0, s[7] = s[7] + .5 | 0, 
            this.clipedOff(this._transedPoints) || (this._mesh.addQuad(this._transedPoints, r, this._fillColor, !0), 
            this._curSubmit._numEle += 6, this._mesh.indexNum += 6, this._mesh.vertNum += 4);
        }, a.drawCallOptimize = function(t) {
            return this._charSubmitCache.enable(t, this), t;
        }, a._inner_drawTexture = function(t, e, i, n, r, s, a, o, h, l) {
            var u = this._curSubmit._key;
            if (o = o || t._uv, 4 === u.submitType &amp;&amp; u.other === e) {
                var c = this._drawTexToDrawTri_Vert;
                c[0] = i, c[1] = n, c[2] = i + r, c[3] = n, c[4] = i + r, c[5] = n + s, c[6] = i, 
                c[7] = n + s, this._drawTriUseAbsMatrix = !0;
                var _ = this._tempUV;
                return _[0] = o[0], _[1] = o[1], _[2] = o[2], _[3] = o[3], _[4] = o[4], _[5] = o[5], 
                _[6] = o[6], _[7] = o[7], this.drawTriangles(t, 0, 0, c, _, this._drawTexToDrawTri_Index, a, h, null, null), 
                this._drawTriUseAbsMatrix = !1, !0;
            }
            var f = this._mesh, d = this._curSubmit, p = l ? this._charSubmitCache.getPos() : this._transedPoints;
            if (this.transformQuad(i, n, r || t.width, s || t.height, this._italicDeg, a || this._curMat, p), 
            this.drawTexAlign) {
                var m = Math.round;
                p[0] = m(p[0]), p[1] = m(p[1]), p[2] = m(p[2]), p[3] = m(p[3]), p[4] = m(p[4]), 
                p[5] = m(p[5]), p[6] = m(p[6]), p[7] = m(p[7]), this.drawTexAlign = !1;
            }
            var g = this._mixRGBandAlpha(4294967295, this._shader2D.ALPHA * h);
            if (l) return this._charSubmitCache.add(this, t, e, p, o, g), !0;
            this._drawCount++;
            var v = e &gt;= 0 &amp;&amp; 2 === u.submitType &amp;&amp; u.other === e;
            return v &amp;&amp; (v = v &amp;&amp; this.isSameClipInfo(d)), this._lastTex = t, f.vertNum + 4 &gt; 65535 &amp;&amp; (f = this._mesh = Be.getAMesh(this.isMain), 
            this.meshlist.push(f), v = !1), f.addQuad(p, o, g, !0), v || (this._submits[this._submits._length++] = this._curSubmit = d = xe.create(this, f, X.create(1, 0)), 
            d.shaderValue.textureHost = t, d._key.other = e, this._copyClipInfo(d, this._globalClipMatrix)), 
            d._numEle += 6, f.indexNum += 6, f.vertNum += 4, !0;
        }, a.transform4Points = function(t, e, i) {
            var n = e.tx, r = e.ty, s = e.a, a = e.b, o = e.c, h = e.d, l = t[0], u = t[1], c = t[2], _ = t[3], f = t[4], d = t[5], p = t[6], m = t[7];
            e._bTransform ? (i[0] = l * s + u * o + n, i[1] = l * a + u * h + r, i[2] = c * s + _ * o + n, 
            i[3] = c * a + _ * h + r, i[4] = f * s + d * o + n, i[5] = f * a + d * h + r, i[6] = p * s + m * o + n, 
            i[7] = p * a + m * h + r) : (i[0] = l + n, i[1] = u + r, i[2] = c + n, i[3] = _ + r, 
            i[4] = f + n, i[5] = d + r, i[6] = p + n, i[7] = m + r);
        }, a.clipedOff = function(t) {
            return this._clipRect.width &lt;= 0 || this._clipRect.height &lt;= 0;
        }, a.transformQuad = function(t, e, i, n, r, s, a) {
            var o = 0;
            0 != r &amp;&amp; (o = Math.tan(r * Math.PI / 180) * n);
            var h = t + i, l = e + n, u = s.tx, c = s.ty, _ = s.a, f = s.b, d = s.c, p = s.d, m = t + o, g = e, v = h + o, y = e, x = h, T = l, b = t, w = l;
            s._bTransform ? (a[0] = m * _ + g * d + u, a[1] = m * f + g * p + c, a[2] = v * _ + y * d + u, 
            a[3] = v * f + y * p + c, a[4] = x * _ + T * d + u, a[5] = x * f + T * p + c, a[6] = b * _ + w * d + u, 
            a[7] = b * f + w * p + c) : (a[0] = m + u, a[1] = g + c, a[2] = v + u, a[3] = y + c, 
            a[4] = x + u, a[5] = T + c, a[6] = b + u, a[7] = w + c);
        }, a.pushRT = function() {
            this.addRenderObject($.create(null, fi.pushRT, this));
        }, a.popRT = function() {
            this.addRenderObject($.create(null, fi.popRT, this)), this.breakNextMerge();
        }, a.useRT = function(t) {
            this.addRenderObject($.create([ t ], function(t) {
                if (!t) throw "error useRT";
                t.start(), t.clear(0, 0, 0, 0);
            }, this)), this.breakNextMerge();
        }, a.RTRestore = function(t) {
            this.addRenderObject($.create([ t ], function(t) {
                t.restore();
            }, this)), this.breakNextMerge();
        }, a.breakNextMerge = function() {
            this._curSubmit = l.RENDERBASE;
        }, a._repaintSprite = function() {
            this.sprite &amp;&amp; this.sprite.repaint();
        }, a.drawTextureWithTransform = function(t, e, i, n, r, s, a, o, h, l, u) {
            var c = null, _ = this._curMat;
            l &amp;&amp; (c = this.globalCompositeOperation, this.globalCompositeOperation = l);
            var f = this._colorFiler;
            if (u &amp;&amp; this.setColorFilter(u), !s) return this._drawTextureM(t, e + a, i + o, n, r, _, h, null), 
            l &amp;&amp; (this.globalCompositeOperation = c), void (u &amp;&amp; this.setColorFilter(f));
            var d = this._tmpMatrix;
            d.a = s.a, d.b = s.b, d.c = s.c, d.d = s.d, d.tx = s.tx + a, d.ty = s.ty + o, d._bTransform = s._bTransform, 
            s &amp;&amp; _._bTransform ? (st.mul(d, _, d), (s = d)._bTransform = !0) : (d.tx += _.tx, 
            d.ty += _.ty, s = d), this._drawTextureM(t, e, i, n, r, s, h, null), l &amp;&amp; (this.globalCompositeOperation = c), 
            u &amp;&amp; this.setColorFilter(f);
        }, a._flushToTarget = function(t, e) {
            dt.worldScissorTest = !1, wt.mainContext.disable(3089);
            var i = dt.worldAlpha, n = dt.worldMatrix4, r = dt.worldMatrix;
            dt.worldShaderDefines, dt.worldMatrix = st.EMPTY, dt.restoreTempArray(), dt.worldMatrix4 = dt.TEMPMAT4_ARRAY, 
            dt.worldAlpha = 1, Ke.activeShader = null, e.start(), t._submits._length &gt; 0 &amp;&amp; e.clear(0, 0, 0, 0), 
            t._curSubmit = l.RENDERBASE, t.flush(), t.clear(), e.restore(), t._curSubmit = l.RENDERBASE, 
            Ke.activeShader = null, dt.worldAlpha = i, dt.worldMatrix4 = n, dt.worldMatrix = r;
        }, a.drawCanvas = function(t, e, i, n, r) {
            if (t) {
                var s, a = t.context;
                if (a._targets) a._submits._length &gt; 0 &amp;&amp; (s = $.create([ a, a._targets ], this._flushToTarget, this), 
                this._submits[this._submits._length++] = s), this._drawRenderTexture(a._targets, e, i, n, r, null, 1, fi.flipyuv), 
                this._curSubmit = l.RENDERBASE; else {
                    var o = t;
                    o.touches &amp;&amp; o.touches.forEach(function(t) {
                        t.touch();
                    }), s = be.create(t, this._shader2D.ALPHA, this._shader2D.filters), this._submits[this._submits._length++] = s, 
                    s._key.clear();
                    var h = s._matrix;
                    this._curMat.copyTo(h);
                    var u = h.tx, c = h.ty;
                    h.tx = h.ty = 0, h.transformPoint(Yt.TEMP.setTo(e, i)), h.translate(Yt.TEMP.x + u, Yt.TEMP.y + c), 
                    st.mul(o.invMat, h, h), this._curSubmit = l.RENDERBASE;
                }
            }
        }, a.drawTarget = function(t, e, i, n, r, s, a, o, h) {
            if (void 0 === h &amp;&amp; (h = -1), this._drawCount++, this._mesh.vertNum + 4 &gt; 65535 &amp;&amp; (this._mesh = Be.getAMesh(this.isMain), 
            this.meshlist.push(this._mesh)), this.transformQuad(e, i, n, r, 0, s || this._curMat, this._transedPoints), 
            !this.clipedOff(this._transedPoints)) {
                this._mesh.addQuad(this._transedPoints, o || Ie.DEF_UV, 4294967295, !0);
                var u = this._curSubmit = f.create(this, this._mesh, a, t);
                return u.blendType = -1 == h ? this._nBlendType : h, this._copyClipInfo(u, this._globalClipMatrix), 
                u._numEle = 6, this._mesh.indexNum += 6, this._mesh.vertNum += 4, this._submits[this._submits._length++] = u, 
                this._curSubmit = l.RENDERBASE, !0;
            }
            return this._curSubmit = l.RENDERBASE, !1;
        }, a.drawTriangles = function(t, e, n, r, s, a, o, h, u, c) {
            if (t._getSource()) {
                this._drawCount++;
                var _ = this._tmpMatrix, f = this._triangleMesh, d = null, p = !1;
                u &amp;&amp; (d = this._colorFiler, this._colorFiler = u, this._curSubmit = l.RENDERBASE, 
                p = d != u);
                var m = t.bitmap, g = this._curSubmit._key, v = 4 === g.submitType &amp;&amp; g.other === m.id &amp;&amp; g.blendShader == this._nBlendType;
                if (f.vertNum + r.length / 2 &gt; 65535 &amp;&amp; (f = this._triangleMesh = ke.getAMesh(this.isMain), 
                this.meshlist.push(f), v = !1), !v) {
                    var y = this._curSubmit = xe.create(this, f, X.create(1, 0));
                    y.shaderValue.textureHost = t, y._renderType = 10016, y._key.submitType = 4, y._key.other = m.id, 
                    this._copyClipInfo(y, this._globalClipMatrix), this._submits[this._submits._length++] = y;
                }
                var x = this._mixRGBandAlpha(4294967295, this._shader2D.ALPHA * h);
                this._drawTriUseAbsMatrix ? f.addData(r, s, a, o, x) : (o ? (_.a = o.a, _.b = o.b, 
                _.c = o.c, _.d = o.d, _.tx = o.tx + e, _.ty = o.ty + n) : (_.a = 1, _.b = 0, _.c = 0, 
                _.d = 1, _.tx = e, _.ty = n), st.mul(_, this._curMat, _), f.addData(r, s, a, _, x)), 
                this._curSubmit._numEle += a.length, p &amp;&amp; (this._colorFiler = d, this._curSubmit = l.RENDERBASE);
            } else this.sprite &amp;&amp; i.systemTimer.callLater(this, this._repaintSprite);
        }, a.transform = function(t, e, i, n, r, s) {
            Lt.save(this), st.mul(st.TEMP.setTo(t, e, i, n, r, s), this._curMat, this._curMat), 
            this._curMat._checkTransform();
        }, a._transformByMatrix = function(t, e, i) {
            t.setTranslate(e, i), st.mul(t, this._curMat, this._curMat), t.setTranslate(0, 0), 
            this._curMat._bTransform = !0;
        }, a.setTransformByMatrix = function(t) {
            t.copyTo(this._curMat);
        }, a.rotate = function(t) {
            Lt.save(this), this._curMat.rotateEx(t);
        }, a.scale = function(t, e) {
            Lt.save(this), this._curMat.scaleEx(t, e);
        }, a.clipRect = function(e, i, n, r) {
            he.save(this), this._clipRect == t.MAXCLIPRECT ? this._clipRect = new mt(e, i, n, r) : (this._clipRect.width = n, 
            this._clipRect.height = r, this._clipRect.x = e, this._clipRect.y = i), t._clipID_Gen++, 
            t._clipID_Gen %= 1e4, this._clipInfoID = t._clipID_Gen;
            var s = this._globalClipMatrix, a = s.tx, o = s.ty, h = a + s.a, l = o + s.d;
            if (this._clipRect.width &gt;= 99999999 ? (s.a = s.d = 99999999, s.b = s.c = s.tx = s.ty = 0) : (this._curMat._bTransform ? (s.tx = this._clipRect.x * this._curMat.a + this._clipRect.y * this._curMat.c + this._curMat.tx, 
            s.ty = this._clipRect.x * this._curMat.b + this._clipRect.y * this._curMat.d + this._curMat.ty, 
            s.a = this._clipRect.width * this._curMat.a, s.b = this._clipRect.width * this._curMat.b, 
            s.c = this._clipRect.height * this._curMat.c, s.d = this._clipRect.height * this._curMat.d) : (s.tx = this._clipRect.x + this._curMat.tx, 
            s.ty = this._clipRect.y + this._curMat.ty, s.a = this._clipRect.width, s.b = s.c = 0, 
            s.d = this._clipRect.height), this._incache &amp;&amp; (this._clipInCache = !0)), s.a &gt; 0 &amp;&amp; s.d &gt; 0) {
                var u = s.tx + s.a, c = s.ty + s.d;
                u &lt;= a || c &lt;= o || s.tx &gt;= h || s.ty &gt;= l ? (s.a = -.1, s.d = -.1) : (s.tx &lt; a &amp;&amp; (s.a -= a - s.tx, 
                s.tx = a), u &gt; h &amp;&amp; (s.a -= u - h), s.ty &lt; o &amp;&amp; (s.d -= o - s.ty, s.ty = o), c &gt; l &amp;&amp; (s.d -= c - l), 
                s.a &lt;= 0 &amp;&amp; (s.a = -.1), s.d &lt;= 0 &amp;&amp; (s.d = -.1));
            }
        }, a.drawMesh = function(t, e, i, n, r, s, a, o, h) {
            void 0 === h &amp;&amp; (h = 0);
        }, a.addRenderObject = function(t) {
            this._submits[this._submits._length++] = t;
        }, a.submitElement = function(t, e) {
            Mt._context;
            var i = this._submits, n = i._length;
            e &lt; 0 &amp;&amp; (e = i._length);
            for (var r = l.RENDERBASE; t &lt; e; ) this._renderNextSubmitIndex = t + 1, i[t] !== l.RENDERBASE ? (l.preRender = r, 
            t += (r = i[t]).renderSubmit()) : t++;
            return n;
        }, a.flush = function() {
            var t = this.submitElement(0, this._submits._length);
            this._path &amp;&amp; this._path.reset(), v.instance &amp;&amp; v.getInstance().reset(), this._curSubmit = l.RENDERBASE;
            for (var e = 0, i = this.meshlist.length; e &lt; i; e++) {
                var n = this.meshlist[e];
                n.canReuse ? n.releaseMesh() : n.destroy();
            }
            return this.meshlist.length = 0, this._mesh = Be.getAMesh(this.isMain), this._pathMesh = Se.getAMesh(this.isMain), 
            this._triangleMesh = ke.getAMesh(this.isMain), this.meshlist.push(this._mesh, this._pathMesh, this._triangleMesh), 
            this._flushCnt++, this._flushCnt % 60 == 0 &amp;&amp; Mt._context == this &amp;&amp; C.textRenderInst &amp;&amp; C.textRenderInst.GC(), 
            t;
        }, a.beginPath = function(t) {
            void 0 === t &amp;&amp; (t = !1), this._getPath().beginPath(t);
        }, a.closePath = function() {
            this._path.closePath();
        }, a.addPath = function(t, e, i, n, r) {
            for (var s = 0, a = 0, o = t.length / 2; a &lt; o; a++) {
                var h = t[s] + n, l = t[s + 1] + r;
                t[s] = h, t[s + 1] = l, s += 2;
            }
            this._getPath().push(t, i);
        }, a.fill = function() {
            var t = this._curMat, e = this._getPath(), i = this._curSubmit, n = 3 === i._key.submitType &amp;&amp; i._key.blendShader === this._nBlendType;
            n &amp;&amp; (n = n &amp;&amp; this.isSameClipInfo(i)), n || (this._curSubmit = this.addVGSubmit(this._pathMesh));
            for (var r, s = this.mixRGBandAlpha(this.fillStyle.toInt()), a = 0, o = 0, h = e.paths.length; o &lt; h; o++) {
                var l = e.paths[o], u = l.path.length / 2;
                if (!(u &lt; 3 || 3 == u &amp;&amp; !l.convex)) {
                    var c = l.path.concat(), _ = 0, f = 0, d = 0, p = NaN, m = NaN;
                    if (t._bTransform) for (_ = 0; _ &lt; u; _++) d = 1 + (f = _ &lt;&lt; 1), p = c[f], m = c[d], 
                    c[f] = t.a * p + t.c * m + t.tx, c[d] = t.b * p + t.d * m + t.ty; else for (_ = 0; _ &lt; u; _++) d = 1 + (f = _ &lt;&lt; 1), 
                    p = c[f], m = c[d], c[f] = p + t.tx, c[d] = m + t.ty;
                    this._pathMesh.vertNum + u &gt; 65535 &amp;&amp; (this._curSubmit._numEle += a, a = 0, this._pathMesh = Se.getAMesh(this.isMain), 
                    this._curSubmit = this.addVGSubmit(this._pathMesh));
                    var g = this._pathMesh.vertNum;
                    if (l.convex) {
                        var v = u - 2;
                        r = new Array(3 * v);
                        for (var y = 0, x = 0; x &lt; v; x++) r[y++] = g, r[y++] = x + 1 + g, r[y++] = x + 2 + g;
                    } else if (r = Vt.earcut(c, null, 2), g &gt; 0) for (var T = 0; T &lt; r.length; T++) r[T] += g;
                    this._pathMesh.addVertAndIBToMesh(this, c, s, r), a += r.length;
                }
            }
            this._curSubmit._numEle += a;
        }, a.addVGSubmit = function(t) {
            var e = l.createShape(this, t, 0, X.create(4, 0));
            return e._key.submitType = 3, this._submits[this._submits._length++] = e, this._copyClipInfo(e, this._globalClipMatrix), 
            e;
        }, a.stroke = function() {
            if (this.lineWidth &gt; 0) {
                var t = this.mixRGBandAlpha(this.strokeStyle._color.numColor), e = this._getPath(), i = this._curSubmit, n = 3 === i._key.submitType &amp;&amp; i._key.blendShader === this._nBlendType;
                n &amp;&amp; (n = n &amp;&amp; this.isSameClipInfo(i)), n || (this._curSubmit = this.addVGSubmit(this._pathMesh));
                for (var r = 0, s = 0, a = e.paths.length; s &lt; a; s++) {
                    var o = e.paths[s];
                    if (!(o.path.length &lt;= 0)) {
                        var h = [], l = [], u = 2 * o.path.length;
                        if (!(u &lt; 2)) {
                            this._pathMesh.vertNum + u &gt; 65535 &amp;&amp; (this._curSubmit._numEle += r, r = 0, this._pathMesh = Se.getAMesh(this.isMain), 
                            this.meshlist.push(this._pathMesh), this._curSubmit = this.addVGSubmit(this._pathMesh)), 
                            Ht.createLine2(o.path, h, this.lineWidth, this._pathMesh.vertNum, l, o.loop);
                            var c = l.length / 2, _ = this._curMat, f = 0, d = 0, p = 0, m = NaN, g = NaN;
                            if (_._bTransform) for (f = 0; f &lt; c; f++) p = 1 + (d = f &lt;&lt; 1), m = l[d], g = l[p], 
                            l[d] = _.a * m + _.c * g + _.tx, l[p] = _.b * m + _.d * g + _.ty; else for (f = 0; f &lt; c; f++) p = 1 + (d = f &lt;&lt; 1), 
                            m = l[d], g = l[p], l[d] = m + _.tx, l[p] = g + _.ty;
                            this._pathMesh.addVertAndIBToMesh(this, l, t, h), r += h.length;
                        }
                    }
                }
                this._curSubmit._numEle += r;
            }
        }, a.moveTo = function(t, e) {
            var i = this._getPath();
            i.newPath(), i._lastOriX = t, i._lastOriY = e, i.addPoint(t, e);
        }, a.lineTo = function(t, e) {
            var i = this._getPath();
            Math.abs(t - i._lastOriX) &lt; .001 &amp;&amp; Math.abs(e - i._lastOriY) &lt; .001 || (i._lastOriX = t, 
            i._lastOriY = e, i.addPoint(t, e));
        }, a.arcTo = function(e, i, n, r, s) {
            var a = 0, o = 0, h = 0, l = this._path._lastOriX - e, u = this._path._lastOriY - i, c = Math.sqrt(l * l + u * u);
            if (!(c &lt;= 1e-6)) {
                var _ = l / c, f = u / c, d = n - e, p = r - i, m = d * d + p * p, g = Math.sqrt(m);
                if (!(g &lt;= 1e-6)) {
                    var v = d / g, y = p / g, x = _ + v, T = f + y, b = Math.sqrt(x * x + T * T);
                    if (!(b &lt;= 1e-6)) {
                        var w = x / b, C = T / b, A = Math.acos(w * _ + C * f), E = Math.PI / 2 - A, S = (c = s / Math.tan(E)) * _ + e, M = c * f + i, R = Math.sqrt(c * c + s * s), I = e + w * R, P = i + C * R, D = 0, L = 0, B = 0;
                        if (_ * y - f * v &gt;= 0) {
                            var F = (D = 2 * E) / t.SEGNUM;
                            L = Math.sin(F), B = Math.cos(F);
                        } else F = (D = 2 * -E) / t.SEGNUM, L = Math.sin(F), B = Math.cos(F);
                        var O = this._path._lastOriX, N = this._path._lastOriY, k = S, U = M;
                        (Math.abs(k - this._path._lastOriX) &gt; .1 || Math.abs(U - this._path._lastOriY) &gt; .1) &amp;&amp; (o = k, 
                        h = U, O = k, N = U, this._path.addPoint(o, h));
                        var W = S - I, V = M - P;
                        for (a = 0; a &lt; t.SEGNUM; a++) {
                            var G = W * B + V * L, X = -W * L + V * B;
                            o = G + I, h = X + P, (Math.abs(O - o) &gt; .1 || Math.abs(N - h) &gt; .1) &amp;&amp; (this._path.addPoint(o, h), 
                            O = o, N = h), W = G, V = X;
                        }
                    }
                }
            }
        }, a.arc = function(t, e, i, n, r, s, a) {
            void 0 === s &amp;&amp; (s = !1), void 0 === a &amp;&amp; (a = !0);
            var o = 0, h = 0, l = 0, u = 0, c = 0, _ = 0, f = 0, d = 0, p = 0;
            if (h = r - n, s) if (Math.abs(h) &gt;= 2 * Math.PI) h = 2 * -Math.PI; else for (;h &gt; 0; ) h -= 2 * Math.PI; else if (Math.abs(h) &gt;= 2 * Math.PI) h = 2 * Math.PI; else for (;h &lt; 0; ) h += 2 * Math.PI;
            var m = this.getMatScaleX(), g = this.getMatScaleY(), v = i * (m &gt; g ? m : g), y = 2 * Math.PI * v;
            l = h / (p = 0 | Math.max(y / 10, 10)) / 2, u = Math.abs(4 / 3 * (1 - Math.cos(l)) / Math.sin(l)), 
            s &amp;&amp; (u = -u);
            var x = this._getPath();
            for (d = 0; d &lt;= p; d++) o = n + h * (d / p), c = Math.cos(o), f = e + Math.sin(o) * i, 
            (_ = t + c * i) == this._path._lastOriX &amp;&amp; f == this._path._lastOriY || x.addPoint(_, f);
            c = Math.cos(r), f = e + Math.sin(r) * i, (_ = t + c * i) == this._path._lastOriX &amp;&amp; f == this._path._lastOriY || x.addPoint(_, f);
        }, a.quadraticCurveTo = function(t, e, i, n) {
            for (var r = Ot.I.getBezierPoints([ this._path._lastOriX, this._path._lastOriY, t, e, i, n ], 30, 2), s = 0, a = r.length / 2; s &lt; a; s++) this.lineTo(r[2 * s], r[2 * s + 1]);
            this.lineTo(i, n);
        }, a.mixRGBandAlpha = function(t) {
            return this._mixRGBandAlpha(t, this._shader2D.ALPHA);
        }, a._mixRGBandAlpha = function(t, e) {
            if (e &gt;= 1) return t;
            var i = (4278190080 &amp; t) &gt;&gt;&gt; 24;
            return 0 != i ? i *= e : i = 255 * e, 16777215 &amp; t | i &lt;&lt; 24;
        }, a.strokeRect = function(t, e, i, n, r) {
            if (this.lineWidth &gt; 0) {
                var s = this.mixRGBandAlpha(this.strokeStyle._color.numColor), a = this.lineWidth / 2;
                this._fillRect(t - a, e - a, i + this.lineWidth, this.lineWidth, s), this._fillRect(t - a, e - a + n, i + this.lineWidth, this.lineWidth, s), 
                this._fillRect(t - a, e + a, this.lineWidth, n - this.lineWidth, s), this._fillRect(t - a + i, e + a, this.lineWidth, n - this.lineWidth, s);
            }
        }, a.clip = function() {}, a.drawParticle = function(t, e, i) {
            i.x = t, i.y = e, this._submits[this._submits._length++] = i;
        }, a._getPath = function() {
            return this._path || (this._path = new E());
        }, a._fillTexture_h = function(e, i, n, r, s, a, o, h) {
            for (var l = a, u = Math.floor(h / r), c = h % r, _ = 0; _ &lt; u; _++) this._inner_drawTexture(e, i, l, o, r, s, this._curMat, n, 1, !1), 
            l += r;
            if (c &gt; 0) {
                var f = n[2] - n[0], d = n[0] + f * (c / r), p = t.tmpuv1;
                p[0] = n[0], p[1] = n[1], p[2] = d, p[3] = n[3], p[4] = d, p[5] = n[5], p[6] = n[6], 
                p[7] = n[7], this._inner_drawTexture(e, i, l, o, c, s, this._curMat, p, 1, !1);
            }
        }, a._fillTexture_v = function(e, i, n, r, s, a, o, h) {
            for (var l = o, u = Math.floor(h / s), c = h % s, _ = 0; _ &lt; u; _++) this._inner_drawTexture(e, i, a, l, r, s, this._curMat, n, 1, !1), 
            l += s;
            if (c &gt; 0) {
                var f = n[7] - n[1], d = n[1] + f * (c / s), p = t.tmpuv1;
                p[0] = n[0], p[1] = n[1], p[2] = n[2], p[3] = n[3], p[4] = n[4], p[5] = d, p[6] = n[6], 
                p[7] = d, this._inner_drawTexture(e, i, a, l, r, c, this._curMat, p, 1, !1);
            }
        }, a.drawTextureWithSizeGrid = function(e, i, n, r, s, a, o, h) {
            if (e._getSource()) {
                i += o, n += h;
                var l = e.uv, u = e.bitmap.width, c = e.bitmap.height, _ = a[0], f = a[3], d = _ / c, p = f / u, m = a[1], g = a[2], v = m / u, y = g / c, x = a[4], T = !1;
                if (r == u &amp;&amp; (f = m = 0), s == c &amp;&amp; (_ = g = 0), f + m &gt; r) {
                    var b = r;
                    T = !0, r = f + m, this.save(), this.clipRect(0 + i, 0 + n, b, s);
                }
                var w = e.bitmap.id, C = this._curMat, A = this._tempUV, E = l[0], S = l[1], M = l[4], R = l[5], I = E, P = S, D = M, L = R;
                if (f &amp;&amp; _ &amp;&amp; (D = E + p, L = S + d, A[0] = E, A[1] = S, A[2] = D, A[3] = S, A[4] = D, 
                A[5] = L, A[6] = E, A[7] = L, this._inner_drawTexture(e, w, i, n, f, _, C, A, 1, !1)), 
                m &amp;&amp; _ &amp;&amp; (I = M - v, P = S, D = M, L = S + d, A[0] = I, A[1] = P, A[2] = D, A[3] = P, 
                A[4] = D, A[5] = L, A[6] = I, A[7] = L, this._inner_drawTexture(e, w, r - m + i, 0 + n, m, _, C, A, 1, !1)), 
                f &amp;&amp; g &amp;&amp; (I = E, P = R - y, D = E + p, L = R, A[0] = I, A[1] = P, A[2] = D, A[3] = P, 
                A[4] = D, A[5] = L, A[6] = I, A[7] = L, this._inner_drawTexture(e, w, 0 + i, s - g + n, f, g, C, A, 1, !1)), 
                m &amp;&amp; g &amp;&amp; (I = M - v, P = R - y, D = M, L = R, A[0] = I, A[1] = P, A[2] = D, A[3] = P, 
                A[4] = D, A[5] = L, A[6] = I, A[7] = L, this._inner_drawTexture(e, w, r - m + i, s - g + n, m, g, C, A, 1, !1)), 
                _ &amp;&amp; (I = E + p, P = S, D = M - v, L = S + d, A[0] = I, A[1] = P, A[2] = D, A[3] = P, 
                A[4] = D, A[5] = L, A[6] = I, A[7] = L, x ? this._fillTexture_h(e, w, A, e.width - f - m, _, f + i, n, r - f - m) : this._inner_drawTexture(e, w, f + i, n, r - f - m, _, C, A, 1, !1)), 
                g &amp;&amp; (I = E + p, P = R - y, D = M - v, L = R, A[0] = I, A[1] = P, A[2] = D, A[3] = P, 
                A[4] = D, A[5] = L, A[6] = I, A[7] = L, x ? this._fillTexture_h(e, w, A, e.width - f - m, g, f + i, s - g + n, r - f - m) : this._inner_drawTexture(e, w, f + i, s - g + n, r - f - m, g, C, A, 1, !1)), 
                f &amp;&amp; (I = E, P = S + d, D = E + p, L = R - y, A[0] = I, A[1] = P, A[2] = D, A[3] = P, 
                A[4] = D, A[5] = L, A[6] = I, A[7] = L, x ? this._fillTexture_v(e, w, A, f, e.height - _ - g, i, _ + n, s - _ - g) : this._inner_drawTexture(e, w, i, _ + n, f, s - _ - g, C, A, 1, !1)), 
                m &amp;&amp; (I = M - v, P = S + d, D = M, L = R - y, A[0] = I, A[1] = P, A[2] = D, A[3] = P, 
                A[4] = D, A[5] = L, A[6] = I, A[7] = L, x ? this._fillTexture_v(e, w, A, m, e.height - _ - g, r - m + i, _ + n, s - _ - g) : this._inner_drawTexture(e, w, r - m + i, _ + n, m, s - _ - g, C, A, 1, !1)), 
                I = E + p, P = S + d, D = M - v, L = R - y, A[0] = I, A[1] = P, A[2] = D, A[3] = P, 
                A[4] = D, A[5] = L, A[6] = I, A[7] = L, x) {
                    var B = t.tmpUVRect;
                    B[0] = I, B[1] = P, B[2] = D - I, B[3] = L - P, this._fillTexture(e, e.width - f - m, e.height - _ - g, B, f + i, _ + n, r - f - m, s - _ - g, "repeat", 0, 0);
                } else this._inner_drawTexture(e, w, f + i, _ + n, r - f - m, s - _ - g, C, A, 1, !1);
                T &amp;&amp; this.restore();
            }
        }, s(0, a, "textAlign", function() {
            return this._other.textAlign;
        }, function(t) {
            this._other.textAlign === t || (this._other = this._other.make(), h.save(this, 32768, this._other, !1), 
            this._other.textAlign = t);
        }), s(0, a, "lineJoin", function() {
            return null;
        }, function(t) {}), s(0, a, "fillStyle", function() {
            return this._shader2D.fillStyle;
        }, function(t) {
            this._shader2D.fillStyle.equal(t) || (h.save(this, 2, this._shader2D, !1), this._shader2D.fillStyle = Et.create(t), 
            this._submitKey.other = -this._shader2D.fillStyle.toInt());
        }), s(0, a, "lineCap", function() {
            return null;
        }, function(t) {}), s(0, a, "miterLimit", function() {
            return null;
        }, function(t) {}), s(0, a, "strokeStyle", function() {
            return this._shader2D.strokeStyle;
        }, function(t) {
            this._shader2D.strokeStyle.equal(t) || (h.save(this, 512, this._shader2D, !1), this._shader2D.strokeStyle = Et.create(t), 
            this._submitKey.other = -this._shader2D.strokeStyle.toInt());
        }), s(0, a, "globalCompositeOperation", function() {
            return _e.NAMES[this._nBlendType];
        }, function(t) {
            var e = _e.TOINT[t];
            null == e || this._nBlendType === e || (h.save(this, 65536, this, !0), this._curSubmit = l.RENDERBASE, 
            this._nBlendType = e);
        }), s(0, a, "globalAlpha", function() {
            return this._shader2D.ALPHA;
        }, function(t) {
            (t = Math.floor(1e3 * t) / 1e3) != this._shader2D.ALPHA &amp;&amp; (h.save(this, 1, this._shader2D, !1), 
            this._shader2D.ALPHA = t);
        }), s(0, a, "asBitmap", null, function(t) {
            if (t) {
                if (this._targets || (this._targets = new fi(this._width, this._height, 1, -1)), 
                !this._width || !this._height) throw Error("asBitmap no size!");
            } else this._targets &amp;&amp; this._targets.destroy(), this._targets = null;
        }), s(0, a, "textBaseline", function() {
            return this._other.textBaseline;
        }, function(t) {
            this._other.textBaseline === t || (this._other = this._other.make(), h.save(this, 16384, this._other, !1), 
            this._other.textBaseline = t);
        }), s(0, a, "lineWidth", function() {
            return this._other.lineWidth;
        }, function(t) {
            this._other.lineWidth === t || (this._other = this._other.make(), h.save(this, 256, this._other, !1), 
            this._other.lineWidth = t);
        }), s(0, a, "font", null, function(t) {
            this._other = this._other.make(), h.save(this, 8, this._other, !1);
        }), s(0, a, "canvas", function() {
            return this._canvas;
        }), t.__init__ = function() {
            t.MAXCLIPRECT = new mt(0, 0, 99999999, 99999999), e.DEFAULT = new e();
        }, t.set2DRenderConfig = function() {
            var t = Pt.instance;
            nt.setBlend(t, !0), nt.setBlendFunc(t, 1, 771), nt.setDepthTest(t, !1), nt.setCullFace(t, !1), 
            nt.setDepthMask(t, !0), nt.setFrontFace(t, 2305), t.viewport(0, 0, dt.width, dt.height);
        }, t.ENUM_TEXTALIGN_DEFAULT = 0, t.ENUM_TEXTALIGN_CENTER = 1, t.ENUM_TEXTALIGN_RIGHT = 2, 
        t._SUBMITVBSIZE = 32e3, t._MAXSIZE = 99999999, t._MAXVERTNUM = 65535, t.MAXCLIPRECT = null, 
        t._COUNT = 0, t.SEGNUM = 32, t._contextcount = 0, t.PI2 = 2 * Math.PI, t._clipID_Gen = 0, 
        n(t, [ "_textRender", function() {
            return this._textRender = new C();
        }, "tmpuv1", function() {
            return this.tmpuv1 = [ 0, 0, 0, 0, 0, 0, 0, 0 ];
        }, "tmpUV", function() {
            return this.tmpUV = [ 0, 0, 0, 0, 0, 0, 0, 0 ];
        }, "tmpUVRect", function() {
            return this.tmpUVRect = [ 0, 0, 0, 0 ];
        } ]), t.__init$ = function() {
            e = function() {
                function t() {
                    this.lineWidth = 1, this.textAlign = null, this.textBaseline = null;
                }
                r(t, "");
                var e = t.prototype;
                return e.clear = function() {
                    this.lineWidth = 1, this.textAlign = this.textBaseline = null;
                }, e.make = function() {
                    return this === t.DEFAULT ? new t() : this;
                }, t.DEFAULT = null, t;
            }();
        }, t;
    }(), ct = function() {
        function t() {}
        r(t, "laya.filters.BlurFilterGLRender");
        var e = t.prototype;
        return e.render = function(t, e, i, n, r) {
            var s = X.create(1, 0);
            this.setShaderInfo(s, r, t.width, t.height), e.drawTarget(t, 0, 0, i, n, st.EMPTY.identity(), s);
        }, e.setShaderInfo = function(e, i, n, r) {
            e.defines.add(16);
            var s = e;
            t.blurinfo[0] = n, t.blurinfo[1] = r, s.blurInfo = t.blurinfo;
            var a = i.strength / 3, o = a * a;
            i.strength_sig2_2sig2_gauss1[0] = i.strength, i.strength_sig2_2sig2_gauss1[1] = o, 
            i.strength_sig2_2sig2_gauss1[2] = 2 * o, i.strength_sig2_2sig2_gauss1[3] = 1 / (2 * Math.PI * o), 
            s.strength_sig2_2sig2_gauss1 = i.strength_sig2_2sig2_gauss1;
        }, n(t, [ "blurinfo", function() {
            return this.blurinfo = new Array(2);
        } ]), t;
    }(), _t = function() {
        function t() {}
        return r(t, "laya.webgl.utils.CONST3D2D"), t.BYTES_PE = 4, t.BYTES_PIDX = 2, t.defaultMatrix4 = [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], 
        t.defaultMinusYMatrix4 = [ 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], t.uniformMatrix3 = [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0 ], 
        t._TMPARRAY = [], t._OFFSETX = 0, t._OFFSETY = 0, t;
    }(), ft = function() {
        function t() {
            this.char = "", this.tex = null, this.deleted = !1, this.pos = 0, this.width = 0, 
            this.height = 0, this.bmpWidth = 0, this.bmpHeight = 0, this.orix = 0, this.oriy = 0, 
            this.touchTick = 0, this.isSpace = !1, this.uv = new Array(8);
        }
        return r(t, "laya.webgl.text.CharRenderInfo"), t.prototype.touch = function() {
            var t = A.loopCount;
            this.touchTick != t &amp;&amp; this.tex.touchRect(this, t), this.touchTick = t;
        }, t;
    }(), dt = (function() {
        function t() {
            this._renderType = 0, this._repaint = 0, this._x = NaN, this._y = NaN;
        }
        r(t, "laya.layagl.QuickTestTool");
        var e = t.prototype;
        e.render = function(e, i, n) {
            t._addType(this._renderType), t.showRenderTypeInfo(this._renderType), I.renders[this._renderType]._fun(this, e, i + this._x, n + this._y), 
            this._repaint = 0;
        }, e._stageRender = function(e, n, r) {
            t._countStart(), t._PreStageRender.call(i.stage, e, n, r), t._countEnd();
        }, t.getMCDName = function(e) {
            return t._typeToNameDic[e];
        }, t.showRenderTypeInfo = function(e, i) {
            if (void 0 === i &amp;&amp; (i = !1), i || !t.showedDic[e]) {
                if (t.showedDic[e] = !0, !t._rendertypeToStrDic[e]) {
                    var n = [], r = 0;
                    for (r = 1; r &lt;= e; ) r &amp; e &amp;&amp; n.push(t.getMCDName(r &amp; e)), r &lt;&lt;= 1;
                    t._rendertypeToStrDic[e] = n.join(",");
                }
                console.log("cmd:", t._rendertypeToStrDic[e]);
            }
        }, t.__init__ = function() {
            t._typeToNameDic[1] = "ALPHA", t._typeToNameDic[2] = "TRANSFORM", t._typeToNameDic[256] = "TEXTURE", 
            t._typeToNameDic[512] = "GRAPHICS", t._typeToNameDic[4096] = "ONECHILD", t._typeToNameDic[8192] = "CHILDS", 
            t._typeToNameDic[3] = "TRANSFORM|ALPHA", t._typeToNameDic[8] = "CANVAS", t._typeToNameDic[4] = "BLEND", 
            t._typeToNameDic[16] = "FILTERS", t._typeToNameDic[32] = "MASK", t._typeToNameDic[64] = "CLIP", 
            t._typeToNameDic[1024] = "LAYAGL3D";
        }, t._countStart = function() {
            var e;
            for (e in t._countDic) t._countDic[e] = 0;
        }, t._countEnd = function() {
            ++t._i &gt; 60 &amp;&amp; (t.showCountInfo(), t._i = 0);
        }, t._addType = function(e) {
            t._countDic[e] ? t._countDic[e] += 1 : t._countDic[e] = 1;
        }, t.showCountInfo = function() {
            console.log("===================");
            var e;
            for (e in t._countDic) console.log("count:" + t._countDic[e]), t.showRenderTypeInfo(e, !0);
        }, t.enableQuickTest = function() {
            t.__init__(), je.prototype.render = t.prototype.render, t._PreStageRender = ai.prototype.render, 
            ai.prototype.render = t.prototype._stageRender;
        }, t.showedDic = {}, t._rendertypeToStrDic = {}, t._typeToNameDic = {}, t._PreStageRender = null, 
        t._countDic = {}, t._i = 0;
    }(), function() {
        function t() {}
        return r(t, "laya.webgl.utils.RenderState2D"), t.mat2MatArray = function(e, i) {
            var n = e, r = i;
            return r[0] = n.a, r[1] = n.b, r[2] = t.EMPTYMAT4_ARRAY[2], r[3] = t.EMPTYMAT4_ARRAY[3], 
            r[4] = n.c, r[5] = n.d, r[6] = t.EMPTYMAT4_ARRAY[6], r[7] = t.EMPTYMAT4_ARRAY[7], 
            r[8] = t.EMPTYMAT4_ARRAY[8], r[9] = t.EMPTYMAT4_ARRAY[9], r[10] = t.EMPTYMAT4_ARRAY[10], 
            r[11] = t.EMPTYMAT4_ARRAY[11], r[12] = n.tx, r[13] = n.ty, r[14] = t.EMPTYMAT4_ARRAY[14], 
            r[15] = t.EMPTYMAT4_ARRAY[15], i;
        }, t.restoreTempArray = function() {
            t.TEMPMAT4_ARRAY[0] = 1, t.TEMPMAT4_ARRAY[1] = 0, t.TEMPMAT4_ARRAY[4] = 0, t.TEMPMAT4_ARRAY[5] = 1, 
            t.TEMPMAT4_ARRAY[12] = 0, t.TEMPMAT4_ARRAY[13] = 0;
        }, t.clear = function() {
            t.worldScissorTest = !1, t.worldAlpha = 1;
        }, t._MAXSIZE = 99999999, t.EMPTYMAT4_ARRAY = [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], 
        t.TEMPMAT4_ARRAY = [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], t.worldMatrix4 = t.TEMPMAT4_ARRAY, 
        t.matWVP = null, t.worldAlpha = 1, t.worldScissorTest = !1, t.worldShaderDefines = null, 
        t.worldFilters = null, t.width = 0, t.height = 0, n(t, [ "worldMatrix", function() {
            return this.worldMatrix = new st();
        } ]), t;
    }()), pt = function() {
        function t() {}
        var e, s;
        return r(t, "laya.utils.SceneUtils"), t.getBindFun = function(e) {
            var n = t._funMap.get(e);
            if (null == n) {
                var r = '"' + e + '"', s = "(function(data){if(data==null)return;with(data){try{\nreturn " + (r = r.replace(/^"\${|}"$/g, "").replace(/\${/g, '"+').replace(/}/g, '+"')) + "\n}catch(e){}}})";
                n = i._runScript(s), t._funMap.set(e, n);
            }
            return n;
        }, t.createByData = function(e, i) {
            var n = s.create();
            if ((e = t.createComp(i, e, e, null, n))._setBit(8, !0), e.hasOwnProperty("_idMap") &amp;&amp; (e._idMap = n._idMap), 
            i.animations) {
                var r, a, o = [], h = i.animations, l = 0, u = h.length;
                for (l = 0; l &lt; u; l++) {
                    switch (r = new ci(), a = h[l], r._setUp(n._idMap, a), e[a.name] = r, r._setControlNode(e), 
                    a.action) {
                      case 1:
                        r.play(0, !1);
                        break;

                      case 2:
                        r.play(0, !0);
                    }
                    o.push(r);
                }
                e._aniList = o;
            }
            return "Scene" === e._$componentType &amp;&amp; e._width &gt; 0 &amp;&amp; null == i.props.hitTestPrior &amp;&amp; !e.mouseThrough &amp;&amp; (e.hitTestPrior = !0), 
            n.beginLoad(e), e;
        }, t.createInitTool = function() {
            return s.create();
        }, t.createComp = function(e, n, r, s, a) {
            if ("Scene3D" == e.type || "Sprite3D" == e.type) {
                var o = [], h = i.Utils3D._createSceneByJsonForMaker(e, o, a);
                return "Sprite3D" == e.type ? i.StaticBatchManager.combine(h, o) : i.StaticBatchManager.combine(null, o), 
                h;
            }
            if (!(n = n || t.getCompInstance(e))) return e.props &amp;&amp; e.props.runtime ? console.warn("runtime not found:" + e.props.runtime) : console.warn("can not create:" + e.type), 
            null;
            var l = e.child;
            if (l) for (var u = "List" == n._$componentType, c = 0, _ = l.length; c &lt; _; c++) {
                var f = l[c];
                if (!n.hasOwnProperty("itemRender") || "render" != f.props.name &amp;&amp; "render" !== f.props.renderType) if ("Graphic" == f.type) Rt._addGraphicsToSprite(f, n); else if (Rt._isDrawType(f.type)) Rt._addGraphicToSprite(f, n, !0); else {
                    if (u) {
                        var d = [], p = t.createComp(f, null, r, d, a);
                        d.length &amp;&amp; (p._$bindData = d);
                    } else p = t.createComp(f, null, r, s, a);
                    "Script" == f.type ? p instanceof laya.components.Component ? n._addComponentInstance(p) : "owner" in p ? p.owner = n : "target" in p &amp;&amp; (p.target = n) : "mask" == f.props.renderType || "mask" == f.props.name ? n.mask = p : p instanceof laya.display.Node &amp;&amp; n.addChild(p);
                } else n.itemRender = f;
            }
            var m = e.props;
            for (var g in m) {
                var v = m[g];
                "string" == typeof v &amp;&amp; (v.indexOf("@node:") &gt;= 0 || v.indexOf("@Prefab:") &gt;= 0) ? a &amp;&amp; a.addNodeRef(n, g, v) : t.setCompValue(n, g, v, r, s);
            }
            return n._afterInited &amp;&amp; n._afterInited(), e.compId &amp;&amp; a &amp;&amp; a._idMap &amp;&amp; (a._idMap[e.compId] = n), 
            n;
        }, t.setCompValue = function(i, n, r, s, a) {
            if ("string" == typeof r &amp;&amp; r.indexOf("${") &gt; -1) {
                if (t._sheet || (t._sheet = Rt.getClass("laya.data.Table")), !t._sheet) return void console.warn("Can not find class Sheet");
                if (a) a.push(i, n, r); else if (s) {
                    -1 == r.indexOf("].") &amp;&amp; (r = r.replace(".", "[0]."));
                    var o = new e(i, n, r);
                    o.exe(s);
                    for (var h, l, u = r.replace(/\[.*?\]\./g, "."); null != (h = t._parseWatchData.exec(u)); ) {
                        for (var c = h[1]; null != (l = t._parseKeyWord.exec(c)); ) {
                            var _ = l[0], f = s._watchMap[_] || (s._watchMap[_] = []);
                            f.push(o), t._sheet.I.notifer.on(_, s, s.changeData, [ _ ]);
                        }
                        (f = s._watchMap[c] || (s._watchMap[c] = [])).push(o), t._sheet.I.notifer.on(c, s, s.changeData, [ c ]);
                    }
                }
            } else "var" === n &amp;&amp; s ? s[r] = i : i[n] = "true" === r || "false" !== r &amp;&amp; r;
        }, t.getCompInstance = function(e) {
            if ("UIView" == e.type &amp;&amp; e.props &amp;&amp; e.props.pageData) return t.createByData(null, e.props.pageData);
            var i = e.props &amp;&amp; e.props.runtime || e.type, n = Rt.getClass(i);
            if (!n) throw "Can not find class " + i;
            if ("Script" === e.type &amp;&amp; n.prototype._doAwake) {
                var r = U.createByClass(n);
                return r._destroyed = !1, r;
            }
            return e.props &amp;&amp; e.props.hasOwnProperty("renderType") &amp;&amp; "instance" == e.props.renderType ? (n.instance || (n.instance = new n()), 
            n.instance) : new n();
        }, t._sheet = null, n(t, [ "_funMap", function() {
            return this._funMap = new Ct();
        }, "_parseWatchData", function() {
            return this._parseWatchData = /\${(.*?)}/g;
        }, "_parseKeyWord", function() {
            return this._parseKeyWord = /[a-zA-Z_][a-zA-Z0-9_]*(?:(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+)/g;
        } ]), t.__init$ = function() {
            e = function() {
                function e(t, e, i) {
                    this.comp = null, this.prop = null, this.value = null, this.comp = t, this.prop = e, 
                    this.value = i;
                }
                return r(e, ""), e.prototype.exe = function(e) {
                    var i = t.getBindFun(this.value);
                    this.comp[this.prop] = i.call(this, e);
                }, e;
            }(), s = function() {
                function t() {
                    this._nodeRefList = null, this._initList = null, this._loadList = null, this._idMap = null, 
                    this._scene = null;
                }
                r(t, "");
                var e = t.prototype;
                return e.reset = function() {
                    this._nodeRefList = null, this._initList = null, this._idMap = null, this._loadList = null, 
                    this._scene = null;
                }, e.recover = function() {
                    this.reset(), U.recover("InitTool", this);
                }, e.addLoadRes = function(t, e) {
                    this._loadList || (this._loadList = []), e ? this._loadList.push({
                        url: t,
                        type: e
                    }) : this._loadList.push(t);
                }, e.addNodeRef = function(t, e, i) {
                    this._nodeRefList || (this._nodeRefList = []), this._nodeRefList.push([ t, e, i ]), 
                    i.indexOf("@Prefab:") &gt;= 0 &amp;&amp; this.addLoadRes(i.replace("@Prefab:", ""), "prefab");
                }, e.setNodeRef = function() {
                    if (this._nodeRefList) if (this._idMap) {
                        var t = 0, e = 0;
                        e = this._nodeRefList.length;
                        var i;
                        for (t = 0; t &lt; e; t++) (i = this._nodeRefList[t])[0][i[1]] = this.getReferData(i[2]);
                        this._nodeRefList = null;
                    } else this._nodeRefList = null;
                }, e.getReferData = function(t) {
                    if (t.indexOf("@Prefab:") &gt;= 0) return De.getRes(t.replace("@Prefab:", ""));
                    if (t.indexOf("@arr:") &gt;= 0) {
                        var e, i, n = 0, r = 0;
                        for (r = (e = (t = t.replace("@arr:", "")).split(",")).length, n = 0; n &lt; r; n++) i = e[n], 
                        e[n] = i ? this._idMap[i.replace("@node:", "")] : null;
                        return e;
                    }
                    return this._idMap[t.replace("@node:", "")];
                }, e.addInitItem = function(t) {
                    this._initList || (this._initList = []), this._initList.push(t);
                }, e.doInits = function() {
                    this._initList &amp;&amp; (this._initList = null);
                }, e.finish = function() {
                    this.setNodeRef(), this.doInits(), this._scene._setBit(8, !1), this._scene.parent &amp;&amp; this._scene.parent.activeInHierarchy &amp;&amp; this._scene.active &amp;&amp; this._scene._processActive(), 
                    this._scene.event("onViewCreated"), this.recover();
                }, e.beginLoad = function(t) {
                    this._scene = t, !this._loadList || this._loadList.length &lt; 1 ? this.finish() : i.loader.load(this._loadList, g.create(this, this.finish));
                }, t.create = function() {
                    var e = U.getItemByClass("InitTool", t);
                    return e._idMap = [], e;
                }, t;
            }();
        }, t;
    }(), mt = function() {
        function t(t, e, i, n) {
            void 0 === t &amp;&amp; (t = 0), void 0 === e &amp;&amp; (e = 0), void 0 === i &amp;&amp; (i = 0), void 0 === n &amp;&amp; (n = 0), 
            this.x = t, this.y = e, this.width = i, this.height = n;
        }
        r(t, "laya.maths.Rectangle");
        var e = t.prototype;
        return e.setTo = function(t, e, i, n) {
            return this.x = t, this.y = e, this.width = i, this.height = n, this;
        }, e.reset = function() {
            return this.x = this.y = this.width = this.height = 0, this;
        }, e.recover = function() {
            this != t.TEMP &amp;&amp; this != t.EMPTY ? U.recover("Rectangle", this.reset()) : console.log("recover Temp or Empty:", this);
        }, e.copyFrom = function(t) {
            return this.x = t.x, this.y = t.y, this.width = t.width, this.height = t.height, 
            this;
        }, e.contains = function(t, e) {
            return !(this.width &lt;= 0 || this.height &lt;= 0) &amp;&amp; t &gt;= this.x &amp;&amp; t &lt; this.right &amp;&amp; e &gt;= this.y &amp;&amp; e &lt; this.bottom;
        }, e.intersects = function(t) {
            return !(t.x &gt; this.x + this.width || t.x + t.width &lt; this.x || t.y &gt; this.y + this.height || t.y + t.height &lt; this.y);
        }, e.intersection = function(e, i) {
            return this.intersects(e) ? (i || (i = new t()), i.x = Math.max(this.x, e.x), i.y = Math.max(this.y, e.y), 
            i.width = Math.min(this.right, e.right) - i.x, i.height = Math.min(this.bottom, e.bottom) - i.y, 
            i) : null;
        }, e.union = function(e, i) {
            return i || (i = new t()), this.clone(i), e.width &lt;= 0 || e.height &lt;= 0 ? i : (i.addPoint(e.x, e.y), 
            i.addPoint(e.right, e.bottom), this);
        }, e.clone = function(e) {
            return e || (e = new t()), e.x = this.x, e.y = this.y, e.width = this.width, e.height = this.height, 
            e;
        }, e.toString = function() {
            return this.x + "," + this.y + "," + this.width + "," + this.height;
        }, e.equals = function(t) {
            return !(!t || t.x !== this.x || t.y !== this.y || t.width !== this.width || t.height !== this.height);
        }, e.addPoint = function(t, e) {
            return this.x &gt; t &amp;&amp; (this.width += this.x - t, this.x = t), this.y &gt; e &amp;&amp; (this.height += this.y - e, 
            this.y = e), this.width &lt; t - this.x &amp;&amp; (this.width = t - this.x), this.height &lt; e - this.y &amp;&amp; (this.height = e - this.y), 
            this;
        }, e._getBoundPoints = function() {
            var e = t._temB;
            return e.length = 0, 0 == this.width || 0 == this.height ? e : (e.push(this.x, this.y, this.x + this.width, this.y, this.x, this.y + this.height, this.x + this.width, this.y + this.height), 
            e);
        }, e.isEmpty = function() {
            return this.width &lt;= 0 || this.height &lt;= 0;
        }, s(0, e, "right", function() {
            return this.x + this.width;
        }), s(0, e, "bottom", function() {
            return this.y + this.height;
        }), t.create = function() {
            return U.getItemByClass("Rectangle", t);
        }, t._getBoundPointS = function(e, i, n, r) {
            var s = t._temA;
            return s.length = 0, 0 == n || 0 == r ? s : (s.push(e, i, e + n, i, e, i + r, e + n, i + r), 
            s);
        }, t._getWrapRec = function(e, i) {
            if (!e || e.length &lt; 1) return i ? i.setTo(0, 0, 0, 0) : t.TEMP.setTo(0, 0, 0, 0);
            i = i || laya.maths.Rectangle.create();
            var n, r, s, a, o, h = e.length, l = Yt.TEMP;
            for (s = o = -(r = a = 99999), n = 0; n &lt; h; n += 2) l.x = e[n], l.y = e[n + 1], 
            r = r &lt; l.x ? r : l.x, a = a &lt; l.y ? a : l.y, s = s &gt; l.x ? s : l.x, o = o &gt; l.y ? o : l.y;
            return i.setTo(r, a, s - r, o - a);
        }, t.EMPTY = new t(), t.TEMP = new t(), t._temB = [], t._temA = [], t;
    }(), gt = function() {
        function t() {}
        return r(t, "laya.events.KeyBoardManager"), t.__init__ = function() {
            t._addEvent("keydown"), t._addEvent("keypress"), t._addEvent("keyup");
        }, t._addEvent = function(t) {
            Dt.document.addEventListener(t, function(e) {
                laya.events.KeyBoardManager._dispatch(e, t);
            }, !0);
        }, t._dispatch = function(e, n) {
            if (t.enabled) {
                t._event._stoped = !1, t._event.nativeEvent = e, t._event.keyCode = e.keyCode || e.which || e.charCode, 
                "keydown" === n ? t._pressKeys[t._event.keyCode] = !0 : "keyup" === n &amp;&amp; (t._pressKeys[t._event.keyCode] = null);
                for (var r = i.stage.focus &amp;&amp; null != i.stage.focus.event &amp;&amp; i.stage.focus.displayedInStage ? i.stage.focus : i.stage, s = r; s; ) s.event(n, t._event.setTo(n, s, r)), 
                s = s.parent;
            }
        }, t.hasKeyDown = function(e) {
            return t._pressKeys[e];
        }, t._pressKeys = {}, t.enabled = !0, n(t, [ "_event", function() {
            return this._event = new w();
        } ]), t;
    }(), vt = function() {
        function t() {}
        return r(t, "laya.layagl.LayaGLRunner"), t.uploadShaderUniforms = function(t, e, i, n) {
            for (var r = i._data, s = e.getArrayData(), a = 0, o = 0, h = s.length; o &lt; h; o++) {
                var l = s[o];
                if (n || -1 !== l.textureID) {
                    var u = r[l.dataOffset];
                    null != u &amp;&amp; (a += l.fun.call(l.caller, l, u));
                }
            }
            return a;
        }, t.uploadCustomUniform = function(t, e, i, n) {
            var r = 0, s = e[i];
            return s &amp;&amp; null != n &amp;&amp; (r += s.fun.call(s.caller, s, n)), r;
        }, t.uploadShaderUniformsForNative = function(t, e, i) {
            var n = 0;
            i._runtimeCopyValues.length &gt; 0 &amp;&amp; (n = 1);
            var r = i._data;
            return t.uploadShaderUniforms(e, r, n);
        }, t;
    }(), yt = function() {
        function t() {}
        r(t, "laya.display.cmd.DrawPathCmd");
        var e = t.prototype;
        return e.recover = function() {
            this.paths = null, this.brush = null, this.pen = null, U.recover("DrawPathCmd", this);
        }, e.run = function(t, e, i) {
            t._drawPath(this.x + e, this.y + i, this.paths, this.brush, this.pen);
        }, s(0, e, "cmdID", function() {
            return "DrawPath";
        }), t.create = function(e, i, n, r, s) {
            var a = U.getItemByClass("DrawPathCmd", t);
            return a.x = e, a.y = i, a.paths = n, a.brush = r, a.pen = s, a;
        }, t.ID = "DrawPath", t;
    }(), xt = function() {
        function t() {
            this._nativeVertexArrayObject = null, this._bindedIndexBuffer = null, this._nativeVertexArrayObject = Pt.instance.createVertexArray();
        }
        r(t, "laya.webgl.BufferStateBase");
        var e = t.prototype;
        return e.bind = function() {
            t._curBindedBufferState !== this &amp;&amp; (Pt.instance.bindVertexArray(this._nativeVertexArrayObject), 
            t._curBindedBufferState = this);
        }, e.unBind = function() {
            if (t._curBindedBufferState !== this) throw "BufferState: must call bind() function first.";
            Pt.instance.bindVertexArray(null), t._curBindedBufferState = null;
        }, e.bindForNative = function() {
            Pt.instance.bindVertexArray(this._nativeVertexArrayObject), t._curBindedBufferState = this;
        }, e.unBindForNative = function() {
            Pt.instance.bindVertexArray(null), t._curBindedBufferState = null;
        }, e.destroy = function() {
            Pt.instance.deleteVertexArray(this._nativeVertexArrayObject);
        }, t._curBindedBufferState = null, t;
    }(), Tt = function() {
        function t() {}
        r(t, "laya.display.cmd.SaveCmd");
        var e = t.prototype;
        return e.recover = function() {
            U.recover("SaveCmd", this);
        }, e.run = function(t, e, i) {
            t.save();
        }, s(0, e, "cmdID", function() {
            return "Save";
        }), t.create = function() {
            return U.getItemByClass("SaveCmd", t);
        }, t.ID = "Save", t;
    }(), bt = function() {
        function e() {}
        var i;
        return r(e, "laya.net.LocalStorage"), e.__init__ = function() {
            return e._baseClass || (e._baseClass = i, i.init()), e.items = e._baseClass.items, 
            e.support = e._baseClass.support;
        }, e.setItem = function(t, i) {
            e._baseClass.setItem(t, i);
        }, e.getItem = function(t) {
            return e._baseClass.getItem(t);
        }, e.setJSON = function(t, i) {
            e._baseClass.setJSON(t, i);
        }, e.getJSON = function(t) {
            return e._baseClass.getJSON(t);
        }, e.removeItem = function(t) {
            e._baseClass.removeItem(t);
        }, e.clear = function() {
            e._baseClass.clear();
        }, e._baseClass = null, e.items = null, e.support = !1, e.__init$ = function() {
            i = function() {
                function e() {}
                return r(e, ""), e.init = function() {
                    try {
                        e.support = !0, e.items = t.localStorage, e.setItem("laya", "1"), e.removeItem("laya");
                    } catch (t) {
                        e.support = !1;
                    }
                    e.support || console.log("LocalStorage is not supprot or browser is private mode.");
                }, e.setItem = function(t, i) {
                    try {
                        e.support &amp;&amp; e.items.setItem(t, i);
                    } catch (t) {
                        console.warn("set localStorage failed", t);
                    }
                }, e.getItem = function(t) {
                    return e.support ? e.items.getItem(t) : null;
                }, e.setJSON = function(t, i) {
                    try {
                        e.support &amp;&amp; e.items.setItem(t, JSON.stringify(i));
                    } catch (t) {
                        console.warn("set localStorage failed", t);
                    }
                }, e.getJSON = function(t) {
                    return JSON.parse(e.support ? e.items.getItem(t) : null);
                }, e.removeItem = function(t) {
                    e.support &amp;&amp; e.items.removeItem(t);
                }, e.clear = function() {
                    e.support &amp;&amp; e.items.clear();
                }, e.items = null, e.support = !1, e;
            }();
        }, e;
    }(), wt = function() {
        function e() {}
        return r(e, "laya.webgl.WebGL"), e._uint8ArraySlice = function() {
            for (var t = this.length, e = new Uint8Array(this.length), i = 0; i &lt; t; i++) e[i] = this[i];
            return e;
        }, e._float32ArraySlice = function() {
            for (var t = this.length, e = new Float32Array(this.length), i = 0; i &lt; t; i++) e[i] = this[i];
            return e;
        }, e._uint16ArraySlice = function(t) {
            var e, i = arguments, n = 0, r = 0;
            if (0 === i.length) for (n = this.length, e = new Uint16Array(n), r = 0; r &lt; n; r++) e[r] = this[r]; else if (2 === i.length) {
                var s = i[0], a = i[1];
                if (a &gt; s) for (n = a - s, e = new Uint16Array(n), r = s; r &lt; a; r++) e[r - s] = this[r]; else e = new Uint16Array(0);
            }
            return e;
        }, e._nativeRender_enable = function() {
            e.isNativeRender_enable || (e.isNativeRender_enable = !0, nt.__init_native(), ni.prototype.uploadTexture2D = function(t) {
                var e = nt;
                e.bindTexture(laya.webgl.WebGL.mainContext, e.TEXTURE_2D, t);
            }, dt.width = Dt.window.innerWidth, dt.height = Dt.window.innerHeight, ue.measureText = function(e, i) {
                return t.conchTextCanvas.font = i, t.conchTextCanvas.measureText(e);
            }, ue.enableNative = function() {
                Mt.supportWebGLPlusRendering &amp;&amp; (vt.uploadShaderUniforms = vt.uploadShaderUniformsForNative, 
                Bt = t.GLCommandEncoder, Pt = t.LayaGLContext);
                var e = ai;
                e.prototype.render = e.prototype.renderToNative;
            }, ue.clear = function(t) {
                ut.set2DRenderConfig();
                var e = o.create(t).arrColor, i = Pt.instance;
                e &amp;&amp; i.clearColor(e[0], e[1], e[2], e[3]), i.clear(17664), dt.clear();
            }, ue.drawToCanvas = ue.drawToTexture = function(t, e, i, n, r, s) {
                r -= t.x, s -= t.y, r |= 0, s |= 0, i |= 0, n |= 0;
                var a = new si(!1), o = a.getContext("2d");
                return a.size(i, n), o.asBitmap = !0, o._targets.start(), I.renders[e]._fun(t, o, r, s), 
                o.flush(), o._targets.end(), o._targets.restore(), a;
            }, fi.prototype._uv = fi.flipyuv, Object.defineProperty(fi.prototype, "uv", {
                get: function() {
                    return this._uv;
                },
                set: function(t) {
                    this._uv = t;
                }
            }), si.prototype.getTexture = function() {
                return this._texture || (this._texture = this.context._targets, this._texture.uv = fi.flipyuv, 
                this._texture.bitmap = this._texture), this._texture;
            });
        }, e.enable = function() {
            return !0;
        }, e.inner_enable = function() {
            return Float32Array.prototype.slice || (Float32Array.prototype.slice = e._float32ArraySlice), 
            Uint16Array.prototype.slice || (Uint16Array.prototype.slice = e._uint16ArraySlice), 
            Uint8Array.prototype.slice || (Uint8Array.prototype.slice = e._uint8ArraySlice), 
            Mt.isConchApp &amp;&amp; e._nativeRender_enable(), !0;
        }, e.onStageResize = function(t, i) {
            null != e.mainContext &amp;&amp; (e.mainContext.viewport(0, 0, t, i), dt.width = t, dt.height = i);
        }, e.mainContext = null, e.shaderHighPrecision = !1, e._isWebGL2 = !1, e.isNativeRender_enable = !1, 
        e;
    }(), Ct = function() {
        function t() {
            this._obj = null, this._obj = t.supportWeakMap ? new Dt.window.WeakMap() : {}, t.supportWeakMap || t._maps.push(this);
        }
        r(t, "laya.utils.WeakObject");
        var e = t.prototype;
        return e.set = function(e, i) {
            if (null != e) if (t.supportWeakMap) {
                var n = e;
                "string" != typeof e &amp;&amp; "number" != typeof e || (n = t._keys[e]) || (n = t._keys[e] = {
                    k: e
                }), this._obj.set(n, i);
            } else "string" == typeof e || "number" == typeof e ? this._obj[e] = i : (e.$_GID || (e.$_GID = ie.getGID()), 
            this._obj[e.$_GID] = i);
        }, e.get = function(e) {
            if (null == e) return null;
            if (t.supportWeakMap) {
                var i = "string" == typeof e || "number" == typeof e ? t._keys[e] : e;
                return i ? this._obj.get(i) : null;
            }
            return "string" == typeof e || "number" == typeof e ? this._obj[e] : this._obj[e.$_GID];
        }, e.del = function(e) {
            if (null != e) if (t.supportWeakMap) {
                var i = "string" == typeof e || "number" == typeof e ? t._keys[e] : e;
                if (!i) return;
                this._obj.delete(i);
            } else "string" == typeof e || "number" == typeof e ? delete this._obj[e] : delete this._obj[this._obj.$_GID];
        }, e.has = function(e) {
            if (null == e) return !1;
            if (t.supportWeakMap) {
                var i = "string" == typeof e || "number" == typeof e ? t._keys[e] : e;
                return this._obj.has(i);
            }
            return "string" == typeof e || "number" == typeof e ? null != this._obj[e] : null != this._obj[this._obj.$_GID];
        }, t.__init__ = function() {
            (t.supportWeakMap = null != Dt.window.WeakMap) || i.systemTimer.loop(t.delInterval, null, t.clearCache);
        }, t.clearCache = function() {
            for (var e = 0, i = t._maps.length; e &lt; i; e++) t._maps[e]._obj = {};
        }, t.supportWeakMap = !1, t.delInterval = 6e5, t._keys = {}, t._maps = [], n(t, [ "I", function() {
            return this.I = new t();
        } ]), t;
    }(), At = function() {
        function t() {}
        r(t, "laya.display.css.BoundsStyle");
        var e = t.prototype;
        return e.reset = function() {
            return this.bounds &amp;&amp; this.bounds.recover(), this.userBounds &amp;&amp; this.userBounds.recover(), 
            this.bounds = null, this.userBounds = null, this.temBM = null, this;
        }, e.recover = function() {
            U.recover("BoundsStyle", this.reset());
        }, t.create = function() {
            return U.getItemByClass("BoundsStyle", t);
        }, t;
    }(), Et = function() {
        function t(t) {
            this._color = null, this.setValue(t);
        }
        r(t, "laya.webgl.canvas.DrawStyle");
        var e = t.prototype;
        return e.setValue = function(t) {
            this._color = t ? t instanceof laya.utils.ColorUtils ? t : o.create(t) : o.create("#000000");
        }, e.reset = function() {
            this._color = o.create("#000000");
        }, e.toInt = function() {
            return this._color.numColor;
        }, e.equal = function(t) {
            return "string" == typeof t ? this._color.strColor === t : t instanceof laya.utils.ColorUtils &amp;&amp; this._color.numColor === t.numColor;
        }, e.toColorStr = function() {
            return this._color.strColor;
        }, t.create = function(e) {
            if (e) {
                var i = e instanceof laya.utils.ColorUtils ? e : o.create(e);
                return i._drawStyle || (i._drawStyle = new t(e));
            }
            return t.DEFAULT;
        }, n(t, [ "DEFAULT", function() {
            return this.DEFAULT = new t("#000000");
        } ]), t;
    }(), St = function() {
        function t() {}
        return r(t, "laya.system.System"), t.changeDefinition = function(t, e) {
            i[t] = e;
            var n = t + "=classObj";
            i._runScript(n);
        }, t.__init__ = function() {}, t;
    }(), Mt = (function() {
        function t() {}
        r(t, "laya.display.cmd.DrawParticleCmd");
        var e = t.prototype;
        e.recover = function() {
            this._templ = null, U.recover("DrawParticleCmd", this);
        }, e.run = function(t, e, i) {
            t.drawParticle(e, i, this._templ);
        }, s(0, e, "cmdID", function() {
            return "DrawParticleCmd";
        }), t.create = function(e) {
            var i = U.getItemByClass("DrawParticleCmd", t);
            return i._templ = e, i;
        }, t.ID = "DrawParticleCmd";
    }(), function() {
        function e(t, n) {
            function r(t) {
                i.stage._loop(), Dt.window.requestAnimationFrame(r);
            }
            this._timeId = 0, e._mainCanvas.source.id = "layaCanvas", e._mainCanvas.source.width = t, 
            e._mainCanvas.source.height = n, laya.renders.Render.isConchApp ? Dt.document.body.appendChild(e._mainCanvas.source) : Dt.onKGMiniGame || Dt.container.appendChild(e._mainCanvas.source), 
            this.initRender(e._mainCanvas, t, n), Dt.window.requestAnimationFrame(r), i.stage.on("visibilitychange", this, this._onVisibilitychange);
        }
        r(e, "laya.renders.Render");
        var n = e.prototype;
        return n._onVisibilitychange = function() {
            i.stage.isVisibility ? 0 != this._timeId &amp;&amp; Dt.window.clearInterval(this._timeId) : this._timeId = Dt.window.setInterval(this._enterFrame, 1e3);
        }, n.initRender = function(t, e, i) {
            var n = Pt.instance = wt.mainContext = function(t) {
                var e, i = [ "webgl2", "webgl", "experimental-webgl", "webkit-3d", "moz-webgl" ];
                se.useWebGL2 || i.shift();
                for (var n = 0; n &lt; i.length; n++) {
                    try {
                        e = t.getContext(i[n], {
                            stencil: se.isStencil,
                            alpha: se.isAlpha,
                            antialias: se.isAntialias,
                            premultipliedAlpha: se.premultipliedAlpha,
                            preserveDrawingBuffer: se.preserveDrawingBuffer
                        });
                    } catch (t) {}
                    if (e) return "webgl2" === i[n] &amp;&amp; (wt._isWebGL2 = !0), new Pt(), e;
                }
                return null;
            }(laya.renders.Render._mainCanvas.source);
            if (!n) return !1;
            t.size(e, i), nt.__init__(n), ut.__init__(), l.__init__();
            var r = new ut();
            r.isMain = !0, laya.renders.Render._context = r, t._setContext(r), wt.shaderHighPrecision = !1;
            try {
                n.getShaderPrecisionFormat(35632, 36338).precision ? wt.shaderHighPrecision = !0 : wt.shaderHighPrecision = !1;
            } catch (t) {}
            return Pt.instance = n, St.__init__(), Re.__init__(), X.__init__(), F.__init__(), 
            Le.__int__(n), _e._init_(n), !0;
        }, n._enterFrame = function(t) {
            i.stage._loop();
        }, s(1, e, "context", function() {
            return e._context;
        }), s(1, e, "canvas", function() {
            return e._mainCanvas.source;
        }), e._context = null, e._mainCanvas = null, e.supportWebGLPlusCulling = !1, e.supportWebGLPlusAnimation = !1, 
        e.supportWebGLPlusRendering = !1, e.isConchApp = !1, e.is3DMode = !1, e.__init$ = function() {
            (e.isConchApp = null != t.conch) &amp;&amp; (e.supportWebGLPlusCulling = !0, e.supportWebGLPlusAnimation = !0, 
            e.supportWebGLPlusRendering = !0);
        }, e;
    }()), Rt = function() {
        function t() {}
        return r(t, "laya.utils.ClassUtils"), t.regClass = function(e, i) {
            t._classMap[e] = i;
        }, t.regShortClassName = function(e) {
            for (var i = 0; i &lt; e.length; i++) {
                var n = e[i], r = n.name;
                t._classMap[r] = n;
            }
        }, t.getRegClass = function(e) {
            return t._classMap[e];
        }, t.getClass = function(e) {
            var n = t._classMap[e] || e;
            return "string" == typeof n ? i.__classmap[n] || i[e] : n;
        }, t.getInstance = function(e) {
            var i = t.getClass(e);
            return i ? new i() : (console.warn("[error] Undefined class:", e), null);
        }, t.createByJson = function(e, i, n, r, s) {
            "string" == typeof e &amp;&amp; (e = JSON.parse(e));
            var a = e.props;
            if (!i &amp;&amp; !(i = s ? s.runWith(e) : t.getInstance(a.runtime || e.type))) return null;
            var o = e.child;
            if (o) for (var h = 0, l = o.length; h &lt; l; h++) {
                var u = o[h];
                if ("render" !== u.props.name &amp;&amp; "render" !== u.props.renderType || !i._$set_itemRender) if ("Graphic" == u.type) t._addGraphicsToSprite(u, i); else if (t._isDrawType(u.type)) t._addGraphicToSprite(u, i, !0); else {
                    var c = t.createByJson(u, null, n, r, s);
                    "Script" === u.type ? c.hasOwnProperty("owner") ? c.owner = i : c.hasOwnProperty("target") &amp;&amp; (c.target = i) : "mask" == u.props.renderType ? i.mask = c : i.addChild(c);
                } else i.itemRender = u;
            }
            if (a) for (var _ in a) {
                var f = a[_];
                "var" === _ &amp;&amp; n ? n[f] = i : f instanceof Array &amp;&amp; "function" == typeof i[_] ? i[_].apply(i, f) : i[_] = f;
            }
            return r &amp;&amp; e.customProps &amp;&amp; r.runWith([ i, e ]), i.created &amp;&amp; i.created(), i;
        }, t._addGraphicsToSprite = function(e, i) {
            var n = e.child;
            if (n &amp;&amp; !(n.length &lt; 1)) {
                var r = t._getGraphicsFromSprite(e, i), s = 0, a = 0;
                e.props &amp;&amp; (s = t._getObjVar(e.props, "x", 0), a = t._getObjVar(e.props, "y", 0)), 
                0 != s &amp;&amp; 0 != a &amp;&amp; r.translate(s, a);
                var o = 0, h = 0;
                for (h = n.length, o = 0; o &lt; h; o++) t._addGraphicToGraphics(n[o], r);
                0 != s &amp;&amp; 0 != a &amp;&amp; r.translate(-s, -a);
            }
        }, t._addGraphicToSprite = function(e, i, n) {
            void 0 === n &amp;&amp; (n = !1);
            var r = n ? t._getGraphicsFromSprite(e, i) : i.graphics;
            t._addGraphicToGraphics(e, r);
        }, t._getGraphicsFromSprite = function(t, e) {
            if (!t || !t.props) return e.graphics;
            var i = t.props.renderType;
            if ("hit" === i || "unHit" === i) {
                var n = e._style.hitArea || (e.hitArea = new ve());
                n[i] || (n[i] = new qt());
                var r = n[i];
            }
            return r || (r = e.graphics), r;
        }, t._getTransformData = function(e) {
            var i;
            (e.hasOwnProperty("pivotX") || e.hasOwnProperty("pivotY")) &amp;&amp; (i = i || new st()).translate(-t._getObjVar(e, "pivotX", 0), -t._getObjVar(e, "pivotY", 0));
            var n = t._getObjVar(e, "scaleX", 1), r = t._getObjVar(e, "scaleY", 1), s = t._getObjVar(e, "rotation", 0);
            return t._getObjVar(e, "skewX", 0), t._getObjVar(e, "skewY", 0), 1 == n &amp;&amp; 1 == r &amp;&amp; 0 == s || ((i = i || new st()).scale(n, r), 
            i.rotate(.0174532922222222 * s)), i;
        }, t._addGraphicToGraphics = function(e, i) {
            var n;
            if (n = e.props) {
                var r;
                if (r = t.DrawTypeDic[e.type]) {
                    var s = i, a = t._getParams(n, r[1], r[2], r[3]), o = t._tM;
                    (o || 1 != t._alpha) &amp;&amp; (s.save(), o &amp;&amp; s.transform(o), 1 != t._alpha &amp;&amp; s.alpha(t._alpha)), 
                    s[r[0]].apply(s, a), (o || 1 != t._alpha) &amp;&amp; s.restore();
                }
            }
        }, t._adptLineData = function(t) {
            return t[2] = parseFloat(t[0]) + parseFloat(t[2]), t[3] = parseFloat(t[1]) + parseFloat(t[3]), 
            t;
        }, t._adptTextureData = function(t) {
            return t[0] = De.getRes(t[0]), t;
        }, t._adptLinesData = function(e) {
            return e[2] = t._getPointListByStr(e[2]), e;
        }, t._isDrawType = function(e) {
            return "Image" !== e &amp;&amp; t.DrawTypeDic.hasOwnProperty(e);
        }, t._getParams = function(e, i, n, r) {
            void 0 === n &amp;&amp; (n = 0);
            var s = t._temParam;
            s.length = i.length;
            var a = 0, o = 0;
            for (o = i.length, a = 0; a &lt; o; a++) s[a] = t._getObjVar(e, i[a][0], i[a][1]);
            t._alpha = t._getObjVar(e, "alpha", 1);
            var h;
            return (h = t._getTransformData(e)) ? (n || (n = 0), h.translate(s[n], s[n + 1]), 
            s[n] = s[n + 1] = 0, t._tM = h) : t._tM = null, r &amp;&amp; t[r] &amp;&amp; (s = t[r](s)), s;
        }, t._getPointListByStr = function(t) {
            var e = t.split(","), i = 0, n = 0;
            for (n = e.length, i = 0; i &lt; n; i++) e[i] = parseFloat(e[i]);
            return e;
        }, t._getObjVar = function(t, e, i) {
            return t.hasOwnProperty(e) ? t[e] : i;
        }, t._temParam = [], t._classMap = {
            Sprite: je,
            Scene: hi,
            Text: ei,
            Animation: "laya.display.Animation",
            Skeleton: "laya.ani.bone.Skeleton",
            Particle2D: "laya.particle.Particle2D",
            div: "laya.html.dom.HTMLDivParser",
            p: "laya.html.dom.HTMLElement",
            img: "laya.html.dom.HTMLImageElement",
            span: "laya.html.dom.HTMLElement",
            br: "laya.html.dom.HTMLBrElement",
            style: "laya.html.dom.HTMLStyleElement",
            font: "laya.html.dom.HTMLElement",
            a: "laya.html.dom.HTMLElement",
            "#text": "laya.html.dom.HTMLElement",
            link: "laya.html.dom.HTMLLinkElement"
        }, t._tM = null, t._alpha = NaN, n(t, [ "DrawTypeDic", function() {
            return this.DrawTypeDic = {
                Rect: [ "drawRect", [ [ "x", 0 ], [ "y", 0 ], [ "width", 0 ], [ "height", 0 ], [ "fillColor", null ], [ "lineColor", null ], [ "lineWidth", 1 ] ] ],
                Circle: [ "drawCircle", [ [ "x", 0 ], [ "y", 0 ], [ "radius", 0 ], [ "fillColor", null ], [ "lineColor", null ], [ "lineWidth", 1 ] ] ],
                Pie: [ "drawPie", [ [ "x", 0 ], [ "y", 0 ], [ "radius", 0 ], [ "startAngle", 0 ], [ "endAngle", 0 ], [ "fillColor", null ], [ "lineColor", null ], [ "lineWidth", 1 ] ] ],
                Image: [ "drawTexture", [ [ "x", 0 ], [ "y", 0 ], [ "width", 0 ], [ "height", 0 ] ] ],
                Texture: [ "drawTexture", [ [ "skin", null ], [ "x", 0 ], [ "y", 0 ], [ "width", 0 ], [ "height", 0 ] ], 1, "_adptTextureData" ],
                FillTexture: [ "fillTexture", [ [ "skin", null ], [ "x", 0 ], [ "y", 0 ], [ "width", 0 ], [ "height", 0 ], [ "repeat", null ] ], 1, "_adptTextureData" ],
                FillText: [ "fillText", [ [ "text", "" ], [ "x", 0 ], [ "y", 0 ], [ "font", null ], [ "color", null ], [ "textAlign", null ] ], 1 ],
                Line: [ "drawLine", [ [ "x", 0 ], [ "y", 0 ], [ "toX", 0 ], [ "toY", 0 ], [ "lineColor", null ], [ "lineWidth", 0 ] ], 0, "_adptLineData" ],
                Lines: [ "drawLines", [ [ "x", 0 ], [ "y", 0 ], [ "points", "" ], [ "lineColor", null ], [ "lineWidth", 0 ] ], 0, "_adptLinesData" ],
                Curves: [ "drawCurves", [ [ "x", 0 ], [ "y", 0 ], [ "points", "" ], [ "lineColor", null ], [ "lineWidth", 0 ] ], 0, "_adptLinesData" ],
                Poly: [ "drawPoly", [ [ "x", 0 ], [ "y", 0 ], [ "points", "" ], [ "fillColor", null ], [ "lineColor", null ], [ "lineWidth", 1 ] ], 0, "_adptLinesData" ]
            };
        } ]), t;
    }(), It = function() {
        function t() {
            this._cacheBoundsType = !1;
        }
        r(t, "laya.display.GraphicsBounds");
        var e = t.prototype;
        return e.destroy = function() {
            this._graphics = null, this._cacheBoundsType = !1, this._temp &amp;&amp; (this._temp.length = 0), 
            this._rstBoundPoints &amp;&amp; (this._rstBoundPoints.length = 0), this._bounds &amp;&amp; this._bounds.recover(), 
            this._bounds = null, U.recover("GraphicsBounds", this);
        }, e.reset = function() {
            this._temp &amp;&amp; (this._temp.length = 0);
        }, e.getBounds = function(t) {
            return void 0 === t &amp;&amp; (t = !1), (!this._bounds || !this._temp || this._temp.length &lt; 1 || t != this._cacheBoundsType) &amp;&amp; (this._bounds = mt._getWrapRec(this.getBoundPoints(t), this._bounds)), 
            this._cacheBoundsType = t, this._bounds;
        }, e.getBoundPoints = function(t) {
            return void 0 === t &amp;&amp; (t = !1), (!this._temp || this._temp.length &lt; 1 || t != this._cacheBoundsType) &amp;&amp; (this._temp = this._getCmdPoints(t)), 
            this._cacheBoundsType = t, this._rstBoundPoints = ie.copyArray(this._rstBoundPoints, this._temp);
        }, e._getCmdPoints = function(e) {
            void 0 === e &amp;&amp; (e = !1), Mt._context;
            var i, n = this._graphics.cmds;
            if (i = this._temp || (this._temp = []), i.length = 0, n || null == this._graphics._one || (t._tempCmds.length = 0, 
            t._tempCmds.push(this._graphics._one), n = t._tempCmds), !n) return i;
            var r = t._tempMatrixArrays;
            r.length = 0;
            var s = t._initMatrix;
            s.identity();
            for (var a, o, h = t._tempMatrix, l = 0, u = n.length; l &lt; u; l++) switch ((a = n[l]).cmdID) {
              case "Alpha":
                r.push(s), s = s.clone();
                break;

              case "Restore":
                s = r.pop();
                break;

              case "Scale":
                h.identity(), h.translate(-a.pivotX, -a.pivotY), h.scale(a.scaleX, a.scaleY), h.translate(a.pivotX, a.pivotY), 
                this._switchMatrix(s, h);
                break;

              case "Rotate":
                h.identity(), h.translate(-a.pivotX, -a.pivotY), h.rotate(a.angle), h.translate(a.pivotX, a.pivotY), 
                this._switchMatrix(s, h);
                break;

              case "Translate":
                h.identity(), h.translate(a.tx, a.ty), this._switchMatrix(s, h);
                break;

              case "Transform":
                h.identity(), h.translate(-a.pivotX, -a.pivotY), h.concat(a.matrix), h.translate(a.pivotX, a.pivotY), 
                this._switchMatrix(s, h);
                break;

              case "DrawImage":
              case "FillTexture":
                t._addPointArrToRst(i, mt._getBoundPointS(a.x, a.y, a.width, a.height), s);
                break;

              case "DrawTexture":
                s.copyTo(h), a.matrix &amp;&amp; h.concat(a.matrix), t._addPointArrToRst(i, mt._getBoundPointS(a.x, a.y, a.width, a.height), h);
                break;

              case "DrawImage":
                if (o = a.texture, e) a.width &amp;&amp; a.height ? t._addPointArrToRst(i, mt._getBoundPointS(a.x, a.y, a.width, a.height), s) : t._addPointArrToRst(i, mt._getBoundPointS(a.x, a.y, o.width, o.height), s); else {
                    var c = (a.width || o.sourceWidth) / o.width, _ = (a.height || o.sourceHeight) / o.height, f = c * o.sourceWidth, d = _ * o.sourceHeight, p = o.offsetX &gt; 0 ? o.offsetX : 0, m = o.offsetY &gt; 0 ? o.offsetY : 0;
                    p *= c, m *= _, t._addPointArrToRst(i, mt._getBoundPointS(a.x - p, a.y - m, f, d), s);
                }
                break;

              case "FillTexture":
                a.width &amp;&amp; a.height ? t._addPointArrToRst(i, mt._getBoundPointS(a.x, a.y, a.width, a.height), s) : (o = a.texture, 
                t._addPointArrToRst(i, mt._getBoundPointS(a.x, a.y, o.width, o.height), s));
                break;

              case "DrawTexture":
                var g;
                a.matrix ? (s.copyTo(h), h.concat(a.matrix), g = h) : g = s, e ? a.width &amp;&amp; a.height ? t._addPointArrToRst(i, mt._getBoundPointS(a.x, a.y, a.width, a.height), g) : (o = a.texture, 
                t._addPointArrToRst(i, mt._getBoundPointS(a.x, a.y, o.width, o.height), g)) : (o = a.texture, 
                c = (a.width || o.sourceWidth) / o.width, _ = (a.height || o.sourceHeight) / o.height, 
                f = c * o.sourceWidth, d = _ * o.sourceHeight, p = o.offsetX &gt; 0 ? o.offsetX : 0, 
                m = o.offsetY &gt; 0 ? o.offsetY : 0, p *= c, m *= _, t._addPointArrToRst(i, mt._getBoundPointS(a.x - p, a.y - m, f, d), g));
                break;

              case "DrawRect":
                t._addPointArrToRst(i, mt._getBoundPointS(a.x, a.y, a.width, a.height), s);
                break;

              case "DrawCircle":
                t._addPointArrToRst(i, mt._getBoundPointS(a.x - a.radius, a.y - a.radius, a.radius + a.radius, a.radius + a.radius), s);
                break;

              case "DrawLine":
                t._tempPoints.length = 0;
                var v = NaN;
                v = .5 * a.lineWidth, a.fromX == a.toX ? t._tempPoints.push(a.fromX + v, a.fromY, a.toX + v, a.toY, a.fromX - v, a.fromY, a.toX - v, a.toY) : a.fromY == a.toY ? t._tempPoints.push(a.fromX, a.fromY + v, a.toX, a.toY + v, a.fromX, a.fromY - v, a.toX, a.toY - v) : t._tempPoints.push(a.fromX, a.fromY, a.toX, a.toY), 
                t._addPointArrToRst(i, t._tempPoints, s);
                break;

              case "DrawCurves":
                t._addPointArrToRst(i, Ot.I.getBezierPoints(a.points), s, a.x, a.y);
                break;

              case "DrawLines":
              case "DrawPoly":
                t._addPointArrToRst(i, a.points, s, a.x, a.y);
                break;

              case "DrawPath":
                t._addPointArrToRst(i, this._getPathPoints(a.paths), s, a.x, a.y);
                break;

              case "DrawPie":
                t._addPointArrToRst(i, this._getPiePoints(a.x, a.y, a.radius, a.startAngle, a.endAngle), s);
            }
            return i.length &gt; 200 ? i = ie.copyArray(i, mt._getWrapRec(i)._getBoundPoints()) : i.length &gt; 8 &amp;&amp; (i = Y.scanPList(i)), 
            i;
        }, e._switchMatrix = function(t, e) {
            e.concat(t), e.copyTo(t);
        }, e._getPiePoints = function(e, i, n, r, s) {
            var a = t._tempPoints;
            t._tempPoints.length = 0;
            var o = Math.PI / 180, h = s - r;
            if (h &gt;= 360 || h &lt;= -360) return a.push(e - n, i - n), a.push(e + n, i - n), a.push(e + n, i + n), 
            a.push(e - n, i + n), a;
            a.push(e, i);
            var l = h % 360;
            l &lt; 0 &amp;&amp; (l += 360);
            var u = r + l, c = r * o, _ = u * o;
            a.push(e + n * Math.cos(c), i + n * Math.sin(c)), a.push(e + n * Math.cos(_), i + n * Math.sin(_));
            for (var f = 90 * Math.ceil(r / 90), d = 90 * Math.floor(u / 90), p = f; p &lt;= d; p += 90) {
                var m = p * o;
                a.push(e + n * Math.cos(m), i + n * Math.sin(m));
            }
            return a;
        }, e._getPathPoints = function(e) {
            var i = 0, n = 0, r = t._tempPoints;
            r.length = 0, n = e.length;
            var s;
            for (i = 0; i &lt; n; i++) (s = e[i]).length &gt; 1 &amp;&amp; (r.push(s[1], s[2]), s.length &gt; 3 &amp;&amp; r.push(s[3], s[4]));
            return r;
        }, t.create = function() {
            return U.getItemByClass("GraphicsBounds", t);
        }, t._addPointArrToRst = function(e, i, n, r, s) {
            void 0 === r &amp;&amp; (r = 0), void 0 === s &amp;&amp; (s = 0);
            var a = 0, o = 0;
            for (o = i.length, a = 0; a &lt; o; a += 2) t._addPointToRst(e, i[a] + r, i[a + 1] + s, n);
        }, t._addPointToRst = function(t, e, i, n) {
            var r = Yt.TEMP;
            r.setTo(e || 0, i || 0), n.transformPoint(r), t.push(r.x, r.y);
        }, t._tempPoints = [], t._tempMatrixArrays = [], t._tempCmds = [], n(t, [ "_tempMatrix", function() {
            return this._tempMatrix = new st();
        }, "_initMatrix", function() {
            return this._initMatrix = new st();
        } ]), t;
    }(), Pt = function() {
        function t() {}
        r(t, "laya.layagl.LayaGL");
        var e = t.prototype;
        return e.createCommandEncoder = function(t, e, i) {
            return void 0 === t &amp;&amp; (t = 128), void 0 === e &amp;&amp; (e = 64), void 0 === i &amp;&amp; (i = !1), 
            new Bt(this, t, e, i);
        }, e.beginCommandEncoding = function(t) {}, e.endCommandEncoding = function() {}, 
        e.matrix4x4Multiply = function(t, e, i) {}, e.evaluateClipDatasRealTime = function(t, e, i, n) {}, 
        t.getFrameCount = function() {
            return 0;
        }, t.syncBufferToRenderThread = function(t, e) {
            void 0 === e &amp;&amp; (e = 0);
        }, t.createArrayBufferRef = function(t, e, i) {}, t.createArrayBufferRefs = function(t, e, i, n) {}, 
        t.EXECUTE_JS_THREAD_BUFFER = 0, t.EXECUTE_RENDER_THREAD_BUFFER = 1, t.EXECUTE_COPY_TO_RENDER = 2, 
        t.EXECUTE_COPY_TO_RENDER3D = 3, t.ARRAY_BUFFER_TYPE_DATA = 0, t.ARRAY_BUFFER_TYPE_CMD = 1, 
        t.ARRAY_BUFFER_REF_REFERENCE = 0, t.ARRAY_BUFFER_REF_COPY = 1, t.UPLOAD_SHADER_UNIFORM_TYPE_ID = 0, 
        t.UPLOAD_SHADER_UNIFORM_TYPE_DATA = 1, t.instance = null, t;
    }(), Dt = function() {
        function e() {}
        return r(e, "laya.utils.Browser"), s(1, e, "pixelRatio", function() {
            if (e._pixelRatio &lt; 0) if (e.__init__(), e.userAgent.indexOf("Mozilla/6.0(Linux; Android 6.0; HUAWEI NXT-AL10 Build/HUAWEINXT-AL10)") &gt; -1) e._pixelRatio = 2; else {
                var t = e.context, i = t.backingStorePixelRatio || t.webkitBackingStorePixelRatio || t.mozBackingStorePixelRatio || t.msBackingStorePixelRatio || t.oBackingStorePixelRatio || t.backingStorePixelRatio || 1;
                (e._pixelRatio = (e._window.devicePixelRatio || 1) / i) &lt; 1 &amp;&amp; (e._pixelRatio = 1);
            }
            return e._pixelRatio;
        }), s(1, e, "height", function() {
            return e.__init__(), (i.stage &amp;&amp; i.stage.canvasRotation ? e.clientWidth : e.clientHeight) * e.pixelRatio;
        }), s(1, e, "clientWidth", function() {
            return e.__init__(), e._window.innerWidth || e._document.body.clientWidth;
        }), s(1, e, "window", function() {
            return e._window || e.__init__();
        }), s(1, e, "clientHeight", function() {
            return e.__init__(), e._window.innerHeight || e._document.body.clientHeight || e._document.documentElement.clientHeight;
        }), s(1, e, "width", function() {
            return e.__init__(), (i.stage &amp;&amp; i.stage.canvasRotation ? e.clientHeight : e.clientWidth) * e.pixelRatio;
        }), s(1, e, "container", function() {
            return e._container || (e.__init__(), (e._container = e.createElement("div")).id = "layaContainer", 
            e._document.body.appendChild(e._container)), e._container;
        }, function(t) {
            e._container = t;
        }), s(1, e, "document", function() {
            return e.__init__(), e._document;
        }), e.__init__ = function() {
            if (e._window) return e._window;
            var n = e._window = t, r = e._document = n.document, s = e.userAgent = n.navigator.userAgent, a = n._layalibs;
            if (a) {
                a.sort(function(t, e) {
                    return t.i - e.i;
                });
                for (var o = 0; o &lt; a.length; o++) a[o].f(n, r, i);
            }
            s.indexOf("MiniGame") &gt; -1 &amp;&amp; e.window.hasOwnProperty("wx") &amp;&amp; (i.MiniAdpter ? i.MiniAdpter.enable() : console.error("è¯·å…ˆæ·»åŠ&nbsp;å°æ¸¸æˆé€‚é…åº“,è¯¦ç»†æ•™ç¨‹ï¼šhttps://ldc2.layabox.com/doc/?nav=zh-ts-5-0-0")), 
            s.indexOf("SwanGame") &gt; -1 &amp;&amp; (i.BMiniAdapter ? i.BMiniAdapter.enable() : console.error("è¯·å…ˆæ·»åŠ&nbsp;ç™¾åº¦å°æ¸¸æˆé€‚é…åº“,è¯¦ç»†æ•™ç¨‹ï¼šhttps://ldc2.layabox.com/doc/?nav=zh-ts-5-0-0")), 
            "function" == typeof getApp &amp;&amp; (i.KGMiniAdapter ? i.KGMiniAdapter.enable() : console.error("è¯·å…ˆæ·»åŠ&nbsp;å°ç±³å°æ¸¸æˆé€‚é…åº“,è¯¦ç»†æ•™ç¨‹ï¼šhttps://ldc2.layabox.com/doc/?nav=zh-ts-5-0-0")), 
            s.indexOf("OPPO") &gt; -1 &amp;&amp; s.indexOf("MiniGame") &gt; -1 &amp;&amp; (i.QGMiniAdapter ? i.QGMiniAdapter.enable() : console.error("è¯·å…ˆæ·»åŠ&nbsp;OPPOå°æ¸¸æˆé€‚é…åº“")), 
            n.trace = console.log, n.requestAnimationFrame = n.requestAnimationFrame || n.webkitRequestAnimationFrame || n.mozRequestAnimationFrame || n.oRequestAnimationFrame || n.msRequestAnimationFrame || function(t) {
                return n.setTimeout(t, 1e3 / 60);
            };
            var h = r.body.style;
            h.margin = 0, h.overflow = "hidden", h["-webkit-user-select"] = "none", h["-webkit-tap-highlight-color"] = "rgba(200,200,200,0)";
            for (var l = r.getElementsByTagName("meta"), u = 0, c = !1, _ = "width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"; u &lt; l.length; ) {
                var f = l[u];
                if ("viewport" == f.name) {
                    f.content = _, c = !0;
                    break;
                }
                u++;
            }
            c || ((f = r.createElement("meta")).name = "viewport", f.content = _, r.getElementsByTagName("head")[0].appendChild(f)), 
            e.onMobile = !!t.isConchApp || s.indexOf("Mobile") &gt; -1, e.onIOS = !!s.match(/\(i[^;]+;(U;)? CPU.+Mac OS X/), 
            e.onIPhone = s.indexOf("iPhone") &gt; -1, e.onMac = s.indexOf("Mac OS X") &gt; -1, e.onIPad = s.indexOf("iPad") &gt; -1, 
            e.onAndroid = s.indexOf("Android") &gt; -1 || s.indexOf("Adr") &gt; -1, e.onWP = s.indexOf("Windows Phone") &gt; -1, 
            e.onQQBrowser = s.indexOf("QQBrowser") &gt; -1, e.onMQQBrowser = s.indexOf("MQQBrowser") &gt; -1 || s.indexOf("Mobile") &gt; -1 &amp;&amp; s.indexOf("QQ") &gt; -1, 
            e.onIE = !!n.ActiveXObject || "ActiveXObject" in n, e.onWeiXin = s.indexOf("MicroMessenger") &gt; -1, 
            e.onSafari = s.indexOf("Safari") &gt; -1, e.onPC = !e.onMobile, e.onMiniGame = s.indexOf("MiniGame") &gt; -1, 
            e.onBDMiniGame = s.indexOf("SwanGame") &gt; -1, s.indexOf("OPPO") &gt; -1 &amp;&amp; s.indexOf("MiniGame") &gt; -1 &amp;&amp; (e.onQGMiniGame = !0, 
            e.onMiniGame = !1), e.onLimixiu = s.indexOf("limixiu") &gt; -1, e.onKGMiniGame = s.indexOf("QuickGame") &gt; -1, 
            e.supportLocalStorage = bt.__init__(), e.supportWebAudio = ye.__init__(), Mt._mainCanvas = new si(!0);
            var d = Mt._mainCanvas.source.style;
            d.position = "absolute", d.top = d.left = "0px", d.background = "#000000", e.canvas = new si(!0), 
            e.context = e.canvas.getContext("2d");
            var p = new si(!0);
            laya.utils.Browser.onQGMiniGame &amp;&amp; (p = Mt._mainCanvas);
            var m = [ "webgl", "experimental-webgl", "webkit-3d", "moz-webgl" ], g = null;
            for (u = 0; u &lt; m.length; u++) {
                try {
                    g = p.source.getContext(m[u]);
                } catch (t) {}
                if (g) {
                    e._supportWebGL = !0;
                    break;
                }
            }
            return n;
        }, e.createElement = function(t) {
            return e.__init__(), e._document.createElement(t);
        }, e.getElementById = function(t) {
            return e.__init__(), e._document.getElementById(t);
        }, e.removeElement = function(t) {
            t &amp;&amp; t.parentNode &amp;&amp; t.parentNode.removeChild(t);
        }, e.now = function() {
            return Date.now();
        }, e.userAgent = null, e.onMobile = !1, e.onIOS = !1, e.onMac = !1, e.onIPhone = !1, 
        e.onIPad = !1, e.onAndroid = !1, e.onWP = !1, e.onQQBrowser = !1, e.onMQQBrowser = !1, 
        e.onSafari = !1, e.onIE = !1, e.onWeiXin = !1, e.onPC = !1, e.onMiniGame = !1, e.onBDMiniGame = !1, 
        e.onKGMiniGame = !1, e.onQGMiniGame = !1, e.onLimixiu = !1, e.onFirefox = !1, e.onEdge = !1, 
        e.supportWebAudio = !1, e.supportLocalStorage = !1, e.canvas = null, e.context = null, 
        e._window = null, e._document = null, e._container = null, e._pixelRatio = -1, e._supportWebGL = !1, 
        e;
    }(), Lt = function() {
        function t() {
            this._matrix = new st();
        }
        r(t, "laya.webgl.canvas.save.SaveTransform");
        var e = t.prototype;
        return i.imps(e, {
            "laya.webgl.canvas.save.ISaveData": !0
        }), e.isSaveMark = function() {
            return !1;
        }, e.restore = function(e) {
            e._curMat = this._savematrix, t.POOL[t.POOL._length++] = this;
        }, t.save = function(e) {
            var i = e._saveMark;
            if (2048 != (2048 &amp; i._saveuse)) {
                i._saveuse |= 2048;
                var n = t.POOL, r = n._length &gt; 0 ? n[--n._length] : new t();
                r._savematrix = e._curMat, e._curMat = e._curMat.copyTo(r._matrix);
                var s = e._save;
                s[s._length++] = r;
            }
        }, t.POOL = h._createArray(), t;
    }(), Bt = function() {
        function t(t, e, i, n) {
            this._idata = [];
        }
        r(t, "laya.layagl.CommandEncoder");
        var e = t.prototype;
        return e.getArrayData = function() {
            return this._idata;
        }, e.getPtrID = function() {
            return 0;
        }, e.beginEncoding = function() {}, e.endEncoding = function() {}, e.clearEncoding = function() {
            this._idata.length = 0;
        }, e.getCount = function() {
            return this._idata.length;
        }, e.add_ShaderValue = function(t) {
            this._idata.push(t);
        }, e.addShaderUniform = function(t) {
            this.add_ShaderValue(t);
        }, t;
    }(), Ft = function() {
        function t() {}
        r(t, "laya.display.cmd.FillBorderTextCmd");
        var e = t.prototype;
        return e.recover = function() {
            U.recover("FillBorderTextCmd", this);
        }, e.run = function(t, e, i) {
            t.fillBorderText(this.text, this.x + e, this.y + i, this.font, this.fillColor, this.borderColor, this.lineWidth, this.textAlign);
        }, s(0, e, "cmdID", function() {
            return "FillBorderText";
        }), t.create = function(e, i, n, r, s, a, o, h) {
            var l = U.getItemByClass("FillBorderTextCmd", t);
            return l.text = e, l.x = i, l.y = n, l.font = r, l.fillColor = s, l.borderColor = a, 
            l.lineWidth = o, l.textAlign = h, l;
        }, t.ID = "FillBorderText", t;
    }(), Ot = function() {
        function t() {
            this._controlPoints = [ new Yt(), new Yt(), new Yt() ], this._calFun = this.getPoint2;
        }
        r(t, "laya.maths.Bezier");
        var e = t.prototype;
        return e._switchPoint = function(t, e) {
            var i = this._controlPoints.shift();
            i.setTo(t, e), this._controlPoints.push(i);
        }, e.getPoint2 = function(t, e) {
            var i = this._controlPoints[0], n = this._controlPoints[1], r = this._controlPoints[2], s = Math.pow(1 - t, 2) * i.x + 2 * t * (1 - t) * n.x + Math.pow(t, 2) * r.x, a = Math.pow(1 - t, 2) * i.y + 2 * t * (1 - t) * n.y + Math.pow(t, 2) * r.y;
            e.push(s, a);
        }, e.getPoint3 = function(t, e) {
            var i = this._controlPoints[0], n = this._controlPoints[1], r = this._controlPoints[2], s = this._controlPoints[3], a = Math.pow(1 - t, 3) * i.x + 3 * n.x * t * (1 - t) * (1 - t) + 3 * r.x * t * t * (1 - t) + s.x * Math.pow(t, 3), o = Math.pow(1 - t, 3) * i.y + 3 * n.y * t * (1 - t) * (1 - t) + 3 * r.y * t * t * (1 - t) + s.y * Math.pow(t, 3);
            e.push(a, o);
        }, e.insertPoints = function(t, e) {
            var i = NaN, n = NaN;
            for (n = 1 / (t = t &gt; 0 ? t : 5), i = 0; i &lt;= 1; i += n) this._calFun(i, e);
        }, e.getBezierPoints = function(t, e, i) {
            void 0 === e &amp;&amp; (e = 5), void 0 === i &amp;&amp; (i = 2);
            var n = 0, r = 0;
            if ((r = t.length) &lt; 2 * (i + 1)) return [];
            var s = [];
            switch (i) {
              case 2:
                this._calFun = this.getPoint2;
                break;

              case 3:
                this._calFun = this.getPoint3;
                break;

              default:
                return [];
            }
            for (;this._controlPoints.length &lt;= i; ) this._controlPoints.push(Yt.create());
            for (n = 0; n &lt; 2 * i; n += 2) this._switchPoint(t[n], t[n + 1]);
            for (n = 2 * i; n &lt; r; n += 2) this._switchPoint(t[n], t[n + 1]), n / 2 % i == 0 &amp;&amp; this.insertPoints(e, s);
            return s;
        }, n(t, [ "I", function() {
            return this.I = new t();
        } ]), t;
    }(), Nt = function() {
        function t() {}
        r(t, "laya.display.cmd.Draw9GridTexture");
        var e = t.prototype;
        return e.recover = function() {
            this.texture._removeReference(), U.recover("Draw9GridTexture", this);
        }, e.run = function(t, e, i) {
            t.drawTextureWithSizeGrid(this.texture, this.x, this.y, this.width, this.height, this.sizeGrid, e, i);
        }, s(0, e, "cmdID", function() {
            return "Draw9GridTexture";
        }), t.create = function(e, i, n, r, s, a) {
            var o = U.getItemByClass("Draw9GridTexture", t);
            return o.texture = e, e._addReference(), o.x = i, o.y = n, o.width = r, o.height = s, 
            o.sizeGrid = a, o;
        }, t.ID = "Draw9GridTexture", t;
    }(), kt = function() {
        function t() {
            this.texWidth = 1024, this.texHeight = 1024, this.atlasgrid = null, this.protectDist = 1, 
            this.texture = null, this.charMaps = {}, this.texHeight = this.texWidth = C.atlasWidth, 
            this.texture = qe.getTextTexture(this.texWidth, this.texHeight), this.texWidth / t.atlasGridW &gt; 256 &amp;&amp; (t.atlasGridW = Math.ceil(this.texWidth / 256)), 
            this.atlasgrid = new Qt(this.texWidth / t.atlasGridW, this.texHeight / t.atlasGridW, this.texture.id);
        }
        r(t, "laya.webgl.text.TextAtlas");
        var e = t.prototype;
        return e.setProtecteDist = function(t) {
            this.protectDist = t;
        }, e.getAEmpty = function(e, i, n) {
            var r = this.atlasgrid.addRect(1, Math.ceil(e / t.atlasGridW), Math.ceil(i / t.atlasGridW), n);
            return r &amp;&amp; (n.x *= t.atlasGridW, n.y *= t.atlasGridW), r;
        }, e.destroy = function() {
            for (var t in this.charMaps) this.charMaps[t].deleted = !0;
            this.texture.discard();
        }, e.printDebugInfo = function() {}, s(0, e, "usedRate", function() {
            return this.atlasgrid._used;
        }), t.atlasGridW = 16, t;
    }(), Ut = function() {
        function t() {
            this._strsToID = {}, this._idToStrs = [], this._length = 0;
        }
        r(t, "laya.utils.StringKey");
        var e = t.prototype;
        return e.add = function(t) {
            var e = this._strsToID[t];
            return null != e ? e : (this._idToStrs[this._length] = t, this._strsToID[t] = this._length++);
        }, e.getID = function(t) {
            var e = this._strsToID[t];
            return null == e ? -1 : e;
        }, e.getName = function(t) {
            var e = this._idToStrs[t];
            return null == e ? void 0 : e;
        }, t;
    }(), Wt = function() {
        function t() {
            this.ratio = .92, this.maxOffset = 60, this._dragging = !1, this._clickOnly = !0;
        }
        r(t, "laya.utils.Dragging");
        var e = t.prototype;
        return e.start = function(t, e, n, r, s, a, o, h) {
            void 0 === h &amp;&amp; (h = .92), this.clearTimer(), this.target = t, this.area = e, this.hasInertia = n, 
            this.elasticDistance = e ? r : 0, this.elasticBackTime = s, this.data = a, this._disableMouseEvent = o, 
            this.ratio = h, this._parent = t.parent, this._clickOnly = !0, this._dragging = !0, 
            this._elasticRateX = this._elasticRateY = 1, this._lastX = this._parent.mouseX, 
            this._lastY = this._parent.mouseY, i.stage.on("mouseup", this, this.onStageMouseUp), 
            i.stage.on("mouseout", this, this.onStageMouseUp), i.systemTimer.frameLoop(1, this, this.loop);
        }, e.clearTimer = function() {
            i.systemTimer.clear(this, this.loop), i.systemTimer.clear(this, this.tweenMove), 
            this._tween &amp;&amp; (this._tween.recover(), this._tween = null);
        }, e.stop = function() {
            this._dragging &amp;&amp; (S.instance.disableMouseEvent = !1, i.stage.off("mouseup", this, this.onStageMouseUp), 
            i.stage.off("mouseout", this, this.onStageMouseUp), this._dragging = !1, this.target &amp;&amp; this.area &amp;&amp; this.backToArea(), 
            this.clear());
        }, e.loop = function() {
            var t = this._parent.getMousePoint(), e = t.x, n = t.y, r = e - this._lastX, s = n - this._lastY;
            if (this._clickOnly) {
                if (!(Math.abs(r * i.stage._canvasTransform.getScaleX()) &gt; 1 || Math.abs(s * i.stage._canvasTransform.getScaleY()) &gt; 1)) return;
                this._clickOnly = !1, this._offsets || (this._offsets = []), this._offsets.length = 0, 
                this.target.event("dragstart", this.data), S.instance.disableMouseEvent = this._disableMouseEvent;
            } else this._offsets.push(r, s);
            0 === r &amp;&amp; 0 === s || (this._lastX = e, this._lastY = n, this.target.x += r * this._elasticRateX, 
            this.target.y += s * this._elasticRateY, this.area &amp;&amp; this.checkArea(), this.target.event("dragmove", this.data));
        }, e.checkArea = function() {
            if (this.elasticDistance &lt;= 0) this.backToArea(); else {
                if (this.target._x &lt; this.area.x) var t = this.area.x - this.target._x; else t = this.target._x &gt; this.area.x + this.area.width ? this.target._x - this.area.x - this.area.width : 0;
                if (this._elasticRateX = Math.max(0, 1 - t / this.elasticDistance), this.target._y &lt; this.area.y) var e = this.area.y - this.target.y; else e = this.target._y &gt; this.area.y + this.area.height ? this.target._y - this.area.y - this.area.height : 0;
                this._elasticRateY = Math.max(0, 1 - e / this.elasticDistance);
            }
        }, e.backToArea = function() {
            this.target.x = Math.min(Math.max(this.target._x, this.area.x), this.area.x + this.area.width), 
            this.target.y = Math.min(Math.max(this.target._y, this.area.y), this.area.y + this.area.height);
        }, e.onStageMouseUp = function(t) {
            if (S.instance.disableMouseEvent = !1, i.stage.off("mouseup", this, this.onStageMouseUp), 
            i.stage.off("mouseout", this, this.onStageMouseUp), i.systemTimer.clear(this, this.loop), 
            !this._clickOnly &amp;&amp; this.target) if (this.hasInertia) {
                this._offsets.length &lt; 1 &amp;&amp; this._offsets.push(this._parent.mouseX - this._lastX, this._parent.mouseY - this._lastY), 
                this._offsetX = this._offsetY = 0;
                for (var e = this._offsets.length, n = Math.min(e, 6), r = this._offsets.length - n, s = e - 1; s &gt; r; s--) this._offsetY += this._offsets[s--], 
                this._offsetX += this._offsets[s];
                this._offsetX = this._offsetX / n * 2, this._offsetY = this._offsetY / n * 2, Math.abs(this._offsetX) &gt; this.maxOffset &amp;&amp; (this._offsetX = this._offsetX &gt; 0 ? this.maxOffset : -this.maxOffset), 
                Math.abs(this._offsetY) &gt; this.maxOffset &amp;&amp; (this._offsetY = this._offsetY &gt; 0 ? this.maxOffset : -this.maxOffset), 
                i.systemTimer.frameLoop(1, this, this.tweenMove);
            } else this.elasticDistance &gt; 0 ? this.checkElastic() : this.clear();
        }, e.checkElastic = function() {
            var t = NaN, e = NaN;
            if (this.target.x &lt; this.area.x ? t = this.area.x : this.target._x &gt; this.area.x + this.area.width &amp;&amp; (t = this.area.x + this.area.width), 
            this.target.y &lt; this.area.y ? e = this.area.y : this.target._y &gt; this.area.y + this.area.height &amp;&amp; (e = this.area.y + this.area.height), 
            isNaN(t) &amp;&amp; isNaN(e)) this.clear(); else {
                var i = {};
                isNaN(t) || (i.x = t), isNaN(e) || (i.y = e), this._tween = z.to(this.target, i, this.elasticBackTime, te.sineOut, g.create(this, this.clear), 0, !1, !1);
            }
        }, e.tweenMove = function() {
            this._offsetX *= this.ratio * this._elasticRateX, this._offsetY *= this.ratio * this._elasticRateY, 
            this.target.x += this._offsetX, this.target.y += this._offsetY, this.area &amp;&amp; this.checkArea(), 
            this.target.event("dragmove", this.data), (Math.abs(this._offsetX) &lt; 1 &amp;&amp; Math.abs(this._offsetY) &lt; 1 || this._elasticRateX &lt; .5 || this._elasticRateY &lt; .5) &amp;&amp; (i.systemTimer.clear(this, this.tweenMove), 
            this.elasticDistance &gt; 0 ? this.checkElastic() : this.clear());
        }, e.clear = function() {
            if (this.target) {
                this.clearTimer();
                var t = this.target;
                this.target = null, this._parent = null, t.event("dragend", this.data);
            }
        }, t;
    }(), Vt = function() {
        function t() {}
        return r(t, "laya.webgl.shapes.Earcut"), t.earcut = function(e, i, n) {
            n = n || 2;
            var r = i &amp;&amp; i.length, s = r ? i[0] * n : e.length, a = t.linkedList(e, 0, s, n, !0), o = [];
            if (!a) return o;
            var h, l, u, c, _, f, d;
            if (r &amp;&amp; (a = t.eliminateHoles(e, i, a, n)), e.length &gt; 80 * n) {
                h = u = e[0], l = c = e[1];
                for (var p = n; p &lt; s; p += n) _ = e[p], f = e[p + 1], _ &lt; h &amp;&amp; (h = _), f &lt; l &amp;&amp; (l = f), 
                _ &gt; u &amp;&amp; (u = _), f &gt; c &amp;&amp; (c = f);
                d = 0 !== (d = Math.max(u - h, c - l)) ? 1 / d : 0;
            }
            return t.earcutLinked(a, o, n, h, l, d), o;
        }, t.linkedList = function(e, i, n, r, s) {
            var a, o;
            if (s === t.signedArea(e, i, n, r) &gt; 0) for (a = i; a &lt; n; a += r) o = t.insertNode(a, e[a], e[a + 1], o); else for (a = n - r; a &gt;= i; a -= r) o = t.insertNode(a, e[a], e[a + 1], o);
            return o &amp;&amp; t.equals(o, o.next) &amp;&amp; (t.removeNode(o), o = o.next), o;
        }, t.filterPoints = function(e, i) {
            if (!e) return e;
            i || (i = e);
            var n, r = e;
            do {
                if (n = !1, r.steiner || !t.equals(r, r.next) &amp;&amp; 0 !== t.area(r.prev, r, r.next)) r = r.next; else {
                    if (t.removeNode(r), (r = i = r.prev) === r.next) break;
                    n = !0;
                }
            } while (n || r !== i);
            return i;
        }, t.earcutLinked = function(e, i, n, r, s, a, o) {
            if (e) {
                !o &amp;&amp; a &amp;&amp; t.indexCurve(e, r, s, a);
                for (var h, l, u = e; e.prev !== e.next; ) if (h = e.prev, l = e.next, a ? t.isEarHashed(e, r, s, a) : t.isEar(e)) i.push(h.i / n), 
                i.push(e.i / n), i.push(l.i / n), t.removeNode(e), e = l.next, u = l.next; else if ((e = l) === u) {
                    o ? 1 === o ? (e = t.cureLocalIntersections(e, i, n), t.earcutLinked(e, i, n, r, s, a, 2)) : 2 === o &amp;&amp; t.splitEarcut(e, i, n, r, s, a) : t.earcutLinked(t.filterPoints(e, null), i, n, r, s, a, 1);
                    break;
                }
            }
        }, t.isEar = function(e) {
            var i = e.prev, n = e, r = e.next;
            if (t.area(i, n, r) &gt;= 0) return !1;
            for (var s = e.next.next; s !== e.prev; ) {
                if (t.pointInTriangle(i.x, i.y, n.x, n.y, r.x, r.y, s.x, s.y) &amp;&amp; t.area(s.prev, s, s.next) &gt;= 0) return !1;
                s = s.next;
            }
            return !0;
        }, t.isEarHashed = function(e, i, n, r) {
            var s = e.prev, a = e, o = e.next;
            if (t.area(s, a, o) &gt;= 0) return !1;
            for (var h = s.x &lt; a.x ? s.x &lt; o.x ? s.x : o.x : a.x &lt; o.x ? a.x : o.x, l = s.y &lt; a.y ? s.y &lt; o.y ? s.y : o.y : a.y &lt; o.y ? a.y : o.y, u = s.x &gt; a.x ? s.x &gt; o.x ? s.x : o.x : a.x &gt; o.x ? a.x : o.x, c = s.y &gt; a.y ? s.y &gt; o.y ? s.y : o.y : a.y &gt; o.y ? a.y : o.y, _ = t.zOrder(h, l, i, n, r), f = t.zOrder(u, c, i, n, r), d = e.nextZ; d &amp;&amp; d.z &lt;= f; ) {
                if (d !== e.prev &amp;&amp; d !== e.next &amp;&amp; t.pointInTriangle(s.x, s.y, a.x, a.y, o.x, o.y, d.x, d.y) &amp;&amp; t.area(d.prev, d, d.next) &gt;= 0) return !1;
                d = d.nextZ;
            }
            for (d = e.prevZ; d &amp;&amp; d.z &gt;= _; ) {
                if (d !== e.prev &amp;&amp; d !== e.next &amp;&amp; t.pointInTriangle(s.x, s.y, a.x, a.y, o.x, o.y, d.x, d.y) &amp;&amp; t.area(d.prev, d, d.next) &gt;= 0) return !1;
                d = d.prevZ;
            }
            return !0;
        }, t.cureLocalIntersections = function(e, i, n) {
            var r = e;
            do {
                var s = r.prev, a = r.next.next;
                !t.equals(s, a) &amp;&amp; t.intersects(s, r, r.next, a) &amp;&amp; t.locallyInside(s, a) &amp;&amp; t.locallyInside(a, s) &amp;&amp; (i.push(s.i / n), 
                i.push(r.i / n), i.push(a.i / n), t.removeNode(r), t.removeNode(r.next), r = e = a), 
                r = r.next;
            } while (r !== e);
            return r;
        }, t.splitEarcut = function(e, i, n, r, s, a) {
            var o = e;
            do {
                for (var h = o.next.next; h !== o.prev; ) {
                    if (o.i !== h.i &amp;&amp; t.isValidDiagonal(o, h)) {
                        var l = t.splitPolygon(o, h);
                        return o = t.filterPoints(o, o.next), l = t.filterPoints(l, l.next), t.earcutLinked(o, i, n, r, s, a), 
                        void t.earcutLinked(l, i, n, r, s, a);
                    }
                    h = h.next;
                }
                o = o.next;
            } while (o !== e);
        }, t.eliminateHoles = function(e, i, n, r) {
            var s, a, o, h, l, u = [];
            for (s = 0, a = i.length; s &lt; a; s++) o = i[s] * r, h = s &lt; a - 1 ? i[s + 1] * r : e.length, 
            (l = t.linkedList(e, o, h, r, !1)) === l.next &amp;&amp; (l.steiner = !0), u.push(t.getLeftmost(l));
            for (u.sort(t.compareX), s = 0; s &lt; u.length; s++) t.eliminateHole(u[s], n), n = t.filterPoints(n, n.next);
            return n;
        }, t.compareX = function(t, e) {
            return t.x - e.x;
        }, t.eliminateHole = function(e, i) {
            if (i = t.findHoleBridge(e, i)) {
                var n = t.splitPolygon(i, e);
                t.filterPoints(n, n.next);
            }
        }, t.findHoleBridge = function(e, i) {
            var n, r = i, s = e.x, a = e.y, o = -1 / 0;
            do {
                if (a &lt;= r.y &amp;&amp; a &gt;= r.next.y &amp;&amp; r.next.y !== r.y) {
                    var h = r.x + (a - r.y) * (r.next.x - r.x) / (r.next.y - r.y);
                    if (h &lt;= s &amp;&amp; h &gt; o) {
                        if (o = h, h === s) {
                            if (a === r.y) return r;
                            if (a === r.next.y) return r.next;
                        }
                        n = r.x &lt; r.next.x ? r : r.next;
                    }
                }
                r = r.next;
            } while (r !== i);
            if (!n) return null;
            if (s === o) return n.prev;
            var l, u = n, c = n.x, _ = n.y, f = 1 / 0;
            for (r = n.next; r !== u; ) s &gt;= r.x &amp;&amp; r.x &gt;= c &amp;&amp; s !== r.x &amp;&amp; t.pointInTriangle(a &lt; _ ? s : o, a, c, _, a &lt; _ ? o : s, a, r.x, r.y) &amp;&amp; ((l = Math.abs(a - r.y) / (s - r.x)) &lt; f || l === f &amp;&amp; r.x &gt; n.x) &amp;&amp; t.locallyInside(r, e) &amp;&amp; (n = r, 
            f = l), r = r.next;
            return n;
        }, t.indexCurve = function(e, i, n, r) {
            var s = e;
            do {
                null === s.z &amp;&amp; (s.z = t.zOrder(s.x, s.y, i, n, r)), s.prevZ = s.prev, s.nextZ = s.next, 
                s = s.next;
            } while (s !== e);
            s.prevZ.nextZ = null, s.prevZ = null, t.sortLinked(s);
        }, t.sortLinked = function(t) {
            var e, i, n, r, s, a, o, h, l = 1;
            do {
                for (i = t, t = null, s = null, a = 0; i; ) {
                    for (a++, n = i, o = 0, e = 0; e &lt; l &amp;&amp; (o++, n = n.nextZ); e++) ;
                    for (h = l; o &gt; 0 || h &gt; 0 &amp;&amp; n; ) 0 !== o &amp;&amp; (0 === h || !n || i.z &lt;= n.z) ? (r = i, 
                    i = i.nextZ, o--) : (r = n, n = n.nextZ, h--), s ? s.nextZ = r : t = r, r.prevZ = s, 
                    s = r;
                    i = n;
                }
                s.nextZ = null, l *= 2;
            } while (a &gt; 1);
            return t;
        }, t.zOrder = function(t, e, i, n, r) {
            return t = 32767 * (t - i) * r, e = 32767 * (e - n) * r, t = 16711935 &amp; (t | t &lt;&lt; 8), 
            t = 252645135 &amp; (t | t &lt;&lt; 4), t = 858993459 &amp; (t | t &lt;&lt; 2), t = 1431655765 &amp; (t | t &lt;&lt; 1), 
            e = 16711935 &amp; (e | e &lt;&lt; 8), e = 252645135 &amp; (e | e &lt;&lt; 4), e = 858993459 &amp; (e | e &lt;&lt; 2), 
            e = 1431655765 &amp; (e | e &lt;&lt; 1), t | e &lt;&lt; 1;
        }, t.getLeftmost = function(t) {
            var e = t, i = t;
            do {
                e.x &lt; i.x &amp;&amp; (i = e), e = e.next;
            } while (e !== t);
            return i;
        }, t.pointInTriangle = function(t, e, i, n, r, s, a, o) {
            return (r - a) * (e - o) - (t - a) * (s - o) &gt;= 0 &amp;&amp; (t - a) * (n - o) - (i - a) * (e - o) &gt;= 0 &amp;&amp; (i - a) * (s - o) - (r - a) * (n - o) &gt;= 0;
        }, t.isValidDiagonal = function(e, i) {
            return e.next.i !== i.i &amp;&amp; e.prev.i !== i.i &amp;&amp; !t.intersectsPolygon(e, i) &amp;&amp; t.locallyInside(e, i) &amp;&amp; t.locallyInside(i, e) &amp;&amp; t.middleInside(e, i);
        }, t.area = function(t, e, i) {
            return (e.y - t.y) * (i.x - e.x) - (e.x - t.x) * (i.y - e.y);
        }, t.equals = function(t, e) {
            return t.x === e.x &amp;&amp; t.y === e.y;
        }, t.intersects = function(e, i, n, r) {
            return !!(t.equals(e, i) &amp;&amp; t.equals(n, r) || t.equals(e, r) &amp;&amp; t.equals(n, i)) || t.area(e, i, n) &gt; 0 != t.area(e, i, r) &gt; 0 &amp;&amp; t.area(n, r, e) &gt; 0 != t.area(n, r, i) &gt; 0;
        }, t.intersectsPolygon = function(e, i) {
            var n = e;
            do {
                if (n.i !== e.i &amp;&amp; n.next.i !== e.i &amp;&amp; n.i !== i.i &amp;&amp; n.next.i !== i.i &amp;&amp; t.intersects(n, n.next, e, i)) return !0;
                n = n.next;
            } while (n !== e);
            return !1;
        }, t.locallyInside = function(e, i) {
            return t.area(e.prev, e, e.next) &lt; 0 ? t.area(e, i, e.next) &gt;= 0 &amp;&amp; t.area(e, e.prev, i) &gt;= 0 : t.area(e, i, e.prev) &lt; 0 || t.area(e, e.next, i) &lt; 0;
        }, t.middleInside = function(t, e) {
            var i = t, n = !1, r = (t.x + e.x) / 2, s = (t.y + e.y) / 2;
            do {
                i.y &gt; s != i.next.y &gt; s &amp;&amp; i.next.y !== i.y &amp;&amp; r &lt; (i.next.x - i.x) * (s - i.y) / (i.next.y - i.y) + i.x &amp;&amp; (n = !n), 
                i = i.next;
            } while (i !== t);
            return n;
        }, t.splitPolygon = function(t, e) {
            var i = new K(t.i, t.x, t.y), n = new K(e.i, e.x, e.y), r = t.next, s = e.prev;
            return t.next = e, e.prev = t, i.next = r, r.prev = i, n.next = i, i.prev = n, s.next = n, 
            n.prev = s, n;
        }, t.insertNode = function(t, e, i, n) {
            var r = new K(t, e, i);
            return n ? (r.next = n.next, r.prev = n, n.next.prev = r, n.next = r) : (r.prev = r, 
            r.next = r), r;
        }, t.removeNode = function(t) {
            t.next.prev = t.prev, t.prev.next = t.next, t.prevZ &amp;&amp; (t.prevZ.nextZ = t.nextZ), 
            t.nextZ &amp;&amp; (t.nextZ.prevZ = t.prevZ);
        }, t.signedArea = function(t, e, i, n) {
            for (var r = 0, s = e, a = i - n; s &lt; i; s += n) r += (t[a] - t[s]) * (t[s + 1] + t[a + 1]), 
            a = s;
            return r;
        }, t;
    }(), Gt = function() {
        function t(t) {
            this.childs = [], this.text = "", this.parent = null, this.name = null, this.noCompile = !1, 
            this.includefiles = null, this.condition = null, this.conditionType = 0, this.useFuns = "", 
            this.z = 0, this.src = null, this.includefiles = t;
        }
        r(t, "laya.webgl.utils.ShaderNode");
        var e = t.prototype;
        return e.setParent = function(t) {
            t.childs.push(this), this.z = t.z + 1, this.parent = t;
        }, e.setCondition = function(t, e) {
            t &amp;&amp; (this.conditionType = e, t = t.replace(/(\s*$)/g, ""), this.condition = function() {
                return this[t];
            }, this.condition.__condition = t);
        }, e.toscript = function(e, i) {
            return this._toscript(e, i, ++t.__id);
        }, e._toscript = function(t, e, i) {
            if (this.childs.length &lt; 1 &amp;&amp; !this.text) return e;
            if (e.length, this.condition) {
                var n = !!this.condition.call(t);
                if (2 === this.conditionType &amp;&amp; (n = !n), !n) return e;
            }
            if (this.text &amp;&amp; e.push(this.text), this.childs.length &gt; 0 &amp;&amp; this.childs.forEach(function(n, r, s) {
                n._toscript(t, e, i);
            }), this.includefiles.length &gt; 0 &amp;&amp; this.useFuns.length &gt; 0) for (var r, s = 0, a = this.includefiles.length; s &lt; a; s++) this.includefiles[s].curUseID != i &amp;&amp; (r = this.includefiles[s].file.getFunsScript(this.useFuns)).length &gt; 0 &amp;&amp; (this.includefiles[s].curUseID = i, 
            e[0] = r + e[0]);
            return e;
        }, t.__id = 1, t;
    }(), Xt = function() {
        function t() {}
        r(t, "laya.display.cmd.TranslateCmd");
        var e = t.prototype;
        return e.recover = function() {
            U.recover("TranslateCmd", this);
        }, e.run = function(t, e, i) {
            t.translate(this.tx, this.ty);
        }, s(0, e, "cmdID", function() {
            return "Translate";
        }), t.create = function(e, i) {
            var n = U.getItemByClass("TranslateCmd", t);
            return n.tx = e, n.ty = i, n;
        }, t.ID = "Translate", t;
    }(), Yt = function() {
        function t(t, e) {
            void 0 === t &amp;&amp; (t = 0), void 0 === e &amp;&amp; (e = 0), this.x = t, this.y = e;
        }
        r(t, "laya.maths.Point");
        var e = t.prototype;
        return e.setTo = function(t, e) {
            return this.x = t, this.y = e, this;
        }, e.reset = function() {
            return this.x = this.y = 0, this;
        }, e.recover = function() {
            U.recover("Point", this.reset());
        }, e.distance = function(t, e) {
            return Math.sqrt((this.x - t) * (this.x - t) + (this.y - e) * (this.y - e));
        }, e.toString = function() {
            return this.x + "," + this.y;
        }, e.normalize = function() {
            var t = Math.sqrt(this.x * this.x + this.y * this.y);
            if (t &gt; 0) {
                var e = 1 / t;
                this.x *= e, this.y *= e;
            }
        }, e.copy = function(t) {
            return this.setTo(t.x, t.y);
        }, t.create = function() {
            return U.getItemByClass("Point", t);
        }, t.TEMP = new t(), t.EMPTY = new t(), t;
    }(), Ht = (function() {
        function t() {}
        r(t, "laya.Const"), t.NOT_ACTIVE = 1, t.ACTIVE_INHIERARCHY = 2, t.AWAKED = 4, t.NOT_READY = 8, 
        t.DISPLAY = 16, t.HAS_ZORDER = 32, t.HAS_MOUSE = 64, t.DISPLAYED_INSTAGE = 128, 
        t.DRAWCALL_OPTIMIZE = 256;
    }(), function() {
        function t() {}
        return r(t, "laya.webgl.shapes.BasePoly"), t.createLine2 = function(e, i, n, r, s, a) {
            if (e.length &lt; 4) return null;
            var o = t.tempData.length &gt; e.length + 2 ? t.tempData : new Array(e.length + 2);
            o[0] = e[0], o[1] = e[1];
            var h = 2, l = 0, u = e.length;
            for (l = 2; l &lt; u; l += 2) Math.abs(e[l] - e[l - 2]) + Math.abs(e[l + 1] - e[l - 1]) &gt; .01 &amp;&amp; (o[h++] = e[l], 
            o[h++] = e[l + 1]);
            a &amp;&amp; Math.abs(e[0] - o[h - 2]) + Math.abs(e[1] - o[h - 1]) &gt; .01 &amp;&amp; (o[h++] = e[0], 
            o[h++] = e[1]);
            var c = s;
            u = h / 2;
            var _, f, d, p, m, g, v, y, x, T, b, w, C, A, E, S, M, R, I, P, D = n / 2;
            for (d = o[0], p = o[1], T = d - (m = o[2]), x = (x = -(p - (g = o[3]))) / (P = Math.sqrt(x * x + T * T)) * D, 
            T = T / P * D, c.push(d - x, p - T, d + x, p + T), l = 1; l &lt; u - 1; l++) d = o[2 * (l - 1)], 
            p = o[2 * (l - 1) + 1], m = o[2 * l], g = o[2 * l + 1], v = o[2 * (l + 1)], y = o[2 * (l + 1) + 1], 
            T = d - m, w = m - v, E = (-(x = (x = -(p - g)) / (P = Math.sqrt(x * x + T * T)) * D) + d) * (-(T = T / P * D) + g) - (-x + m) * (-T + p), 
            R = (-(b = (b = -(g - y)) / (P = Math.sqrt(b * b + w * w)) * D) + v) * (-(w = w / P * D) + g) - (-b + m) * (-w + y), 
            I = (C = -T + p - (-T + g)) * (M = -b + m - (-b + v)) - (S = -w + y - (-w + g)) * (A = -x + m - (-x + d)), 
            Math.abs(I) &lt; .1 ? (I += 10.1, c.push(m - x, g - T, m + x, g + T)) : (_ = (A * R - M * E) / I, 
            f = (S * E - C * R) / I, c.push(_, f, m - (_ - m), g - (f - g)));
            for (d = o[h - 4], p = o[h - 3], T = d - (m = o[h - 2]), x = (x = -(p - (g = o[h - 1]))) / (P = Math.sqrt(x * x + T * T)) * D, 
            T = T / P * D, c.push(m - x, g - T, m + x, g + T), l = 1; l &lt; u; l++) i.push(r + 2 * (l - 1), r + 2 * (l - 1) + 1, r + 2 * l + 1, r + 2 * l + 1, r + 2 * l, r + 2 * (l - 1));
            return c;
        }, t.createLineTriangle = function(t, e, i, n, r, s, a) {
            var o = t.slice(), h = o.length, l = o[0], u = o[1], c = o[2], _ = (o[2], 0), f = 0, d = 0, p = 0, m = h / 2;
            if (!(m &lt;= 1) &amp;&amp; 2 != m) {
                for (var g = new Array(4 * m), v = 0, y = 0, x = 0; x &lt; m - 1; x++) l = o[y++], 
                u = o[y++], c = o[y++], p = o[y++] - u, 0 != (d = c - l) &amp;&amp; 0 != p &amp;&amp; (_ = Math.sqrt(d * d + p * p)) &gt; .001 &amp;&amp; (g[f = 4 * v] = l, 
                g[f + 1] = u, g[f + 2] = d / _, g[f + 3] = p / _, v++);
                for (n ? (l = o[h - 2], u = o[h - 1], c = o[0], p = o[1] - u, 0 != (d = c - l) &amp;&amp; 0 != p &amp;&amp; (_ = Math.sqrt(d * d + p * p)) &gt; .001 &amp;&amp; (g[f = 4 * v] = l, 
                g[f + 1] = u, g[f + 2] = d / _, g[f + 3] = p / _, v++)) : (g[f = 4 * v] = l, g[f + 1] = u, 
                g[f + 2] = d / _, g[f + 3] = p / _, v++), y = 0, x = 0; x &lt; m; x++) l = o[y], u = o[y + 1], 
                c = o[y + 2], o[y + 3], o[y + 4], o[y + 5];
            }
        }, n(t, [ "tempData", function() {
            return this.tempData = new Array(256);
        } ]), t;
    }()), zt = function() {
        function t() {}
        r(t, "laya.display.cmd.ScaleCmd");
        var e = t.prototype;
        return e.recover = function() {
            U.recover("ScaleCmd", this);
        }, e.run = function(t, e, i) {
            t._scale(this.scaleX, this.scaleY, this.pivotX + e, this.pivotY + i);
        }, s(0, e, "cmdID", function() {
            return "Scale";
        }), t.create = function(e, i, n, r) {
            var s = U.getItemByClass("ScaleCmd", t);
            return s.scaleX = e, s.scaleY = i, s.pivotX = n, s.pivotY = r, s;
        }, t.ID = "Scale", t;
    }(), jt = function() {
        function t() {}
        r(t, "laya.display.cmd.AlphaCmd");
        var e = t.prototype;
        return e.recover = function() {
            U.recover("AlphaCmd", this);
        }, e.run = function(t, e, i) {
            t.alpha(this.alpha);
        }, s(0, e, "cmdID", function() {
            return "Alpha";
        }), t.create = function(e) {
            var i = U.getItemByClass("AlphaCmd", t);
            return i.alpha = e, i;
        }, t.ID = "Alpha", t;
    }(), Kt = function() {
        function t(t) {
            this._xd_ = !0, this._allocated_ = 8, this._pos_ = 0, this._length = 0, t ? (this._u8d_ = new Uint8Array(t), 
            this._d_ = new DataView(this._u8d_.buffer), this._length = this._d_.byteLength) : this._resizeBuffer(this._allocated_);
        }
        r(t, "laya.utils.Byte");
        var e = t.prototype;
        return e._resizeBuffer = function(t) {
            try {
                var e = new Uint8Array(t);
                null != this._u8d_ &amp;&amp; (this._u8d_.length &lt;= t ? e.set(this._u8d_) : e.set(this._u8d_.subarray(0, t))), 
                this._u8d_ = e, this._d_ = new DataView(e.buffer);
            } catch (e) {
                throw "Invalid typed array length:" + t;
            }
        }, e.getString = function() {
            return this.readString();
        }, e.readString = function() {
            return this._rUTF(this.getUint16());
        }, e.getFloat32Array = function(t, e) {
            return this.readFloat32Array(t, e);
        }, e.readFloat32Array = function(t, e) {
            var i = t + e;
            i = i &gt; this._length ? this._length : i;
            var n = new Float32Array(this._d_.buffer.slice(t, i));
            return this._pos_ = i, n;
        }, e.getUint8Array = function(t, e) {
            return this.readUint8Array(t, e);
        }, e.readUint8Array = function(t, e) {
            var i = t + e;
            i = i &gt; this._length ? this._length : i;
            var n = new Uint8Array(this._d_.buffer.slice(t, i));
            return this._pos_ = i, n;
        }, e.getInt16Array = function(t, e) {
            return this.readInt16Array(t, e);
        }, e.readInt16Array = function(t, e) {
            var i = t + e;
            i = i &gt; this._length ? this._length : i;
            var n = new Int16Array(this._d_.buffer.slice(t, i));
            return this._pos_ = i, n;
        }, e.getFloat32 = function() {
            return this.readFloat32();
        }, e.readFloat32 = function() {
            if (this._pos_ + 4 &gt; this._length) throw "getFloat32 error - Out of bounds";
            var t = this._d_.getFloat32(this._pos_, this._xd_);
            return this._pos_ += 4, t;
        }, e.getFloat64 = function() {
            return this.readFloat64();
        }, e.readFloat64 = function() {
            if (this._pos_ + 8 &gt; this._length) throw "getFloat64 error - Out of bounds";
            var t = this._d_.getFloat64(this._pos_, this._xd_);
            return this._pos_ += 8, t;
        }, e.writeFloat32 = function(t) {
            this._ensureWrite(this._pos_ + 4), this._d_.setFloat32(this._pos_, t, this._xd_), 
            this._pos_ += 4;
        }, e.writeFloat64 = function(t) {
            this._ensureWrite(this._pos_ + 8), this._d_.setFloat64(this._pos_, t, this._xd_), 
            this._pos_ += 8;
        }, e.getInt32 = function() {
            return this.readInt32();
        }, e.readInt32 = function() {
            if (this._pos_ + 4 &gt; this._length) throw "getInt32 error - Out of bounds";
            var t = this._d_.getInt32(this._pos_, this._xd_);
            return this._pos_ += 4, t;
        }, e.getUint32 = function() {
            return this.readUint32();
        }, e.readUint32 = function() {
            if (this._pos_ + 4 &gt; this._length) throw "getUint32 error - Out of bounds";
            var t = this._d_.getUint32(this._pos_, this._xd_);
            return this._pos_ += 4, t;
        }, e.writeInt32 = function(t) {
            this._ensureWrite(this._pos_ + 4), this._d_.setInt32(this._pos_, t, this._xd_), 
            this._pos_ += 4;
        }, e.writeUint32 = function(t) {
            this._ensureWrite(this._pos_ + 4), this._d_.setUint32(this._pos_, t, this._xd_), 
            this._pos_ += 4;
        }, e.getInt16 = function() {
            return this.readInt16();
        }, e.readInt16 = function() {
            if (this._pos_ + 2 &gt; this._length) throw "getInt16 error - Out of bounds";
            var t = this._d_.getInt16(this._pos_, this._xd_);
            return this._pos_ += 2, t;
        }, e.getUint16 = function() {
            return this.readUint16();
        }, e.readUint16 = function() {
            if (this._pos_ + 2 &gt; this._length) throw "getUint16 error - Out of bounds";
            var t = this._d_.getUint16(this._pos_, this._xd_);
            return this._pos_ += 2, t;
        }, e.writeUint16 = function(t) {
            this._ensureWrite(this._pos_ + 2), this._d_.setUint16(this._pos_, t, this._xd_), 
            this._pos_ += 2;
        }, e.writeInt16 = function(t) {
            this._ensureWrite(this._pos_ + 2), this._d_.setInt16(this._pos_, t, this._xd_), 
            this._pos_ += 2;
        }, e.getUint8 = function() {
            return this.readUint8();
        }, e.readUint8 = function() {
            if (this._pos_ + 1 &gt; this._length) throw "getUint8 error - Out of bounds";
            return this._u8d_[this._pos_++];
        }, e.writeUint8 = function(t) {
            this._ensureWrite(this._pos_ + 1), this._d_.setUint8(this._pos_, t), this._pos_++;
        }, e._getUInt8 = function(t) {
            return this._readUInt8(t);
        }, e._readUInt8 = function(t) {
            return this._d_.getUint8(t);
        }, e._getUint16 = function(t) {
            return this._readUint16(t);
        }, e._readUint16 = function(t) {
            return this._d_.getUint16(t, this._xd_);
        }, e._getMatrix = function() {
            return this._readMatrix();
        }, e._readMatrix = function() {
            return new st(this.getFloat32(), this.getFloat32(), this.getFloat32(), this.getFloat32(), this.getFloat32(), this.getFloat32());
        }, e._rUTF = function(t) {
            var e = this._pos_ + t, i = 0, n = 0, r = 0, s = String.fromCharCode, a = this._u8d_, o = [], h = 0;
            for (o.length = 1e3; this._pos_ &lt; e; ) (i = a[this._pos_++]) &lt; 128 ? 0 != i &amp;&amp; (o[h++] = s(i)) : i &lt; 224 ? o[h++] = s((63 &amp; i) &lt;&lt; 6 | 127 &amp; a[this._pos_++]) : i &lt; 240 ? (n = a[this._pos_++], 
            o[h++] = s((31 &amp; i) &lt;&lt; 12 | (127 &amp; n) &lt;&lt; 6 | 127 &amp; a[this._pos_++])) : (n = a[this._pos_++], 
            r = a[this._pos_++], o[h++] = s((15 &amp; i) &lt;&lt; 18 | (127 &amp; n) &lt;&lt; 12 | r &lt;&lt; 6 &amp; 127 | 127 &amp; a[this._pos_++]));
            return o.length = h, o.join("");
        }, e.getCustomString = function(t) {
            return this.readCustomString(t);
        }, e.readCustomString = function(t) {
            for (var e = "", i = 0, n = 0, r = String.fromCharCode, s = this._u8d_; t &gt; 0; ) if ((n = s[this._pos_]) &lt; 128) e += r(n), 
            this._pos_++, t--; else for (i = n - 128, this._pos_++, t -= i; i &gt; 0; ) n = s[this._pos_++], 
            e += r(s[this._pos_++] &lt;&lt; 8 | n), i--;
            return e;
        }, e.clear = function() {
            this._pos_ = 0, this.length = 0;
        }, e.__getBuffer = function() {
            return this._d_.buffer;
        }, e.writeUTFBytes = function(t) {
            for (var e = 0, i = (t += "").length; e &lt; i; e++) {
                var n = t.charCodeAt(e);
                n &lt;= 127 ? this.writeByte(n) : n &lt;= 2047 ? (this._ensureWrite(this._pos_ + 2), this._u8d_.set([ 192 | n &gt;&gt; 6, 128 | 63 &amp; n ], this._pos_), 
                this._pos_ += 2) : n &lt;= 65535 ? (this._ensureWrite(this._pos_ + 3), this._u8d_.set([ 224 | n &gt;&gt; 12, 128 | n &gt;&gt; 6 &amp; 63, 128 | 63 &amp; n ], this._pos_), 
                this._pos_ += 3) : (this._ensureWrite(this._pos_ + 4), this._u8d_.set([ 240 | n &gt;&gt; 18, 128 | n &gt;&gt; 12 &amp; 63, 128 | n &gt;&gt; 6 &amp; 63, 128 | 63 &amp; n ], this._pos_), 
                this._pos_ += 4);
            }
        }, e.writeUTFString = function(t) {
            var e = this.pos;
            this.writeUint16(1), this.writeUTFBytes(t);
            var i = this.pos - e - 2;
            this._d_.setUint16(e, i, this._xd_);
        }, e.readUTFString = function() {
            return this.readUTFBytes(this.getUint16());
        }, e.getUTFString = function() {
            return this.readUTFString();
        }, e.readUTFBytes = function(t) {
            if (void 0 === t &amp;&amp; (t = -1), 0 === t) return "";
            var e = this.bytesAvailable;
            if (t &gt; e) throw "readUTFBytes error - Out of bounds";
            return t = t &gt; 0 ? t : e, this._rUTF(t);
        }, e.getUTFBytes = function(t) {
            return void 0 === t &amp;&amp; (t = -1), this.readUTFBytes(t);
        }, e.writeByte = function(t) {
            this._ensureWrite(this._pos_ + 1), this._d_.setInt8(this._pos_, t), this._pos_ += 1;
        }, e.readByte = function() {
            if (this._pos_ + 1 &gt; this._length) throw "readByte error - Out of bounds";
            return this._d_.getInt8(this._pos_++);
        }, e.getByte = function() {
            return this.readByte();
        }, e._ensureWrite = function(t) {
            this._length &lt; t &amp;&amp; (this._length = t), this._allocated_ &lt; t &amp;&amp; (this.length = t);
        }, e.writeArrayBuffer = function(t, e, i) {
            if (void 0 === e &amp;&amp; (e = 0), void 0 === i &amp;&amp; (i = 0), e &lt; 0 || i &lt; 0) throw "writeArrayBuffer error - Out of bounds";
            0 == i &amp;&amp; (i = t.byteLength - e), this._ensureWrite(this._pos_ + i);
            var n = new Uint8Array(t);
            this._u8d_.set(n.subarray(e, e + i), this._pos_), this._pos_ += i;
        }, e.readArrayBuffer = function(t) {
            var e;
            return e = this._u8d_.buffer.slice(this._pos_, this._pos_ + t), this._pos_ = this._pos_ + t, 
            e;
        }, s(0, e, "buffer", function() {
            var t = this._d_.buffer;
            return t.byteLength === this._length ? t : t.slice(0, this._length);
        }), s(0, e, "endian", function() {
            return this._xd_ ? "littleEndian" : "bigEndian";
        }, function(t) {
            this._xd_ = "littleEndian" === t;
        }), s(0, e, "length", function() {
            return this._length;
        }, function(t) {
            this._allocated_ &lt; t ? this._resizeBuffer(this._allocated_ = Math.floor(Math.max(t, 2 * this._allocated_))) : this._allocated_ &gt; t &amp;&amp; this._resizeBuffer(this._allocated_ = t), 
            this._length = t;
        }), s(0, e, "pos", function() {
            return this._pos_;
        }, function(t) {
            this._pos_ = t;
        }), s(0, e, "bytesAvailable", function() {
            return this._length - this._pos_;
        }), t.getSystemEndian = function() {
            if (!t._sysEndian) {
                var e = new ArrayBuffer(2);
                new DataView(e).setInt16(0, 256, !0), t._sysEndian = 256 === new Int16Array(e)[0] ? "littleEndian" : "bigEndian";
            }
            return t._sysEndian;
        }, t.BIG_ENDIAN = "bigEndian", t.LITTLE_ENDIAN = "littleEndian", t._sysEndian = null, 
        t;
    }(), $t = function() {
        function t() {
            this._pool = [], this._map = [], this._laters = [];
        }
        var e;
        r(t, "laya.utils.CallLater");
        var i = t.prototype;
        return i._update = function() {
            var t = this._laters, e = t.length;
            if (e &gt; 0) {
                for (var i = 0, n = e - 1; i &lt;= n; i++) {
                    var r = t[i];
                    this._map[r.key] = null, null !== r.method &amp;&amp; (r.run(), r.clear()), this._pool.push(r), 
                    i === n &amp;&amp; (n = t.length - 1);
                }
                t.length = 0;
            }
        }, i._getHandler = function(t, e) {
            var i = t ? t.$_GID || (t.$_GID = ie.getGID()) : 0, n = e.$_TID || (e.$_TID = 1e5 * J._mid++);
            return this._map[i + n];
        }, i.callLater = function(t, i, n) {
            if (null == this._getHandler(t, i)) {
                if (this._pool.length) var r = this._pool.pop(); else r = new e();
                r.caller = t, r.method = i, r.args = n;
                var s = t ? t.$_GID : 0, a = i.$_TID;
                r.key = s + a, this._map[r.key] = r, this._laters.push(r);
            }
        }, i.runCallLater = function(t, e) {
            var i = this._getHandler(t, e);
            i &amp;&amp; null != i.method &amp;&amp; (this._map[i.key] = null, i.run(), i.clear());
        }, t.I = new t(), t.__init$ = function() {
            e = function() {
                function t() {
                    this.key = 0, this.caller = null, this.method = null, this.args = null;
                }
                r(t, "");
                var e = t.prototype;
                return e.clear = function() {
                    this.caller = null, this.method = null, this.args = null;
                }, e.run = function() {
                    var t = this.caller;
                    if (t &amp;&amp; t.destroyed) return this.clear();
                    var e = this.method, i = this.args;
                    null != e &amp;&amp; (i ? e.apply(t, i) : e.call(t));
                }, t;
            }();
        }, t;
    }(), qt = function() {
        function t() {
            this._sp = null, this._one = null, this._cmds = null, this._vectorgraphArray = null, 
            this._graphicBounds = null, this.autoDestroy = !1, this._render = this._renderEmpty, 
            this._createData();
        }
        r(t, "laya.display.Graphics");
        var e = t.prototype;
        return e._createData = function() {}, e._clearData = function() {}, e._destroyData = function() {}, 
        e.destroy = function() {
            this.clear(!0), this._graphicBounds &amp;&amp; this._graphicBounds.destroy(), this._graphicBounds = null, 
            this._vectorgraphArray = null, this._sp &amp;&amp; (this._sp._renderType = 0, this._sp._setRenderType(0), 
            this._sp = null), this._destroyData();
        }, e.clear = function(t) {
            if (void 0 === t &amp;&amp; (t = !0), t) {
                var e = this._one;
                if (this._cmds) {
                    var i = 0, n = this._cmds.length;
                    for (i = 0; i &lt; n; i++) (e = this._cmds[i]).recover();
                    this._cmds.length = 0;
                } else e &amp;&amp; e.recover();
            } else this._cmds = null;
            if (this._one = null, this._render = this._renderEmpty, this._clearData(), this._sp &amp;&amp; (this._sp._renderType &amp;= -513, 
            this._sp._setRenderType(this._sp._renderType)), this._repaint(), this._vectorgraphArray) {
                for (i = 0, n = this._vectorgraphArray.length; i &lt; n; i++) M.getInstance().deleteShape(this._vectorgraphArray[i]);
                this._vectorgraphArray.length = 0;
            }
        }, e._clearBoundsCache = function() {
            this._graphicBounds &amp;&amp; this._graphicBounds.reset();
        }, e._initGraphicBounds = function() {
            this._graphicBounds || (this._graphicBounds = It.create(), this._graphicBounds._graphics = this);
        }, e._repaint = function() {
            this._clearBoundsCache(), this._sp &amp;&amp; this._sp.repaint();
        }, e._isOnlyOne = function() {
            return !this._cmds || 0 === this._cmds.length;
        }, e.getBounds = function(t) {
            return void 0 === t &amp;&amp; (t = !1), this._initGraphicBounds(), this._graphicBounds.getBounds(t);
        }, e.getBoundPoints = function(t) {
            return void 0 === t &amp;&amp; (t = !1), this._initGraphicBounds(), this._graphicBounds.getBoundPoints(t);
        }, e.drawImage = function(t, e, i, n, r) {
            if (void 0 === e &amp;&amp; (e = 0), void 0 === i &amp;&amp; (i = 0), void 0 === n &amp;&amp; (n = 0), void 0 === r &amp;&amp; (r = 0), 
            !t) return null;
            if (n || (n = t.sourceWidth), r || (r = t.sourceHeight), t.getIsReady()) {
                var s = n / t.sourceWidth, a = r / t.sourceHeight;
                if (n = t.width * s, r = t.height * a, n &lt;= 0 || r &lt;= 0) return null;
                e += t.offsetX * s, i += t.offsetY * a;
            }
            this._sp &amp;&amp; (this._sp._renderType |= 512, this._sp._setRenderType(this._sp._renderType));
            var o = d.create.call(this, t, e, i, n, r);
            return null == this._one ? (this._one = o, this._render = this._renderOneImg) : this._saveToCmd(null, o), 
            this._repaint(), o;
        }, e.drawTexture = function(t, e, i, n, r, s, a, o, h) {
            if (void 0 === e &amp;&amp; (e = 0), void 0 === i &amp;&amp; (i = 0), void 0 === n &amp;&amp; (n = 0), void 0 === r &amp;&amp; (r = 0), 
            void 0 === a &amp;&amp; (a = 1), !t || a &lt; .01) return null;
            if (!t.getIsReady()) return null;
            if (n || (n = t.sourceWidth), r || (r = t.sourceHeight), t.getIsReady()) {
                var l = n / t.sourceWidth, u = r / t.sourceHeight;
                if (n = t.width * l, r = t.height * u, n &lt;= 0 || r &lt;= 0) return null;
                e += t.offsetX * l, i += t.offsetY * u;
            }
            this._sp &amp;&amp; (this._sp._renderType |= 512, this._sp._setRenderType(this._sp._renderType));
            var c = G.create.call(this, t, e, i, n, r, s, a, o, h);
            return this._repaint(), this._saveToCmd(null, c);
        }, e.drawTextures = function(t, e) {
            return t ? this._saveToCmd(Mt._context.drawTextures, ht.create.call(this, t, e)) : null;
        }, e.drawTriangles = function(t, e, i, n, r, s, a, o, h, l) {
            return void 0 === o &amp;&amp; (o = 1), this._saveToCmd(Mt._context.drawTriangles, y.create.call(this, t, e, i, n, r, s, a, o, h, l));
        }, e.fillTexture = function(t, e, i, n, r, s, a) {
            return void 0 === n &amp;&amp; (n = 0), void 0 === r &amp;&amp; (r = 0), void 0 === s &amp;&amp; (s = "repeat"), 
            t &amp;&amp; t.getIsReady() ? this._saveToCmd(Mt._context._fillTexture, u.create.call(this, t, e, i, n, r, s, a || Yt.EMPTY, {})) : null;
        }, e._saveToCmd = function(t, e) {
            return this._sp &amp;&amp; (this._sp._renderType |= 512, this._sp._setRenderType(this._sp._renderType)), 
            null == this._one ? (this._one = e, this._render = this._renderOne) : (this._render = this._renderAll, 
            0 === (this._cmds || (this._cmds = [])).length &amp;&amp; this._cmds.push(this._one), this._cmds.push(e)), 
            this._repaint(), e;
        }, e.clipRect = function(t, e, i, n) {
            return this._saveToCmd(Mt._context.clipRect, B.create.call(this, t, e, i, n));
        }, e.fillText = function(t, e, i, n, r, s) {
            return this._saveToCmd(Mt._context.fillText, oe.create.call(this, t, e, i, n || ei.defaultFontStr(), r, s));
        }, e.fillBorderText = function(t, e, i, n, r, s, a, o) {
            return this._saveToCmd(Mt._context.fillBorderText, Ft.create.call(this, t, e, i, n || ei.defaultFontStr(), r, s, a, o));
        }, e.fillWords = function(t, e, i, n, r) {
            return this._saveToCmd(Mt._context.fillWords, rt.create.call(this, t, e, i, n || ei.defaultFontStr(), r));
        }, e.fillBorderWords = function(t, e, i, n, r, s, a) {
            return this._saveToCmd(Mt._context.fillBorderWords, ge.create.call(this, t, e, i, n || ei.defaultFontStr(), r, s, a));
        }, e.strokeText = function(t, e, i, n, r, s, a) {
            return this._saveToCmd(Mt._context.fillBorderText, Zt.create.call(this, t, e, i, n || ei.defaultFontStr(), null, r, s, a));
        }, e.alpha = function(t) {
            return this._saveToCmd(Mt._context.alpha, jt.create.call(this, t));
        }, e.transform = function(t, e, i) {
            return void 0 === e &amp;&amp; (e = 0), void 0 === i &amp;&amp; (i = 0), this._saveToCmd(Mt._context._transform, ot.create.call(this, t, e, i));
        }, e.rotate = function(t, e, i) {
            return void 0 === e &amp;&amp; (e = 0), void 0 === i &amp;&amp; (i = 0), this._saveToCmd(Mt._context._rotate, fe.create.call(this, t, e, i));
        }, e.scale = function(t, e, i, n) {
            return void 0 === i &amp;&amp; (i = 0), void 0 === n &amp;&amp; (n = 0), this._saveToCmd(Mt._context._scale, zt.create.call(this, t, e, i, n));
        }, e.translate = function(t, e) {
            return this._saveToCmd(Mt._context.translate, Xt.create.call(this, t, e));
        }, e.save = function() {
            return this._saveToCmd(Mt._context._save, Tt.create.call(this));
        }, e.restore = function() {
            return this._saveToCmd(Mt._context.restore, P.create.call(this));
        }, e.replaceText = function(t) {
            this._repaint();
            var e = this._cmds;
            if (e) {
                for (var i = e.length - 1; i &gt; -1; i--) if (this._isTextCmd(e[i])) return e[i].text = t, 
                !0;
            } else if (this._one &amp;&amp; this._isTextCmd(this._one)) return this._one.text = t, !0;
            return !1;
        }, e._isTextCmd = function(t) {
            var e = t.cmdID;
            return "FillText" == e || "StrokeText" == e || "FillBorderText" == e;
        }, e.replaceTextColor = function(t) {
            this._repaint();
            var e = this._cmds;
            if (e) for (var i = e.length - 1; i &gt; -1; i--) this._isTextCmd(e[i]) &amp;&amp; this._setTextCmdColor(e[i], t); else this._one &amp;&amp; this._isTextCmd(this._one) &amp;&amp; this._setTextCmdColor(this._one, t);
        }, e._setTextCmdColor = function(t, e) {
            switch (t.cmdID) {
              case "FillText":
              case "StrokeText":
                t.color = e;
                break;

              case "FillBorderText":
              case "FillBorderWords":
              case "FillBorderText":
                t.fillColor = e;
            }
        }, e.loadImage = function(t, e, i, n, r, s) {
            void 0 === e &amp;&amp; (e = 0), void 0 === i &amp;&amp; (i = 0), void 0 === n &amp;&amp; (n = 0), void 0 === r &amp;&amp; (r = 0);
            var a = De.getRes(t);
            a ? a.getIsReady() ? this.drawImage(a, e, i, n, r) : a.once("ready", this, this.drawImage, [ a, e, i, n, r ]) : ((a = new Ie()).load(t), 
            De.cacheRes(t, a), a.once("ready", this, this.drawImage, [ a, e, i, n, r ])), null != s &amp;&amp; (a.getIsReady() ? s.call(this._sp) : a.on("ready", this._sp, s));
        }, e._renderEmpty = function(t, e, i, n) {}, e._renderAll = function(t, e, i, n) {
            for (var r = this._cmds, s = 0, a = r.length; s &lt; a; s++) r[s].run(e, i, n);
        }, e._renderOne = function(t, e, i, n) {
            e.sprite = t, this._one.run(e, i, n);
        }, e._renderOneImg = function(t, e, i, n) {
            e.sprite = t, this._one.run(e, i, n);
        }, e.drawLine = function(t, e, i, n, r, s) {
            void 0 === s &amp;&amp; (s = 1);
            var a = s &lt; 1 || s % 2 == 0 ? 0 : .5;
            return this._saveToCmd(Mt._context._drawLine, it.create.call(this, t + a, e + a, i + a, n + a, r, s, 0));
        }, e.drawLines = function(t, e, i, n, r) {
            if (void 0 === r &amp;&amp; (r = 1), !i || i.length &lt; 4) return null;
            var s = r &lt; 1 || r % 2 == 0 ? 0 : .5;
            return this._saveToCmd(Mt._context._drawLines, ne.create.call(this, t + s, e + s, i, n, r, 0));
        }, e.drawCurves = function(t, e, i, n, r) {
            return void 0 === r &amp;&amp; (r = 1), this._saveToCmd(Mt._context.drawCurves, ae.create.call(this, t, e, i, n, r));
        }, e.drawRect = function(t, e, i, n, r, s, a) {
            void 0 === a &amp;&amp; (a = 1);
            var o = a &gt;= 1 &amp;&amp; s ? a / 2 : 0, h = s ? a : 0;
            return this._saveToCmd(Mt._context.drawRect, j.create.call(this, t + o, e + o, i - h, n - h, r, s, a));
        }, e.drawCircle = function(t, e, i, n, r, s) {
            void 0 === s &amp;&amp; (s = 1);
            var a = s &gt;= 1 &amp;&amp; r ? s / 2 : 0;
            return this._saveToCmd(Mt._context._drawCircle, lt.create.call(this, t, e, i - a, n, r, s, 0));
        }, e.drawPie = function(t, e, i, n, r, s, a, o) {
            void 0 === o &amp;&amp; (o = 1);
            var h = o &gt;= 1 &amp;&amp; a ? o / 2 : 0, l = a ? o : 0;
            return this._saveToCmd(Mt._context._drawPie, x.create.call(this, t + h, e + h, i - l, ie.toRadian(n), ie.toRadian(r), s, a, o, 0));
        }, e.drawPoly = function(t, e, i, n, r, s) {
            void 0 === s &amp;&amp; (s = 1);
            var a = !1;
            a = !(i.length &gt; 6);
            var o = s &gt;= 1 &amp;&amp; r ? s % 2 == 0 ? 0 : .5 : 0;
            return this._saveToCmd(Mt._context._drawPoly, O.create.call(this, t + o, e + o, i, n, r, s, a, 0));
        }, e.drawPath = function(t, e, i, n, r) {
            return this._saveToCmd(Mt._context._drawPath, yt.create.call(this, t, e, i, n, r));
        }, e.draw9Grid = function(t, e, i, n, r, s) {
            void 0 === e &amp;&amp; (e = 0), void 0 === i &amp;&amp; (i = 0), void 0 === n &amp;&amp; (n = 0), void 0 === r &amp;&amp; (r = 0), 
            this._saveToCmd(null, Nt.create(t, e, i, n, r, s));
        }, s(0, e, "cmds", function() {
            return this._cmds;
        }, function(t) {
            this._sp &amp;&amp; (this._sp._renderType |= 512, this._sp._setRenderType(this._sp._renderType)), 
            this._cmds = t, this._render = this._renderAll, this._repaint();
        }), t;
    }(), Qt = (function() {
        function t() {
            this.reset();
        }
        r(t, "laya.utils.HTMLChar");
        var e = t.prototype;
        e.setData = function(e, i, n, r) {
            return this.char = e, this.charNum = e.charCodeAt(0), this.x = this.y = 0, this.width = i, 
            this.height = n, this.style = r, this.isWord = !t._isWordRegExp.test(e), this;
        }, e.reset = function() {
            return this.x = this.y = this.width = this.height = 0, this.isWord = !1, this.char = null, 
            this.charNum = 0, this.style = null, this;
        }, e.recover = function() {
            U.recover("HTMLChar", this.reset());
        }, e._isChar = function() {
            return !0;
        }, e._getCSSStyle = function() {
            return this.style;
        }, t.create = function() {
            return U.getItemByClass("HTMLChar", t);
        }, t._isWordRegExp = new RegExp("[\\w.]", "");
    }(), function() {
        function t(t, e, i) {
            this.atlasID = 0, this._width = 0, this._height = 0, this._texCount = 0, this._rowInfo = null, 
            this._cells = null, this._used = 0, void 0 === t &amp;&amp; (t = 0), void 0 === e &amp;&amp; (e = 0), 
            void 0 === i &amp;&amp; (i = 0), this._cells = null, this._rowInfo = null, this.atlasID = i, 
            this._init(t, e);
        }
        r(t, "laya.webgl.text.AtlasGrid");
        var e = t.prototype;
        return e.addRect = function(t, e, i, n) {
            return !!this._get(e, i, n) &amp;&amp; (this._fill(n.x, n.y, e, i, t), this._texCount++, 
            !0);
        }, e._release = function() {
            this._cells = null, this._rowInfo = null;
        }, e._init = function(t, e) {
            return this._width = t, this._height = e, this._release(), 0 != this._width &amp;&amp; (this._cells = new Uint8Array(this._width * this._height * 3), 
            this._rowInfo = new Uint8Array(this._height), this._used = 0, this._clear(), !0);
        }, e._get = function(t, e, i) {
            if (t &gt; this._width || e &gt; this._height) return !1;
            for (var n = -1, r = -1, s = this._width, a = this._height, o = this._cells, h = 0; h &lt; a; h++) if (!(this._rowInfo[h] &lt; t)) for (var l = 0; l &lt; s; ) {
                var u = 3 * (h * s + l);
                if (0 != o[u] || o[u + 1] &lt; t || o[u + 2] &lt; e) l += o[u + 1]; else {
                    n = l, r = h;
                    for (var c = 0; c &lt; t; c++) if (o[3 * c + u + 2] &lt; e) {
                        n = -1;
                        break;
                    }
                    if (!(n &lt; 0)) return i.x = n, i.y = r, !0;
                    l += o[u + 1];
                }
            }
            return !1;
        }, e._fill = function(t, e, i, n, r) {
            var s = this._width, a = this._height;
            this._check(t + i &lt;= s &amp;&amp; e + n &lt;= a);
            for (var o = e; o &lt; n + e; ++o) {
                this._check(this._rowInfo[o] &gt;= i), this._rowInfo[o] -= i;
                for (var h = 0; h &lt; i; h++) {
                    var l = 3 * (t + o * s + h);
                    this._check(0 == this._cells[l]), this._cells[l] = r, this._cells[l + 1] = i, this._cells[l + 2] = n;
                }
            }
            if (t &gt; 0) for (o = 0; o &lt; n; ++o) {
                var u = 0;
                for (h = t - 1; h &gt;= 0 &amp;&amp; 0 == this._cells[3 * ((e + o) * s + h)]; --h, ++u) ;
                for (h = u; h &gt; 0; --h) this._cells[3 * ((e + o) * s + t - h) + 1] = h, this._check(h &gt; 0);
            }
            if (e &gt; 0) for (h = t; h &lt; t + i; ++h) {
                for (u = 0, o = e - 1; o &gt;= 0 &amp;&amp; 0 == this._cells[3 * (h + o * s)]; --o, u++) ;
                for (o = u; o &gt; 0; --o) this._cells[3 * (h + (e - o) * s) + 2] = o, this._check(o &gt; 0);
            }
            this._used += i * n / (this._width * this._height);
        }, e._check = function(t) {
            0 == t &amp;&amp; console.log("xtexMerger é”™è¯¯å•¦");
        }, e._clear = function() {
            this._texCount = 0;
            for (var t = 0; t &lt; this._height; t++) this._rowInfo[t] = this._width;
            for (var e = 0; e &lt; this._height; e++) for (var i = 0; i &lt; this._width; i++) {
                var n = 3 * (e * this._width + i);
                this._cells[n] = 0, this._cells[n + 1] = this._width - i, this._cells[n + 2] = this._width - e;
            }
        }, t;
    }()), Zt = function() {
        function t() {}
        r(t, "laya.display.cmd.StrokeTextCmd");
        var e = t.prototype;
        return e.recover = function() {
            U.recover("StrokeTextCmd", this);
        }, e.run = function(t, e, i) {
            t.strokeWord(this.text, this.x + e, this.y + i, this.font, this.color, this.lineWidth, this.textAlign);
        }, s(0, e, "cmdID", function() {
            return "StrokeText";
        }), t.create = function(e, i, n, r, s, a, o) {
            var h = U.getItemByClass("StrokeTextCmd", t);
            return h.text = e, h.x = i, h.y = n, h.font = r, h.color = s, h.lineWidth = a, h.textAlign = o, 
            h;
        }, t.ID = "StrokeText", t;
    }(), Jt = function() {
        function t() {}
        r(t, "laya.webgl.text.ICharRender");
        var e = t.prototype;
        return e.getWidth = function(t, e) {
            return 0;
        }, e.scale = function(t, e) {}, e.getCharBmp = function(t, e, i, n, r, s, a, o, h, l, u) {
            return null;
        }, s(0, e, "canvasWidth", function() {
            return 0;
        }, function(t) {}), t;
    }(), te = function() {
        function t() {}
        return r(t, "laya.utils.Ease"), t.linearNone = function(t, e, i, n) {
            return i * t / n + e;
        }, t.linearIn = function(t, e, i, n) {
            return i * t / n + e;
        }, t.linearInOut = function(t, e, i, n) {
            return i * t / n + e;
        }, t.linearOut = function(t, e, i, n) {
            return i * t / n + e;
        }, t.bounceIn = function(e, i, n, r) {
            return n - t.bounceOut(r - e, 0, n, r) + i;
        }, t.bounceInOut = function(e, i, n, r) {
            return e &lt; .5 * r ? .5 * t.bounceIn(2 * e, 0, n, r) + i : .5 * t.bounceOut(2 * e - r, 0, n, r) + .5 * n + i;
        }, t.bounceOut = function(t, e, i, n) {
            return (t /= n) &lt; 1 / 2.75 ? i * (7.5625 * t * t) + e : t &lt; 2 / 2.75 ? i * (7.5625 * (t -= 1.5 / 2.75) * t + .75) + e : t &lt; 2.5 / 2.75 ? i * (7.5625 * (t -= 2.25 / 2.75) * t + .9375) + e : i * (7.5625 * (t -= 2.625 / 2.75) * t + .984375) + e;
        }, t.backIn = function(t, e, i, n, r) {
            return void 0 === r &amp;&amp; (r = 1.70158), i * (t /= n) * t * ((r + 1) * t - r) + e;
        }, t.backInOut = function(t, e, i, n, r) {
            return void 0 === r &amp;&amp; (r = 1.70158), (t /= .5 * n) &lt; 1 ? .5 * i * (t * t * ((1 + (r *= 1.525)) * t - r)) + e : i / 2 * ((t -= 2) * t * ((1 + (r *= 1.525)) * t + r) + 2) + e;
        }, t.backOut = function(t, e, i, n, r) {
            return void 0 === r &amp;&amp; (r = 1.70158), i * ((t = t / n - 1) * t * ((r + 1) * t + r) + 1) + e;
        }, t.elasticIn = function(e, i, n, r, s, a) {
            void 0 === s &amp;&amp; (s = 0), void 0 === a &amp;&amp; (a = 0);
            var o;
            return 0 == e ? i : 1 == (e /= r) ? i + n : (a || (a = .3 * r), !s || n &gt; 0 &amp;&amp; s &lt; n || n &lt; 0 &amp;&amp; s &lt; -n ? (s = n, 
            o = a / 4) : o = a / t.PI2 * Math.asin(n / s), -s * Math.pow(2, 10 * (e -= 1)) * Math.sin((e * r - o) * t.PI2 / a) + i);
        }, t.elasticInOut = function(e, i, n, r, s, a) {
            void 0 === s &amp;&amp; (s = 0), void 0 === a &amp;&amp; (a = 0);
            var o;
            return 0 == e ? i : 2 == (e /= .5 * r) ? i + n : (a || (a = r * (.3 * 1.5)), !s || n &gt; 0 &amp;&amp; s &lt; n || n &lt; 0 &amp;&amp; s &lt; -n ? (s = n, 
            o = a / 4) : o = a / t.PI2 * Math.asin(n / s), e &lt; 1 ? s * Math.pow(2, 10 * (e -= 1)) * Math.sin((e * r - o) * t.PI2 / a) * -.5 + i : s * Math.pow(2, -10 * (e -= 1)) * Math.sin((e * r - o) * t.PI2 / a) * .5 + n + i);
        }, t.elasticOut = function(e, i, n, r, s, a) {
            void 0 === s &amp;&amp; (s = 0), void 0 === a &amp;&amp; (a = 0);
            var o;
            return 0 == e ? i : 1 == (e /= r) ? i + n : (a || (a = .3 * r), !s || n &gt; 0 &amp;&amp; s &lt; n || n &lt; 0 &amp;&amp; s &lt; -n ? (s = n, 
            o = a / 4) : o = a / t.PI2 * Math.asin(n / s), s * Math.pow(2, -10 * e) * Math.sin((e * r - o) * t.PI2 / a) + n + i);
        }, t.strongIn = function(t, e, i, n) {
            return i * (t /= n) * t * t * t * t + e;
        }, t.strongInOut = function(t, e, i, n) {
            return (t /= .5 * n) &lt; 1 ? .5 * i * t * t * t * t * t + e : .5 * i * ((t -= 2) * t * t * t * t + 2) + e;
        }, t.strongOut = function(t, e, i, n) {
            return i * ((t = t / n - 1) * t * t * t * t + 1) + e;
        }, t.sineInOut = function(t, e, i, n) {
            return .5 * -i * (Math.cos(Math.PI * t / n) - 1) + e;
        }, t.sineIn = function(e, i, n, r) {
            return -n * Math.cos(e / r * t.HALF_PI) + n + i;
        }, t.sineOut = function(e, i, n, r) {
            return n * Math.sin(e / r * t.HALF_PI) + i;
        }, t.quintIn = function(t, e, i, n) {
            return i * (t /= n) * t * t * t * t + e;
        }, t.quintInOut = function(t, e, i, n) {
            return (t /= .5 * n) &lt; 1 ? .5 * i * t * t * t * t * t + e : .5 * i * ((t -= 2) * t * t * t * t + 2) + e;
        }, t.quintOut = function(t, e, i, n) {
            return i * ((t = t / n - 1) * t * t * t * t + 1) + e;
        }, t.quartIn = function(t, e, i, n) {
            return i * (t /= n) * t * t * t + e;
        }, t.quartInOut = function(t, e, i, n) {
            return (t /= .5 * n) &lt; 1 ? .5 * i * t * t * t * t + e : .5 * -i * ((t -= 2) * t * t * t - 2) + e;
        }, t.quartOut = function(t, e, i, n) {
            return -i * ((t = t / n - 1) * t * t * t - 1) + e;
        }, t.cubicIn = function(t, e, i, n) {
            return i * (t /= n) * t * t + e;
        }, t.cubicInOut = function(t, e, i, n) {
            return (t /= .5 * n) &lt; 1 ? .5 * i * t * t * t + e : .5 * i * ((t -= 2) * t * t + 2) + e;
        }, t.cubicOut = function(t, e, i, n) {
            return i * ((t = t / n - 1) * t * t + 1) + e;
        }, t.quadIn = function(t, e, i, n) {
            return i * (t /= n) * t + e;
        }, t.quadInOut = function(t, e, i, n) {
            return (t /= .5 * n) &lt; 1 ? .5 * i * t * t + e : .5 * -i * (--t * (t - 2) - 1) + e;
        }, t.quadOut = function(t, e, i, n) {
            return -i * (t /= n) * (t - 2) + e;
        }, t.expoIn = function(t, e, i, n) {
            return 0 == t ? e : i * Math.pow(2, 10 * (t / n - 1)) + e - .001 * i;
        }, t.expoInOut = function(t, e, i, n) {
            return 0 == t ? e : t == n ? e + i : (t /= .5 * n) &lt; 1 ? .5 * i * Math.pow(2, 10 * (t - 1)) + e : .5 * i * (2 - Math.pow(2, -10 * --t)) + e;
        }, t.expoOut = function(t, e, i, n) {
            return t == n ? e + i : i * (1 - Math.pow(2, -10 * t / n)) + e;
        }, t.circIn = function(t, e, i, n) {
            return -i * (Math.sqrt(1 - (t /= n) * t) - 1) + e;
        }, t.circInOut = function(t, e, i, n) {
            return (t /= .5 * n) &lt; 1 ? .5 * -i * (Math.sqrt(1 - t * t) - 1) + e : .5 * i * (Math.sqrt(1 - (t -= 2) * t) + 1) + e;
        }, t.circOut = function(t, e, i, n) {
            return i * Math.sqrt(1 - (t = t / n - 1) * t) + e;
        }, t.HALF_PI = .5 * Math.PI, t.PI2 = 2 * Math.PI, t;
    }(), ee = (function() {
        function t() {
            this.sign = null, this.maxCount = 1e3;
        }
        r(t, "laya.utils.PoolCache");
        var e = t.prototype;
        e.getCacheList = function() {
            return U.getPoolBySign(this.sign);
        }, e.tryDispose = function(t) {
            var e;
            (e = U.getPoolBySign(this.sign)).length &gt; this.maxCount &amp;&amp; e.splice(this.maxCount, e.length - this.maxCount);
        }, t.addPoolCacheManager = function(e, i) {
            void 0 === i &amp;&amp; (i = 100);
            var n;
            (n = new t()).sign = e, n.maxCount = i, Q.regCacheByFunction(ie.bind(n.tryDispose, n), ie.bind(n.getCacheList, n));
        };
    }(), function() {
        function t() {}
        r(t, "laya.webgl.utils.MatirxArray"), t.ArrayMul = function(e, i, n) {
            if (e) if (i) for (var r = NaN, s = NaN, a = NaN, o = NaN, h = 0; h &lt; 4; h++) r = e[h], 
            s = e[h + 4], a = e[h + 8], o = e[h + 12], n[h] = r * i[0] + s * i[1] + a * i[2] + o * i[3], 
            n[h + 4] = r * i[4] + s * i[5] + a * i[6] + o * i[7], n[h + 8] = r * i[8] + s * i[9] + a * i[10] + o * i[11], 
            n[h + 12] = r * i[12] + s * i[13] + a * i[14] + o * i[15]; else t.copyArray(e, n); else t.copyArray(i, n);
        }, t.copyArray = function(t, e) {
            if (t &amp;&amp; e) for (var i = 0; i &lt; t.length; i++) e[i] = t[i];
        };
    }(), function() {
        function t() {}
        r(t, "laya.utils.Mouse"), s(1, t, "cursor", function() {
            return t._style.cursor;
        }, function(e) {
            t._style.cursor = e;
        }), t.hide = function() {
            "none" != t.cursor &amp;&amp; (t._preCursor = t.cursor, t.cursor = "none");
        }, t.show = function() {
            "none" == t.cursor &amp;&amp; (t.cursor = t._preCursor ? t._preCursor : "auto");
        }, t._preCursor = null, n(t, [ "_style", function() {
            return this._style = Dt.document.body.style;
        } ]);
    }(), function() {
        function t() {}
        return r(t, "laya.webgl.VertexArrayObject"), t;
    }()(function() {
        var e = {}, i = function t(e) {
            var i = e.gl;
            this.ext = e, this.isAlive = !0, this.hasBeenBound = !1, this.elementArrayBuffer = null, 
            this.attribs = new Array(e.maxVertexAttribs);
            for (var n = 0; n &lt; this.attribs.length; n++) {
                var r = new t.VertexAttrib(i);
                this.attribs[n] = r;
            }
            this.maxAttrib = 0;
        };
        (i.VertexAttrib = function(t) {
            this.enabled = !1, this.buffer = null, this.size = 4, this.type = t.FLOAT, this.normalized = !1, 
            this.stride = 16, this.offset = 0, this.cached = "", this.recache();
        }).prototype.recache = function() {
            this.cached = [ this.size, this.type, this.normalized, this.stride, this.offset ].join(":");
        };
        var n = function(i) {
            var n = this;
            this.gl = i, function(t) {
                var i = t.getError;
                t.getError = function() {
                    do {
                        (n = i.apply(t)) != t.NO_ERROR &amp;&amp; (e[n] = !0);
                    } while (n != t.NO_ERROR);
                    for (var n in e) if (e[n]) return delete e[n], parseInt(n);
                    return t.NO_ERROR;
                };
            }(i);
            var r = this.original = {
                getParameter: i.getParameter,
                enableVertexAttribArray: i.enableVertexAttribArray,
                disableVertexAttribArray: i.disableVertexAttribArray,
                bindBuffer: i.bindBuffer,
                getVertexAttrib: i.getVertexAttrib,
                vertexAttribPointer: i.vertexAttribPointer
            };
            i.getParameter = function(t) {
                return t == n.VERTEX_ARRAY_BINDING_OES ? n.currentVertexArrayObject == n.defaultVertexArrayObject ? null : n.currentVertexArrayObject : r.getParameter.apply(this, arguments);
            }, i.enableVertexAttribArray = function(t) {
                var e = n.currentVertexArrayObject;
                return e.maxAttrib = Math.max(e.maxAttrib, t), e.attribs[t].enabled = !0, r.enableVertexAttribArray.apply(this, arguments);
            }, i.disableVertexAttribArray = function(t) {
                var e = n.currentVertexArrayObject;
                return e.maxAttrib = Math.max(e.maxAttrib, t), e.attribs[t].enabled = !1, r.disableVertexAttribArray.apply(this, arguments);
            }, i.bindBuffer = function(t, e) {
                switch (t) {
                  case i.ARRAY_BUFFER:
                    n.currentArrayBuffer = e;
                    break;

                  case i.ELEMENT_ARRAY_BUFFER:
                    n.currentVertexArrayObject.elementArrayBuffer = e;
                }
                return r.bindBuffer.apply(this, arguments);
            }, i.getVertexAttrib = function(t, e) {
                var s = n.currentVertexArrayObject.attribs[t];
                switch (e) {
                  case i.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:
                    return s.buffer;

                  case i.VERTEX_ATTRIB_ARRAY_ENABLED:
                    return s.enabled;

                  case i.VERTEX_ATTRIB_ARRAY_SIZE:
                    return s.size;

                  case i.VERTEX_ATTRIB_ARRAY_STRIDE:
                    return s.stride;

                  case i.VERTEX_ATTRIB_ARRAY_TYPE:
                    return s.type;

                  case i.VERTEX_ATTRIB_ARRAY_NORMALIZED:
                    return s.normalized;

                  default:
                    return r.getVertexAttrib.apply(this, arguments);
                }
            }, i.vertexAttribPointer = function(t, e, i, s, a, o) {
                var h = n.currentVertexArrayObject;
                h.maxAttrib = Math.max(h.maxAttrib, t);
                var l = h.attribs[t];
                return l.buffer = n.currentArrayBuffer, l.size = e, l.type = i, l.normalized = s, 
                l.stride = a, l.offset = o, l.recache(), r.vertexAttribPointer.apply(this, arguments);
            }, i.instrumentExtension &amp;&amp; i.instrumentExtension(this, "OES_vertex_array_object"), 
            i.canvas &amp;&amp; i.canvas.addEventListener &amp;&amp; i.canvas.addEventListener("webglcontextrestored", function() {
                t.console &amp;&amp; t.console.log &amp;&amp; t.console.log("OESVertexArrayObject emulation library context restored"), 
                n.reset_();
            }, !0), this.reset_();
        };
        n.prototype.VERTEX_ARRAY_BINDING_OES = 34229, n.prototype.reset_ = function() {
            if (void 0 !== this.vertexArrayObjects) for (var t = 0; t &lt; this.vertexArrayObjects.length; ++t) this.vertexArrayObjects.isAlive = !1;
            var e = this.gl;
            this.maxVertexAttribs = e.getParameter(e.MAX_VERTEX_ATTRIBS), this.defaultVertexArrayObject = new i(this), 
            this.currentVertexArrayObject = null, this.currentArrayBuffer = null, this.vertexArrayObjects = [ this.defaultVertexArrayObject ], 
            this.bindVertexArrayOES(null);
        }, n.prototype.createVertexArrayOES = function() {
            var t = new i(this);
            return this.vertexArrayObjects.push(t), t;
        }, n.prototype.deleteVertexArrayOES = function(t) {
            t.isAlive = !1, this.vertexArrayObjects.splice(this.vertexArrayObjects.indexOf(t), 1), 
            this.currentVertexArrayObject == t &amp;&amp; this.bindVertexArrayOES(null);
        }, n.prototype.isVertexArrayOES = function(t) {
            return !!(t &amp;&amp; t instanceof i &amp;&amp; t.hasBeenBound &amp;&amp; t.ext == this);
        }, n.prototype.bindVertexArrayOES = function(i) {
            var n = this.gl;
            if (!i || i.isAlive) {
                var r = this.original, s = this.currentVertexArrayObject;
                this.currentVertexArrayObject = i || this.defaultVertexArrayObject, this.currentVertexArrayObject.hasBeenBound = !0;
                var a = this.currentVertexArrayObject;
                if (s != a) {
                    s &amp;&amp; a.elementArrayBuffer == s.elementArrayBuffer || r.bindBuffer.call(n, n.ELEMENT_ARRAY_BUFFER, a.elementArrayBuffer);
                    for (var o = this.currentArrayBuffer, h = Math.max(s ? s.maxAttrib : 0, a.maxAttrib), l = 0; l &lt;= h; l++) {
                        var u = a.attribs[l], c = s ? s.attribs[l] : null;
                        if (s &amp;&amp; u.enabled == c.enabled || (u.enabled ? r.enableVertexAttribArray.call(n, l) : r.disableVertexAttribArray.call(n, l)), 
                        u.enabled) {
                            var _ = !1;
                            s &amp;&amp; u.buffer == c.buffer || (o != u.buffer &amp;&amp; (r.bindBuffer.call(n, n.ARRAY_BUFFER, u.buffer), 
                            o = u.buffer), _ = !0), (_ || u.cached != c.cached) &amp;&amp; r.vertexAttribPointer.call(n, l, u.size, u.type, u.normalized, u.stride, u.offset);
                        }
                    }
                    this.currentArrayBuffer != o &amp;&amp; r.bindBuffer.call(n, n.ARRAY_BUFFER, this.currentArrayBuffer);
                }
            } else !function(i, n) {
                e[i] = !0, void 0 !== n &amp;&amp; function(e) {
                    t.console &amp;&amp; t.console.error &amp;&amp; t.console.error(e);
                }(n);
            }(n.INVALID_OPERATION, "bindVertexArrayOES: attempt to bind deleted arrayObject");
        }, t._setupVertexArrayObject = function(t) {
            var e = t.getSupportedExtensions;
            t.getSupportedExtensions = function() {
                var t = e.call(this) || [];
                return t.indexOf("OES_vertex_array_object") &lt; 0 &amp;&amp; t.push("OES_vertex_array_object"), 
                t;
            };
            var i = t.getExtension;
            t.getExtension = function(t) {
                return i.call(this, t) || ("OES_vertex_array_object" !== t ? null : (this.__OESVertexArrayObject || (console.log("Setup OES_vertex_array_object polyfill"), 
                this.__OESVertexArrayObject = new n(this)), this.__OESVertexArrayObject));
            };
        }, t._forceSetupVertexArrayObject = function(t) {
            var e = t.getSupportedExtensions;
            t.getSupportedExtensions = function() {
                var t = e.call(this) || [];
                return t.indexOf("OES_vertex_array_object") &lt; 0 &amp;&amp; t.push("OES_vertex_array_object"), 
                t;
            };
            var i = t.getExtension;
            t.getExtension = function(t) {
                if ("OES_vertex_array_object" === t) return this.__OESVertexArrayObject || (console.log("Setup OES_vertex_array_object polyfill"), 
                this.__OESVertexArrayObject = new n(this)), this.__OESVertexArrayObject;
                return i.call(this, t) || null;
            };
        };
    }()), function() {
        function t() {}
        return r(t, "laya.resource.WebGLRTMgr"), t.getRT = function(e, i) {
            i |= 0, (e |= 0) &gt;= 1e4 &amp;&amp; console.error("getRT error! w too big");
            var n, r = 1e4 * i + e, s = t.dict[r];
            return s &amp;&amp; s.length &gt; 0 ? (n = s.pop(), n._mgrKey = r, n) : (n = new fi(e, i, 1, -1), 
            n._mgrKey = r, n);
        }, t.releaseRT = function(e) {
            if (!(e._mgrKey &lt;= 0)) {
                var i = t.dict[e._mgrKey];
                !i &amp;&amp; (i = [], t.dict[e._mgrKey] = i), e._mgrKey = 0, i.push(e);
            }
        }, t.dict = {}, t;
    }()), ie = function() {
        function e() {}
        return r(e, "laya.utils.Utils"), e.toRadian = function(t) {
            return t * e._pi2;
        }, e.toAngle = function(t) {
            return t * e._pi;
        }, e.toHexColor = function(t) {
            if (t &lt; 0 || isNaN(t)) return null;
            for (var e = t.toString(16); e.length &lt; 6; ) e = "0" + e;
            return "#" + e;
        }, e.getGID = function() {
            return e._gid++;
        }, e.concatArray = function(t, e) {
            if (!e) return t;
            if (!t) return e;
            var i = 0, n = e.length;
            for (i = 0; i &lt; n; i++) t.push(e[i]);
            return t;
        }, e.clearArray = function(t) {
            return t ? (t.length = 0, t) : t;
        }, e.copyArray = function(t, e) {
            if (t || (t = []), !e) return t;
            t.length = e.length;
            var i = 0, n = e.length;
            for (i = 0; i &lt; n; i++) t[i] = e[i];
            return t;
        }, e.getGlobalRecByPoints = function(t, e, i, n, r) {
            var s;
            s = Yt.create().setTo(e, i), s = t.localToGlobal(s);
            var a;
            a = Yt.create().setTo(n, r), a = t.localToGlobal(a);
            var o = mt._getWrapRec([ s.x, s.y, a.x, a.y ]);
            return s.recover(), a.recover(), o;
        }, e.getGlobalPosAndScale = function(t) {
            return e.getGlobalRecByPoints(t, 0, 0, 1, 1);
        }, e.bind = function(t, e) {
            return t.bind(e);
        }, e.measureText = function(t, e) {
            return ue.measureText(t, e);
        }, e.updateOrder = function(t) {
            if (!t || t.length &lt; 2) return !1;
            for (var e, i = 1, n = 0, r = t.length, s = NaN; i &lt; r; ) {
                for (e = t[n = i], s = t[n]._zOrder; --n &gt; -1 &amp;&amp; t[n]._zOrder &gt; s; ) t[n + 1] = t[n];
                t[n + 1] = e, i++;
            }
            return !0;
        }, e.transPointList = function(t, e, i) {
            var n = 0, r = t.length;
            for (n = 0; n &lt; r; n += 2) t[n] += e, t[n + 1] += i;
        }, e.parseInt = function(t, e) {
            void 0 === e &amp;&amp; (e = 0);
            var i = Dt.window.parseInt(t, e);
            return isNaN(i) ? 0 : i;
        }, e.getFileExtension = function(t) {
            e._extReg.lastIndex = t.lastIndexOf(".");
            var i = e._extReg.exec(t);
            return i &amp;&amp; i.length &gt; 1 ? i[1].toLowerCase() : null;
        }, e.getTransformRelativeToWindow = function(t, e, n) {
            var r = i.stage, s = laya.utils.Utils.getGlobalPosAndScale(t), a = r._canvasTransform.clone(), o = a.tx, h = a.ty;
            a.rotate(-Math.PI / 180 * i.stage.canvasDegree), a.scale(i.stage.clientScaleX, i.stage.clientScaleY);
            var l = i.stage.canvasDegree % 180 != 0, u = NaN, c = NaN;
            l ? (u = n + s.y, c = e + s.x, u *= a.d, c *= a.a, 90 == i.stage.canvasDegree ? (u = o - u, 
            c += h) : (u += o, c = h - c)) : (u = e + s.x, c = n + s.y, u *= a.a, c *= a.d, 
            u += o, c += h), c += i.stage._safariOffsetY;
            var _ = NaN, f = NaN;
            return l ? (_ = a.d * s.height, f = a.a * s.width) : (_ = a.a * s.width, f = a.d * s.height), 
            {
                x: u,
                y: c,
                scaleX: _,
                scaleY: f
            };
        }, e.fitDOMElementInArea = function(t, n, r, s, a, o) {
            t._fitLayaAirInitialized || (t._fitLayaAirInitialized = !0, t.style.transformOrigin = t.style.webKittransformOrigin = "left top", 
            t.style.position = "absolute");
            var h = e.getTransformRelativeToWindow(n, r, s);
            t.style.transform = t.style.webkitTransform = "scale(" + h.scaleX + "," + h.scaleY + ") rotate(" + i.stage.canvasDegree + "deg)", 
            t.style.width = a + "px", t.style.height = o + "px", t.style.left = h.x + "px", 
            t.style.top = h.y + "px";
        }, e.isOkTextureList = function(t) {
            if (!t) return !1;
            var e, i = 0, n = t.length;
            for (i = 0; i &lt; n; i++) if (!(e = t[i]) || !e._getSource()) return !1;
            return !0;
        }, e.isOKCmdList = function(t) {
            if (!t) return !1;
            var e = 0, i = t.length;
            for (e = 0; e &lt; i; e++) t[e];
            return !0;
        }, e.getQueryString = function(e) {
            if (Dt.onMiniGame) return null;
            if (!t.location || !t.location.search) return null;
            var i = new RegExp("(^|&amp;)" + e + "=([^&amp;]*)(&amp;|$)"), n = t.location.search.substr(1).match(i);
            return null != n ? unescape(n[2]) : null;
        }, e._gid = 1, e._pi = 180 / Math.PI, e._pi2 = Math.PI / 180, e._extReg = /\.(\w+)\??/g, 
        e.parseXMLFromString = function(t) {
            var e;
            if (t = t.replace(/&gt;\s+&lt;/g, "&gt;&lt;"), (e = new DOMParser().parseFromString(t, "text/xml")).firstChild.textContent.indexOf("This page contains the following errors") &gt; -1) throw new Error(e.firstChild.firstChild.textContent);
            return e;
        }, e;
    }(), ne = (function() {
        function t() {}
        r(t, "laya.webgl.text.ArabicReshaper");
        var e = t.prototype;
        e.characterMapContains = function(e) {
            for (var i = 0; i &lt; t.charsMap.length; ++i) if (t.charsMap[i][0] === e) return !0;
            return !1;
        }, e.getCharRep = function(e) {
            for (var i = 0; i &lt; t.charsMap.length; ++i) if (t.charsMap[i][0] === e) return t.charsMap[i];
            return !1;
        }, e.getCombCharRep = function(e, i) {
            for (var n = 0; n &lt; t.combCharsMap.length; ++n) if (t.combCharsMap[n][0][0] === e &amp;&amp; t.combCharsMap[n][0][1] === i) return t.combCharsMap[n];
            return !1;
        }, e.isTransparent = function(e) {
            for (var i = 0; i &lt; t.transChars.length; ++i) if (t.transChars[i] === e) return !0;
            return !1;
        }, e.getOriginalCharsFromCode = function(e) {
            var i = 0;
            for (i = 0; i &lt; t.charsMap.length; ++i) if (t.charsMap[i].indexOf(e) &gt; -1) return String.fromCharCode(t.charsMap[i][0]);
            for (i = 0; i &lt; t.combCharsMap.length; ++i) if (t.combCharsMap[i].indexOf(e) &gt; -1) return String.fromCharCode(t.combCharsMap[i][0][0]) + String.fromCharCode(t.combCharsMap[i][0][1]);
            return String.fromCharCode(e);
        }, e.convertArabic = function(t) {
            for (var e, i, n = "", r = 0; r &lt; t.length; ++r) {
                var s = t.charCodeAt(r);
                if (this.characterMapContains(s)) {
                    for (var a = null, o = null, h = r - 1, l = r + 1; h &gt;= 0 &amp;&amp; this.isTransparent(t.charCodeAt(h)); --h) ;
                    for ((!(e = !!(a = h &gt;= 0 ? t.charCodeAt(h) : null) &amp;&amp; this.getCharRep(a)) || null == e[2] &amp;&amp; null == e[3]) &amp;&amp; (a = null); l &lt; t.length &amp;&amp; this.isTransparent(t.charCodeAt(l)); ++l) ;
                    if (o = l &lt; t.length ? t.charCodeAt(l) : null, (!(e = !!o &amp;&amp; this.getCharRep(o)) || null == e[3] &amp;&amp; null == e[4]) &amp;&amp; (o = null), 
                    1604 === s &amp;&amp; null != o &amp;&amp; (1570 === o || 1571 === o || 1573 === o || 1575 === o)) {
                        i = this.getCombCharRep(s, o), n += null != a ? String.fromCharCode(i[4]) : String.fromCharCode(i[1]), 
                        ++r;
                        continue;
                    }
                    if (e = this.getCharRep(s), null != a &amp;&amp; null != o &amp;&amp; null != e[3]) {
                        n += String.fromCharCode(e[3]);
                        continue;
                    }
                    if (null != a &amp;&amp; null != e[4]) {
                        n += String.fromCharCode(e[4]);
                        continue;
                    }
                    if (null != o &amp;&amp; null != e[2]) {
                        n += String.fromCharCode(e[2]);
                        continue;
                    }
                    n += String.fromCharCode(e[1]);
                } else n += String.fromCharCode(s);
            }
            return n;
        }, e.convertArabicBack = function(t) {
            var e = "", i = 0, n = 0;
            for (n = 0; n &lt; t.length; ++n) i = t.charCodeAt(n), e += this.getOriginalCharsFromCode(i);
            return e;
        }, n(t, [ "charsMap", function() {
            return this.charsMap = [ [ 1569, 65152, null, null, null ], [ 1570, 65153, null, null, 65154 ], [ 1571, 65155, null, null, 65156 ], [ 1572, 65157, null, null, 65158 ], [ 1573, 65159, null, null, 65160 ], [ 1574, 65161, 65163, 65164, 65162 ], [ 1575, 65165, null, null, 65166 ], [ 1576, 65167, 65169, 65170, 65168 ], [ 1577, 65171, null, null, 65172 ], [ 1578, 65173, 65175, 65176, 65174 ], [ 1579, 65177, 65179, 65180, 65178 ], [ 1580, 65181, 65183, 65184, 65182 ], [ 1581, 65185, 65187, 65188, 65186 ], [ 1582, 65189, 65191, 65192, 65190 ], [ 1583, 65193, null, null, 65194 ], [ 1584, 65195, null, null, 65196 ], [ 1585, 65197, null, null, 65198 ], [ 1586, 65199, null, null, 65200 ], [ 1587, 65201, 65203, 65204, 65202 ], [ 1588, 65205, 65207, 65208, 65206 ], [ 1589, 65209, 65211, 65212, 65210 ], [ 1590, 65213, 65215, 65216, 65214 ], [ 1591, 65217, 65219, 65220, 65218 ], [ 1592, 65221, 65223, 65224, 65222 ], [ 1593, 65225, 65227, 65228, 65226 ], [ 1594, 65229, 65231, 65232, 65230 ], [ 1600, 1600, 1600, 1600, 1600 ], [ 1601, 65233, 65235, 65236, 65234 ], [ 1602, 65237, 65239, 65240, 65238 ], [ 1603, 65241, 65243, 65244, 65242 ], [ 1604, 65245, 65247, 65248, 65246 ], [ 1605, 65249, 65251, 65252, 65250 ], [ 1606, 65253, 65255, 65256, 65254 ], [ 1607, 65257, 65259, 65260, 65258 ], [ 1608, 65261, null, null, 65262 ], [ 1609, 65263, null, null, 65264 ], [ 1610, 65265, 65267, 65268, 65266 ], [ 1662, 64342, 64344, 64345, 64343 ], [ 1740, 64508, 64510, 64511, 64509 ], [ 1670, 64378, 64380, 64381, 64379 ], [ 1705, 64398, 64400, 64401, 64399 ], [ 1711, 64402, 64404, 64405, 64403 ], [ 1688, 64394, null, null, 64395 ] ];
        }, "combCharsMap", function() {
            return this.combCharsMap = [ [ [ 1604, 1570 ], 65269, null, null, 65270 ], [ [ 1604, 1571 ], 65271, null, null, 65272 ], [ [ 1604, 1573 ], 65273, null, null, 65274 ], [ [ 1604, 1575 ], 65275, null, null, 65276 ] ];
        }, "transChars", function() {
            return this.transChars = [ 1552, 1554, 1555, 1556, 1557, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1648, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1759, 1760, 1761, 1762, 1763, 1764, 1767, 1768, 1770, 1771, 1772, 1773 ];
        } ]);
    }(), function() {
        function t() {}
        r(t, "laya.display.cmd.DrawLinesCmd");
        var e = t.prototype;
        return e.recover = function() {
            this.points = null, this.lineColor = null, U.recover("DrawLinesCmd", this);
        }, e.run = function(t, e, i) {
            t._drawLines(this.x + e, this.y + i, this.points, this.lineColor, this.lineWidth, this.vid);
        }, s(0, e, "cmdID", function() {
            return "DrawLines";
        }), t.create = function(e, i, n, r, s, a) {
            var o = U.getItemByClass("DrawLinesCmd", t);
            return o.x = e, o.y = i, o.points = n, o.lineColor = r, o.lineWidth = s, o.vid = a, 
            o;
        }, t.ID = "DrawLines", t;
    }()), re = function() {
        function t() {
            this._data = [], this._ndata = 0, this._tex = null, this._imgId = 0, this._clipid = -1, 
            this._enbale = !1, this._colorFiler = null, this._clipMatrix = new st();
        }
        r(t, "laya.webgl.text.CharSubmitCache");
        var e = t.prototype;
        return e.clear = function() {
            this._tex = null, this._imgId = -1, this._ndata = 0, this._enbale = !1, this._colorFiler = null;
        }, e.destroy = function() {
            this.clear(), this._data.length = 0, this._data = null;
        }, e.add = function(t, e, i, n, r, s) {
            this._ndata &gt; 0 &amp;&amp; (this._tex != e || this._imgId != i || this._clipid &gt;= 0 &amp;&amp; this._clipid != t._clipInfoID) &amp;&amp; this.submit(t), 
            this._clipid = t._clipInfoID, t._globalClipMatrix.copyTo(this._clipMatrix), this._tex = e, 
            this._imgId = i, this._colorFiler = t._colorFiler, this._data[this._ndata] = n, 
            this._data[this._ndata + 1] = r, this._data[this._ndata + 2] = s, this._ndata += 3;
        }, e.getPos = function() {
            return 0 == t.__nPosPool ? new Array(8) : t.__posPool[--t.__nPosPool];
        }, e.enable = function(t, e) {
            t !== this._enbale &amp;&amp; (this._enbale = t, this._enbale || this.submit(e));
        }, e.submit = function(e) {
            var i = this._ndata;
            if (i) {
                var n = e._mesh, r = e._colorFiler;
                e._colorFiler = this._colorFiler;
                var s = xe.create(e, n, X.create(1, 0));
                e._submits[e._submits._length++] = e._curSubmit = s, s.shaderValue.textureHost = this._tex, 
                s._key.other = this._imgId, e._colorFiler = r, e._copyClipInfo(s, this._clipMatrix), 
                s.clipInfoID = this._clipid;
                for (var a = 0; a &lt; i; a += 3) n.addQuad(this._data[a], this._data[a + 1], this._data[a + 2], !0), 
                t.__posPool[t.__nPosPool++] = this._data[a];
                i /= 3, s._numEle += 6 * i, n.indexNum += 6 * i, n.vertNum += 4 * i, e._drawCount += i, 
                this._ndata = 0, A.loopCount % 100 == 0 &amp;&amp; (this._data.length = 0);
            }
        }, t.__posPool = [], t.__nPosPool = 0, t;
    }(), se = function() {
        function t() {}
        return r(t, "Config"), t.animationInterval = 50, t.isAntialias = !1, t.isAlpha = !1, 
        t.premultipliedAlpha = !0, t.isStencil = !0, t.preserveDrawingBuffer = !1, t.webGL2D_MeshAllocMaxMem = !0, 
        t.is2DPixelArtGame = !1, t.useWebGL2 = !1, t.useRetinalCanvas = !1, t;
    }(), ae = function() {
        function t() {}
        r(t, "laya.display.cmd.DrawCurvesCmd");
        var e = t.prototype;
        return e.recover = function() {
            this.points = null, this.lineColor = null, U.recover("DrawCurvesCmd", this);
        }, e.run = function(t, e, i) {
            t.drawCurves(this.x + e, this.y + i, this.points, this.lineColor, this.lineWidth);
        }, s(0, e, "cmdID", function() {
            return "DrawCurves";
        }), t.create = function(e, i, n, r, s) {
            var a = U.getItemByClass("DrawCurvesCmd", t);
            return a.x = e, a.y = i, a.points = n, a.lineColor = r, a.lineWidth = s, a;
        }, t.ID = "DrawCurves", t;
    }(), oe = function() {
        function t() {
            this._textIsWorldText = !1, this._fontColor = 4294967295, this._strokeColor = 0, 
            this._nTexAlign = 0, this._fontObj = t._defFontObj;
        }
        r(t, "laya.display.cmd.FillTextCmd");
        var e = t.prototype;
        return e.recover = function() {
            U.recover("FillTextCmd", this);
        }, e.run = function(t, e, n) {
            i.stage.isGlobalRepaint() &amp;&amp; this._textIsWorldText &amp;&amp; this._text.cleanCache(), this._textIsWorldText ? t._fast_filltext(this._text, this.x + e, this.y + n, this._fontObj, this._color, null, 0, this._nTexAlign, 0) : t.drawText(this._text, this.x + e, this.y + n, this._font, this._color, this._textAlign);
        }, s(0, e, "text", function() {
            return this._text;
        }, function(t) {
            this._text = t, this._textIsWorldText = t instanceof laya.utils.WordText, this._textIsWorldText &amp;&amp; this._text.cleanCache();
        }), s(0, e, "cmdID", function() {
            return "FillText";
        }), s(0, e, "color", function() {
            return this._color;
        }, function(t) {
            this._color = t, this._fontColor = o.create(t).numColor, this._textIsWorldText &amp;&amp; this._text.cleanCache();
        }), s(0, e, "font", function() {
            return this._font;
        }, function(t) {
            this._font = t, this._fontObj = de.Parse(t), this._textIsWorldText &amp;&amp; this._text.cleanCache();
        }), s(0, e, "textAlign", function() {
            return this._textAlign;
        }, function(t) {
            switch (this._textAlign = t, t) {
              case "center":
                this._nTexAlign = ut.ENUM_TEXTALIGN_CENTER;
                break;

              case "right":
                this._nTexAlign = ut.ENUM_TEXTALIGN_RIGHT;
                break;

              default:
                this._nTexAlign = ut.ENUM_TEXTALIGN_DEFAULT;
            }
            this._textIsWorldText &amp;&amp; this._text.cleanCache();
        }), t.create = function(e, i, n, r, s, a) {
            var o = U.getItemByClass("FillTextCmd", t);
            return o.text = e, o._textIsWorldText = e instanceof laya.utils.WordText, o.x = i, 
            o.y = n, o.font = r, o.color = s, o.textAlign = a, o;
        }, t.ID = "FillText", n(t, [ "_defFontObj", function() {
            return this._defFontObj = new de(null);
        } ]), t;
    }(), he = (function() {
        r(function() {}, "laya.webgl.shader.ShaderValue");
    }(), function() {
        function t() {}
        r(t, "laya.events.KeyLocation"), t.STANDARD = 0, t.LEFT = 1, t.RIGHT = 2, t.NUM_PAD = 3;
    }(), function() {
        function t() {
            this._clipInfoID = -1, this.incache = !1, this._globalClipMatrix = new st(), this._clipRect = new mt();
        }
        r(t, "laya.webgl.canvas.save.SaveClipRect");
        var e = t.prototype;
        return i.imps(e, {
            "laya.webgl.canvas.save.ISaveData": !0
        }), e.isSaveMark = function() {
            return !1;
        }, e.restore = function(e) {
            this._globalClipMatrix.copyTo(e._globalClipMatrix), this._clipRect.clone(e._clipRect), 
            e._clipInfoID = this._clipInfoID, t.POOL[t.POOL._length++] = this, e._clipInCache = this.incache;
        }, t.save = function(e) {
            if (131072 != (131072 &amp; e._saveMark._saveuse)) {
                e._saveMark._saveuse |= 131072;
                var i = t.POOL, n = i._length &gt; 0 ? i[--i._length] : new t();
                e._globalClipMatrix.copyTo(n._globalClipMatrix), e._clipRect.clone(n._clipRect), 
                n._clipInfoID = e._clipInfoID, n.incache = e._clipInCache;
                var r = e._save;
                r[r._length++] = n;
            }
        }, t.POOL = h._createArray(), t;
    }()), le = function() {
        function t() {}
        r(t, "laya.filters.GlowFilterGLRender");
        var e = t.prototype;
        return e.setShaderInfo = function(t, e, i, n) {
            t.defines.add(n.type);
            var r = t;
            r.u_blurInfo1 = n._sv_blurInfo1;
            var s = n._sv_blurInfo2;
            s[0] = e, s[1] = i, r.u_blurInfo2 = s, r.u_color = n.getColor();
        }, e.render = function(t, e, i, n, r) {
            var s = i, a = n, o = X.create(1, 0);
            this.setShaderInfo(o, s, a, r);
            var h = X.create(1, 0), l = st.TEMP.identity();
            e.drawTarget(t, 0, 0, s, a, l, o), e.drawTarget(t, 0, 0, s, a, l, h);
        }, t;
    }(), ue = function() {
        function t() {}
        return r(t, "laya.utils.RunDriver"), t.createShaderCondition = function(t) {
            var e = "(function() {return " + t + ";})";
            return i._runScript(e);
        }, t.fontMap = [], t.measureText = function(e, i) {
            var n = t.hanzi.test(e);
            if (n &amp;&amp; t.fontMap[i]) return t.fontMap[i];
            var r = Dt.context;
            r.font = i;
            var s = r.measureText(e);
            return n &amp;&amp; (t.fontMap[i] = s), s;
        }, t.drawToCanvas = function(t, e, i, n, r, s) {
            r -= t.x, s -= t.y, r |= 0, s |= 0, i |= 0, n |= 0;
            var a = new ut();
            a.size(i, n), a.asBitmap = !0, a._targets.start(), I.renders[e]._fun(t, a, r, s), 
            a.flush(), a._targets.end(), a._targets.restore();
            var o = a._targets.getData(0, 0, i, n);
            a.destroy();
            for (var h = new ImageData(i, n), l = 4 * i, u = (new Uint8Array(l), h.data), c = n - 1, _ = c * l, f = 0; c &gt;= 0; c--) u.set(o.subarray(f, f + l), _), 
            _ -= l, f += l;
            var d = new si(!0);
            return d.size(i, n), d.getContext("2d").putImageData(h, 0, 0), d;
        }, t.drawToTexture = function(t, e, i, n, r, s) {
            r -= t.x, s -= t.y, r |= 0, s |= 0, i |= 0, n |= 0;
            var a = new ut();
            a.size(i, n), a.asBitmap = !0, a._targets.start(), I.renders[e]._fun(t, a, r, s), 
            a.flush(), a._targets.end(), a._targets.restore();
            var o = new Ie(a._targets, Ie.INV_UV);
            return a.destroy(!0), o;
        }, t.changeWebGLSize = function(t, e) {
            wt.onStageResize(t, e);
        }, t.clear = function(t) {
            ut.set2DRenderConfig(), dt.worldScissorTest &amp;&amp; wt.mainContext.disable(3089);
            var e = Mt.context, n = 0 == e._submits._length || se.preserveDrawingBuffer ? o.create(t).arrColor : i.stage._wgColor;
            n ? e.clearBG(n[0], n[1], n[2], n[3]) : e.clearBG(0, 0, 0, 0), dt.clear();
        }, t.enableNative = null, n(t, [ "hanzi", function() {
            return this.hanzi = new RegExp("^[ä¸€-é¾¥]$");
        } ]), t;
    }(), ce = function() {
        function t() {}
        return r(t, "laya.net.AtlasInfoManager"), t.enable = function(e, n) {
            i.loader.load(e, g.create(null, t._onInfoLoaded, [ n ]), null, "json");
        }, t._onInfoLoaded = function(e, i) {
            var n, r, s, a = 0, o = 0;
            for (n in i) for (r = (s = i[n])[0], o = (s = s[1]).length, a = 0; a &lt; o; a++) t._fileLoadDic[r + s[a]] = n;
            e &amp;&amp; e.run();
        }, t.getFileLoadPath = function(e) {
            return t._fileLoadDic[e] || e;
        }, t._fileLoadDic = {}, t;
    }(), _e = function() {
        function t() {}
        return r(t, "laya.webgl.canvas.BlendMode"), t._init_ = function(e) {
            t.fns = [ t.BlendNormal, t.BlendAdd, t.BlendMultiply, t.BlendScreen, t.BlendOverlay, t.BlendLight, t.BlendMask, t.BlendDestinationOut ], 
            t.targetFns = [ t.BlendNormalTarget, t.BlendAddTarget, t.BlendMultiplyTarget, t.BlendScreenTarget, t.BlendOverlayTarget, t.BlendLightTarget, t.BlendMask, t.BlendDestinationOut ];
        }, t.BlendNormal = function(t) {
            nt.setBlendFunc(t, 1, 771);
        }, t.BlendAdd = function(t) {
            nt.setBlendFunc(t, 1, 772);
        }, t.BlendMultiply = function(t) {
            nt.setBlendFunc(t, 774, 771);
        }, t.BlendScreen = function(t) {
            nt.setBlendFunc(t, 1, 1);
        }, t.BlendOverlay = function(t) {
            nt.setBlendFunc(t, 1, 769);
        }, t.BlendLight = function(t) {
            nt.setBlendFunc(t, 1, 1);
        }, t.BlendNormalTarget = function(t) {
            nt.setBlendFunc(t, 1, 771);
        }, t.BlendAddTarget = function(t) {
            nt.setBlendFunc(t, 1, 772);
        }, t.BlendMultiplyTarget = function(t) {
            nt.setBlendFunc(t, 774, 771);
        }, t.BlendScreenTarget = function(t) {
            nt.setBlendFunc(t, 1, 1);
        }, t.BlendOverlayTarget = function(t) {
            nt.setBlendFunc(t, 1, 769);
        }, t.BlendLightTarget = function(t) {
            nt.setBlendFunc(t, 1, 1);
        }, t.BlendMask = function(t) {
            nt.setBlendFunc(t, 0, 770);
        }, t.BlendDestinationOut = function(t) {
            nt.setBlendFunc(t, 0, 0);
        }, t.activeBlendFunction = null, t.NAMES = [ "normal", "add", "multiply", "screen", "overlay", "light", "mask", "destination-out" ], 
        t.TOINT = {
            normal: 0,
            add: 1,
            multiply: 2,
            screen: 3,
            overlay: 4,
            light: 5,
            mask: 6,
            "destination-out": 7,
            lighter: 1
        }, t.NORMAL = "normal", t.ADD = "add", t.MULTIPLY = "multiply", t.SCREEN = "screen", 
        t.OVERLAY = "overlay", t.LIGHT = "light", t.MASK = "mask", t.DESTINATIONOUT = "destination-out", 
        t.LIGHTER = "lighter", t.fns = [], t.targetFns = [], t;
    }(), fe = function() {
        function t() {}
        r(t, "laya.display.cmd.RotateCmd");
        var e = t.prototype;
        return e.recover = function() {
            U.recover("RotateCmd", this);
        }, e.run = function(t, e, i) {
            t._rotate(this.angle, this.pivotX + e, this.pivotY + i);
        }, s(0, e, "cmdID", function() {
            return "Rotate";
        }), t.create = function(e, i, n) {
            var r = U.getItemByClass("RotateCmd", t);
            return r.angle = e, r.pivotX = i, r.pivotY = n, r;
        }, t.ID = "Rotate", t;
    }(), de = function() {
        function t(e) {
            this._font = "14px Arial", this._family = "Arial", this._size = 14, this._italic = !1, 
            this._bold = !1, this._id = t._gfontID++, this.setFont(e || this._font);
        }
        return r(t, "laya.utils.FontInfo"), t.prototype.setFont = function(t) {
            this._font = t;
            var e = t.split(" "), i = e.length;
            if (i &lt; 2) 1 == i &amp;&amp; e[0].indexOf("px") &gt; 0 &amp;&amp; (this._size = parseInt(e[0])); else {
                for (var n = -1, r = 0; r &lt; i; r++) if (e[r].indexOf("px") &gt; 0 || e[r].indexOf("pt") &gt; 0) {
                    n = r, this._size = parseInt(e[r]), this._size &lt;= 0 &amp;&amp; (console.error("font parse error:" + t), 
                    this._size = 14);
                    break;
                }
                var s = n + 1, a = e[s];
                for (s++; s &lt; i; s++) a += " " + e[s];
                this._family = a.split(",")[0], this._italic = e.indexOf("italic") &gt;= 0, this._bold = e.indexOf("bold") &gt;= 0;
            }
        }, t.Parse = function(e) {
            if (e === t._lastFont) return t._lastFontInfo;
            var i = t._cache[e];
            return i || (i = t._cache[e] = new t(e)), t._lastFont = e, t._lastFontInfo = i, 
            i;
        }, t.EMPTY = new t(null), t._cache = {}, t._gfontID = 0, t._lastFont = "", t._lastFontInfo = null, 
        t;
    }(), pe = function() {
        function t(t, e, i, n) {
            function r(t) {
                t = t.replace(s._clearCR, "");
                var e = [], i = new Gt(e);
                return s._compileToTree(i, t.split("\n"), 0, e, n), i;
            }
            this._clearCR = new RegExp("\r", "g");
            var s = this, a = Dt.now();
            this._VS = r(t), this._PS = r(e), this._nameMap = i, Dt.now() - a &gt; 2 &amp;&amp; console.log("ShaderCompile use time:" + (Dt.now() - a) + "  size:" + t.length + "/" + e.length);
        }
        r(t, "laya.webgl.utils.ShaderCompile");
        var e = t.prototype;
        return e._compileToTree = function(e, i, n, r, s) {
            var a, o, h, l, u, c, _, f = 0, d = 0, p = 0, m = 0;
            for (d = n; d &lt; i.length; d++) if (!((h = i[d]).length &lt; 1) &amp;&amp; 0 !== (f = h.indexOf("//"))) {
                if (f &gt;= 0 &amp;&amp; (h = h.substr(0, f)), a = _ || new Gt(r), _ = null, a.text = h, a.noCompile = !0, 
                (f = h.indexOf("#")) &gt;= 0) {
                    for (l = "#", m = f + 1, p = h.length; m &lt; p; m++) {
                        var g = h.charAt(m);
                        if (" " === g || "\t" === g || "?" === g) break;
                        l += g;
                    }
                    switch (a.name = l, l) {
                      case "#ifdef":
                      case "#ifndef":
                        if (a.src = h, a.noCompile = null != h.match(/[!&amp;|()=&lt;&gt;]/), a.noCompile ? console.log("function():Boolean{return " + h.substr(f + a.name.length) + "}") : (c = h.replace(/^\s*/, "").split(/\s+/), 
                        a.setCondition(c[1], "#ifdef" === l ? 1 : 2), a.text = "//" + a.text), a.setParent(e), 
                        e = a, s) for (c = h.substr(m).split(t._splitToWordExps3), m = 0; m &lt; c.length; m++) (h = c[m]).length &amp;&amp; (s[h] = !0);
                        continue;

                      case "#if":
                        if (a.src = h, a.noCompile = !0, a.setParent(e), e = a, s) for (c = h.substr(m).split(t._splitToWordExps3), 
                        m = 0; m &lt; c.length; m++) (h = c[m]).length &amp;&amp; "defined" != h &amp;&amp; (s[h] = !0);
                        continue;

                      case "#else":
                        a.src = h, o = (e = e.parent).childs[e.childs.length - 1], a.noCompile = o.noCompile, 
                        a.noCompile || (a.condition = o.condition, a.conditionType = 1 == o.conditionType ? 2 : 1, 
                        a.text = "//" + a.text + " " + o.text + " " + a.conditionType), a.setParent(e), 
                        e = a;
                        continue;

                      case "#endif":
                        o = (e = e.parent).childs[e.childs.length - 1], a.noCompile = o.noCompile, a.noCompile || (a.text = "//" + a.text), 
                        a.setParent(e);
                        continue;

                      case "#include":
                        c = t.splitToWords(h, null);
                        var v = t.includes[c[1]];
                        if (!v) throw "ShaderCompile error no this include file:" + c[1];
                        if ((f = c[0].indexOf("?")) &lt; 0) {
                            a.setParent(e), h = v.getWith("with" == c[2] ? c[3] : null), this._compileToTree(a, h.split("\n"), 0, r, s), 
                            a.text = "";
                            continue;
                        }
                        a.setCondition(c[0].substr(f + 1), 1), a.text = v.getWith("with" == c[2] ? c[3] : null);
                        break;

                      case "#import":
                        u = (c = t.splitToWords(h, null))[1], r.push({
                            node: a,
                            file: t.includes[u],
                            ofs: a.text.length
                        });
                        continue;
                    }
                } else {
                    if ((o = e.childs[e.childs.length - 1]) &amp;&amp; !o.name) {
                        r.length &gt; 0 &amp;&amp; t.splitToWords(h, o), _ = a, o.text += "\n" + h;
                        continue;
                    }
                    r.length &gt; 0 &amp;&amp; t.splitToWords(h, a);
                }
                a.setParent(e);
            }
        }, e.createShader = function(t, e, i, n) {
            var r = {}, s = "";
            if (t) for (var a in t) s += "#define " + a + "\n", r[a] = !0;
            var o = this._VS.toscript(r, []), h = this._PS.toscript(r, []);
            return (i || ni.create)(s + o.join("\n"), s + h.join("\n"), e, this._nameMap, n);
        }, t._parseOne = function(e, i, n, r, s, a) {
            var o = {
                type: t.shaderParamsMap[n[r + 1]],
                name: n[r + 2],
                size: isNaN(parseInt(n[r + 3])) ? 1 : parseInt(n[r + 3])
            };
            return a &amp;&amp; ("attribute" == s ? e.push(o) : i.push(o)), ":" == n[r + 3] &amp;&amp; (o.type = n[r + 4], 
            r += 2), r += 2;
        }, t.addInclude = function(e, i) {
            if (!i || 0 === i.length) throw new Error("add shader include file err:" + e);
            if (t.includes[e]) throw new Error("add shader include file err, has add:" + e);
            t.includes[e] = new W(i);
        }, t.preGetParams = function(e, i) {
            var n = [ e, i ], r = {}, s = [], a = [], o = {}, h = [];
            r.attributes = s, r.uniforms = a, r.defines = o;
            for (var l = 0, u = 0, c = 0; c &lt; 2; c++) {
                n[c] = n[c].replace(t._removeAnnotation, "");
                var _, f = n[c].match(t._reg);
                for (l = 0, u = f.length; l &lt; u; l++) {
                    var d = f[l];
                    if ("attribute" == d || "uniform" == d) l = t._parseOne(s, a, f, l, d, !0); else {
                        if ("#define" == d) {
                            h[d = f[++l]] = 1;
                            continue;
                        }
                        if ("#ifdef" == d) for (o[_ = f[++l]] = o[_] || [], l++; l &lt; u; l++) if ("attribute" == (d = f[l]) || "uniform" == d) l = t._parseOne(s, a, f, l, d, h[_]); else if ("#else" == d) for (l++; l &lt; u; l++) if ("attribute" == (d = f[l]) || "uniform" == d) l = t._parseOne(s, a, f, l, d, !h[_]); else if ("#endif" == d) break;
                    }
                }
            }
            return r;
        }, t.splitToWords = function(t, e) {
            for (var i, n, r = [], s = -1, a = 0, o = t.length; a &lt; o; a++) if (i = t.charAt(a), 
            " \t=+-*/&amp;%!&lt;&gt;()'\",;".indexOf(i) &gt;= 0) {
                if (s &gt;= 0 &amp;&amp; a - s &gt; 1 &amp;&amp; (n = t.substr(s, a - s), r.push(n)), '"' == i || "'" == i) {
                    var h = t.indexOf(i, a + 1);
                    if (h &lt; 0) throw "Sharder err:" + t;
                    r.push(t.substr(a + 1, h - a - 1)), a = h, s = -1;
                    continue;
                }
                "(" == i &amp;&amp; e &amp;&amp; r.length &gt; 0 &amp;&amp; (n = r[r.length - 1] + ";", "vec4;main;".indexOf(n) &lt; 0 &amp;&amp; (e.useFuns += n)), 
                s = -1;
            } else s &lt; 0 &amp;&amp; (s = a);
            return s &lt; o &amp;&amp; o - s &gt; 1 &amp;&amp; (n = t.substr(s, o - s), r.push(n)), r;
        }, t.IFDEF_NO = 0, t.IFDEF_YES = 1, t.IFDEF_ELSE = 2, t.IFDEF_PARENT = 3, t._removeAnnotation = new RegExp("(/\\*([^*]|[\\r\\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+/)|(//.*)", "g"), 
        t._reg = new RegExp("(\".*\")|('.*')|([#\\w\\*-\\.+/()=&lt;&gt;{}\\\\]+)|([,;:\\\\])", "g"), 
        t._splitToWordExps = new RegExp("[(\".*\")]+|[('.*')]+|([ \\t=\\+\\-*/&amp;%!&lt;&gt;!%(),;])", "g"), 
        t.includes = {}, n(t, [ "shaderParamsMap", function() {
            return this.shaderParamsMap = {
                float: 5126,
                int: 5124,
                bool: 35670,
                vec2: 35664,
                vec3: 35665,
                vec4: 35666,
                ivec2: 35667,
                ivec3: 35668,
                ivec4: 35669,
                bvec2: 35671,
                bvec3: 35672,
                bvec4: 35673,
                mat2: 35674,
                mat3: 35675,
                mat4: 35676,
                sampler2D: 35678,
                samplerCube: 35680
            };
        }, "_splitToWordExps3", function() {
            return this._splitToWordExps3 = new RegExp("[ \\t=\\+\\-*/&amp;%!&lt;&gt;!%(),;\\|]", "g");
        } ]), t;
    }(), me = function() {
        function t() {
            this.json = null;
        }
        return r(t, "laya.components.Prefab"), t.prototype.create = function() {
            return this.json ? pt.createByData(null, this.json) : null;
        }, t;
    }(), ge = function() {
        function t() {}
        r(t, "laya.display.cmd.FillBorderWordsCmd");
        var e = t.prototype;
        return e.recover = function() {
            this.words = null, U.recover("FillBorderWordsCmd", this);
        }, e.run = function(t, e, i) {
            t.fillBorderWords(this.words, this.x + e, this.y + i, this.font, this.fillColor, this.borderColor, this.lineWidth);
        }, s(0, e, "cmdID", function() {
            return "FillBorderWords";
        }), t.create = function(e, i, n, r, s, a, o) {
            var h = U.getItemByClass("FillBorderWordsCmd", t);
            return h.words = e, h.x = i, h.y = n, h.font = r, h.fillColor = s, h.borderColor = a, 
            h.lineWidth = o, h;
        }, t.ID = "FillBorderWords", t;
    }(), ve = function() {
        function t() {
            this._hit = null, this._unHit = null;
        }
        r(t, "laya.utils.HitArea");
        var e = t.prototype;
        return e.contains = function(e, i) {
            return !!t._isHitGraphic(e, i, this.hit) &amp;&amp; !t._isHitGraphic(e, i, this.unHit);
        }, s(0, e, "hit", function() {
            return this._hit || (this._hit = new qt()), this._hit;
        }, function(t) {
            this._hit = t;
        }), s(0, e, "unHit", function() {
            return this._unHit || (this._unHit = new qt()), this._unHit;
        }, function(t) {
            this._unHit = t;
        }), t._isHitGraphic = function(e, i, n) {
            if (!n) return !1;
            var r = n.cmds;
            if (!r &amp;&amp; n._one &amp;&amp; ((r = t._cmds).length = 1, r[0] = n._one), !r) return !1;
            var s = 0, a = 0;
            a = r.length;
            var o;
            for (s = 0; s &lt; a; s++) if (o = r[s]) {
                switch (o.cmdID) {
                  case "Translate":
                    e -= o.tx, i -= o.ty;
                }
                if (t._isHitCmd(e, i, o)) return !0;
            }
            return !1;
        }, t._isHitCmd = function(e, i, n) {
            if (!n) return !1;
            var r = !1;
            switch (n.cmdID) {
              case "DrawRect":
                t._rect.setTo(n.x, n.y, n.width, n.height), r = t._rect.contains(e, i);
                break;

              case "DrawCircle":
                r = (e -= n.x) * e + (i -= n.y) * i &lt; n.radius * n.radius;
                break;

              case "DrawPoly":
                e -= n.x, i -= n.y, r = t._ptInPolygon(e, i, n.points);
            }
            return r;
        }, t._ptInPolygon = function(e, i, n) {
            var r = t._ptPoint;
            r.setTo(e, i);
            var s = 0, a = NaN, o = NaN, h = NaN, l = NaN, u = 0;
            u = n.length;
            for (var c = 0; c &lt; u; c += 2) a = n[c], o = n[c + 1], h = n[(c + 2) % u], l = n[(c + 3) % u], 
            o == l || r.y &lt; Math.min(o, l) || r.y &gt;= Math.max(o, l) || (r.y - o) * (h - a) / (l - o) + a &gt; r.x &amp;&amp; s++;
            return s % 2 == 1;
        }, t._cmds = [], n(t, [ "_rect", function() {
            return this._rect = new mt();
        }, "_ptPoint", function() {
            return this._ptPoint = new Yt();
        } ]), t;
    }(), ye = function() {
        function t() {}
        return r(t, "laya.media.SoundManager"), s(1, t, "useAudioMusic", function() {
            return t._useAudioMusic;
        }, function(e) {
            t._useAudioMusic = e, t._musicClass = e ? we : null;
        }), s(1, t, "autoStopMusic", function() {
            return t._autoStopMusic;
        }, function(e) {
            i.stage.off("blur", null, t._stageOnBlur), i.stage.off("focus", null, t._stageOnFocus), 
            i.stage.off("visibilitychange", null, t._visibilityChange), t._autoStopMusic = e, 
            e &amp;&amp; (i.stage.on("blur", null, t._stageOnBlur), i.stage.on("focus", null, t._stageOnFocus), 
            i.stage.on("visibilitychange", null, t._visibilityChange));
        }), s(1, t, "muted", function() {
            return t._muted;
        }, function(e) {
            e != t._muted &amp;&amp; (e &amp;&amp; t.stopAllSound(), t.musicMuted = e, t._muted = e);
        }), s(1, t, "musicMuted", function() {
            return t._musicMuted;
        }, function(e) {
            e != t._musicMuted &amp;&amp; (e ? (t._bgMusic &amp;&amp; t._musicChannel &amp;&amp; !t._musicChannel.isStopped ? Mt.isConchApp ? t._musicChannel._audio &amp;&amp; (t._musicChannel._audio.muted = !0) : t._musicChannel.pause() : t._musicChannel = null, 
            t._musicMuted = e) : (t._musicMuted = e, t._bgMusic &amp;&amp; t._musicChannel &amp;&amp; (Mt.isConchApp ? t._musicChannel._audio &amp;&amp; (t._musicChannel._audio.muted = !1) : t._musicChannel.resume())));
        }), s(1, t, "soundMuted", function() {
            return t._soundMuted;
        }, function(e) {
            t._soundMuted = e;
        }), t.__init__ = function() {
            var e = Dt.window, i = !!(e.AudioContext || e.webkitAudioContext || e.mozAudioContext);
            return i &amp;&amp; Fe.initWebAudio(), t._soundClass = i ? Fe : we, we._initMusicAudio(), 
            t._musicClass = we, i;
        }, t.addChannel = function(e) {
            t._channels.indexOf(e) &gt;= 0 || t._channels.push(e);
        }, t.removeChannel = function(e) {
            var i = 0;
            for (i = t._channels.length - 1; i &gt;= 0; i--) t._channels[i] == e &amp;&amp; t._channels.splice(i, 1);
        }, t.disposeSoundLater = function(e) {
            t._lastSoundUsedTimeDic[e] = Dt.now(), t._isCheckingDispose || (t._isCheckingDispose = !0, 
            i.timer.loop(5e3, null, t._checkDisposeSound));
        }, t._checkDisposeSound = function() {
            var e, n = Dt.now(), r = !1;
            for (e in t._lastSoundUsedTimeDic) n - t._lastSoundUsedTimeDic[e] &gt; 3e4 ? (delete t._lastSoundUsedTimeDic[e], 
            t.disposeSoundIfNotUsed(e)) : r = !0;
            r || (t._isCheckingDispose = !1, i.timer.clear(null, t._checkDisposeSound));
        }, t.disposeSoundIfNotUsed = function(e) {
            var i = 0;
            for (i = t._channels.length - 1; i &gt;= 0; i--) if (t._channels[i].url == e) return;
            t.destroySound(e);
        }, t._visibilityChange = function() {
            i.stage.isVisibility ? t._stageOnFocus() : t._stageOnBlur();
        }, t._stageOnBlur = function() {
            t._isActive = !1, t._musicChannel &amp;&amp; (t._musicChannel.isStopped || (t._blurPaused = !0, 
            t._musicChannel.pause())), t.stopAllSound(), i.stage.once("mousedown", null, t._stageOnFocus);
        }, t._recoverWebAudio = function() {
            Fe.ctx &amp;&amp; "running" != Fe.ctx.state &amp;&amp; Fe.ctx.resume &amp;&amp; Fe.ctx.resume();
        }, t._stageOnFocus = function() {
            t._isActive = !0, t._recoverWebAudio(), i.stage.off("mousedown", null, t._stageOnFocus), 
            t._blurPaused &amp;&amp; t._musicChannel &amp;&amp; t._musicChannel.isStopped &amp;&amp; (t._blurPaused = !1, 
            t._musicChannel.resume());
        }, t.playSound = function(e, n, r, s, a) {
            if (void 0 === n &amp;&amp; (n = 1), void 0 === a &amp;&amp; (a = 0), !t._isActive || !e) return null;
            if (t._muted) return null;
            if (t._recoverWebAudio(), (e = q.formatURL(e)) == t._bgMusic) {
                if (t._musicMuted) return null;
            } else {
                if (Mt.isConchApp) {
                    var o = ie.getFileExtension(e);
                    if ("wav" != o &amp;&amp; "ogg" != o) return alert("The sound only supports wav or ogg format,for optimal performance reason,please refer to the official website document."), 
                    null;
                }
                if (t._soundMuted) return null;
            }
            var h;
            Dt.onMiniGame || (h = i.loader.getRes(e)), s || (s = t._soundClass), h || ((h = new s()).load(e), 
            Dt.onMiniGame || De.cacheRes(e, h));
            var l;
            return (l = h.play(a, n)) ? (l.url = e, l.volume = e == t._bgMusic ? t.musicVolume : t.soundVolume, 
            l.completeHandler = r, l) : null;
        }, t.destroySound = function(t) {
            var e = i.loader.getRes(t);
            e &amp;&amp; (De.clearRes(t), e.dispose());
        }, t.playMusic = function(e, i, n, r) {
            return void 0 === i &amp;&amp; (i = 0), void 0 === r &amp;&amp; (r = 0), e = q.formatURL(e), t._bgMusic = e, 
            t._musicChannel &amp;&amp; t._musicChannel.stop(), t._musicChannel = t.playSound(e, i, n, t._musicClass, r);
        }, t.stopSound = function(e) {
            e = q.formatURL(e);
            var i, n = 0;
            for (n = t._channels.length - 1; n &gt;= 0; n--) (i = t._channels[n]).url == e &amp;&amp; i.stop();
        }, t.stopAll = function() {
            t._bgMusic = null;
            var e = 0;
            for (e = t._channels.length - 1; e &gt;= 0; e--) t._channels[e].stop();
        }, t.stopAllSound = function() {
            var e, i = 0;
            for (i = t._channels.length - 1; i &gt;= 0; i--) (e = t._channels[i]).url != t._bgMusic &amp;&amp; e.stop();
        }, t.stopMusic = function() {
            t._musicChannel &amp;&amp; t._musicChannel.stop(), t._bgMusic = null;
        }, t.setSoundVolume = function(e, i) {
            if (i) i = q.formatURL(i), t._setVolume(i, e); else {
                t.soundVolume = e;
                var n, r = 0;
                for (r = t._channels.length - 1; r &gt;= 0; r--) (n = t._channels[r]).url != t._bgMusic &amp;&amp; (n.volume = e);
            }
        }, t.setMusicVolume = function(e) {
            t.musicVolume = e, t._setVolume(t._bgMusic, e);
        }, t._setVolume = function(e, i) {
            e = q.formatURL(e);
            var n, r = 0;
            for (r = t._channels.length - 1; r &gt;= 0; r--) (n = t._channels[r]).url == e &amp;&amp; (n.volume = i);
        }, t.musicVolume = 1, t.soundVolume = 1, t.playbackRate = 1, t._useAudioMusic = !0, 
        t._muted = !1, t._soundMuted = !1, t._musicMuted = !1, t._bgMusic = null, t._musicChannel = null, 
        t._channels = [], t._autoStopMusic = !1, t._blurPaused = !1, t._isActive = !0, t._soundClass = null, 
        t._musicClass = null, t._lastSoundUsedTimeDic = {}, t._isCheckingDispose = !1, t.autoReleaseSound = !0, 
        t;
    }(), xe = function(t) {
        function e(t) {
            void 0 === t &amp;&amp; (t = 1e4), e.__super.call(this, t);
        }
        r(e, "laya.webgl.submit.SubmitTexture", l);
        var i = e.prototype;
        return i.clone = function(t, i, n) {
            var r = e._poolSize ? e.POOL[--e._poolSize] : new e();
            return this._cloneInit(r, t, i, n), r;
        }, i.releaseRender = function() {
            --this._ref &lt; 1 &amp;&amp; (e.POOL[e._poolSize++] = this, this.shaderValue.release(), this._mesh = null, 
            this._parent &amp;&amp; (this._parent.releaseRender(), this._parent = null));
        }, i.renderSubmit = function() {
            if (0 === this._numEle) return 1;
            var t = this.shaderValue.textureHost;
            if (t) {
                var e = t ? t._getSource() : null;
                if (!e) return 1;
            }
            var i = wt.mainContext;
            this._mesh.useMesh(i);
            var n = l.preRender, r = l.preRender._key;
            return 0 === this._key.blendShader &amp;&amp; this._key.submitType === r.submitType &amp;&amp; this._key.blendShader === r.blendShader &amp;&amp; Ke.activeShader &amp;&amp; l.preRender.clipInfoID == this.clipInfoID &amp;&amp; n.shaderValue.defines._value === this.shaderValue.defines._value &amp;&amp; 0 == (this.shaderValue.defines._value &amp; Re.NOOPTMASK) ? Ke.activeShader.uploadTexture2D(e) : (_e.activeBlendFunction !== this._blendFn &amp;&amp; (nt.setBlend(i, !0), 
            this._blendFn(i), _e.activeBlendFunction = this._blendFn), this.shaderValue.texture = e, 
            this.shaderValue.upload()), i.drawElements(4, this._numEle, 5123, this._startIdx), 
            A.renderBatches++, A.trianglesFaces += this._numEle / 3, 1;
        }, e.create = function(t, i, n) {
            var r = e._poolSize ? e.POOL[--e._poolSize] : new e(10016);
            r._mesh = i, r._key.clear(), r._key.submitType = 2, r._ref = 1, r._startIdx = i.indexNum * _t.BYTES_PIDX, 
            r._numEle = 0;
            var s = t._nBlendType;
            if (r._key.blendShader = s, r._blendFn = t._targets ? _e.targetFns[s] : _e.fns[s], 
            r.shaderValue = n, t._colorFiler) {
                var a = t._colorFiler;
                n.defines.add(a.type), n.colorMat = a._mat, n.colorAlpha = a._alpha;
            }
            return r;
        }, e._poolSize = 0, e.POOL = [], e;
    }(), Te = function(t) {
        function e(t) {
            e.__super.call(this), t || (t = this._copyMatrix(e.IDENTITY_MATRIX)), this._mat = new Float32Array(16), 
            this._alpha = new Float32Array(4), this.setByMatrix(t);
        }
        r(e, "laya.filters.ColorFilter", c);
        var a = e.prototype;
        return i.imps(a, {
            "laya.filters.IFilter": !0
        }), a.gray = function() {
            return this.setByMatrix(e.GRAY_MATRIX);
        }, a.color = function(t, e, i, n) {
            return void 0 === t &amp;&amp; (t = 0), void 0 === e &amp;&amp; (e = 0), void 0 === i &amp;&amp; (i = 0), 
            void 0 === n &amp;&amp; (n = 1), this.setByMatrix([ 1, 0, 0, 0, t, 0, 1, 0, 0, e, 0, 0, 1, 0, i, 0, 0, 0, 1, n ]);
        }, a.setColor = function(t) {
            var e = o.create(t).arrColor, i = [ 0, 0, 0, 0, 256 * e[0], 0, 0, 0, 0, 256 * e[1], 0, 0, 0, 0, 256 * e[2], 0, 0, 0, 1, 0 ];
            return this.setByMatrix(i);
        }, a.setByMatrix = function(t) {
            this._matrix != t &amp;&amp; this._copyMatrix(t);
            for (var e = 0, i = 0, n = 0; n &lt; 20; n++) n % 5 != 4 ? this._mat[e++] = t[n] : this._alpha[i++] = t[n];
            return this;
        }, a.adjustColor = function(t, e, i, n) {
            return this.adjustHue(n), this.adjustContrast(e), this.adjustBrightness(t), this.adjustSaturation(i), 
            this;
        }, a.adjustBrightness = function(t) {
            return 0 == (t = this._clampValue(t, 100)) || isNaN(t) ? this : this._multiplyMatrix([ 1, 0, 0, 0, t, 0, 1, 0, 0, t, 0, 0, 1, 0, t, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1 ]);
        }, a.adjustContrast = function(t) {
            if (0 == (t = this._clampValue(t, 100)) || isNaN(t)) return this;
            var i = NaN, n = (i = t &lt; 0 ? 127 + t / 100 * 127 : 127 * (i = 0 == (i = t % 1) ? e.DELTA_INDEX[t] : e.DELTA_INDEX[t &lt;&lt; 0] * (1 - i) + e.DELTA_INDEX[1 + (t &lt;&lt; 0)] * i) + 127) / 127, r = .5 * (127 - i);
            return this._multiplyMatrix([ n, 0, 0, 0, r, 0, n, 0, 0, r, 0, 0, n, 0, r, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1 ]);
        }, a.adjustSaturation = function(t) {
            if (0 == (t = this._clampValue(t, 100)) || isNaN(t)) return this;
            var e = 1 + (t &gt; 0 ? 3 * t / 100 : t / 100), i = 1 - e, n = .3086 * i, r = .6094 * i, s = .082 * i;
            return this._multiplyMatrix([ n + e, r, s, 0, 0, n, r + e, s, 0, 0, n, r, s + e, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1 ]);
        }, a.adjustHue = function(t) {
            if (0 == (t = this._clampValue(t, 180) / 180 * Math.PI) || isNaN(t)) return this;
            var e = Math.cos(t), i = Math.sin(t);
            return this._multiplyMatrix([ .213 + .787 * e + -.213 * i, .715 + -.715 * e + -.715 * i, .072 + -.072 * e + .928 * i, 0, 0, .213 + -.213 * e + .143 * i, .715 + e * (1 - .715) + .14 * i, .072 + -.072 * e + -.283 * i, 0, 0, .213 + -.213 * e + -.787 * i, .715 + -.715 * e + .715 * i, .072 + .928 * e + .072 * i, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1 ]);
        }, a.reset = function() {
            return this.setByMatrix(this._copyMatrix(e.IDENTITY_MATRIX));
        }, a._multiplyMatrix = function(t) {
            var e = [];
            this._matrix = this._fixMatrix(this._matrix);
            for (var i = 0; i &lt; 5; i++) {
                for (var n = 0; n &lt; 5; n++) e[n] = this._matrix[n + 5 * i];
                for (n = 0; n &lt; 5; n++) {
                    for (var r = 0, s = 0; s &lt; 5; s++) r += t[n + 5 * s] * e[s];
                    this._matrix[n + 5 * i] = r;
                }
            }
            return this.setByMatrix(this._matrix);
        }, a._clampValue = function(t, e) {
            return Math.min(e, Math.max(-e, t));
        }, a._fixMatrix = function(t) {
            return null == t ? e.IDENTITY_MATRIX : (t.length &lt; 25 ? t = t.slice(0, t.length).concat(e.IDENTITY_MATRIX.slice(t.length, 25)) : t.length &gt; 25 &amp;&amp; (t = t.slice(0, 25)), 
            t);
        }, a._copyMatrix = function(t) {
            this._matrix || (this._matrix = []);
            for (var e = 0; e &lt; 25; e++) this._matrix[e] = t[e];
            return this._matrix;
        }, s(0, a, "type", function() {
            return 32;
        }), e.LENGTH = 25, n(e, [ "DELTA_INDEX", function() {
            return this.DELTA_INDEX = [ 0, .01, .02, .04, .05, .06, .07, .08, .1, .11, .12, .14, .15, .16, .17, .18, .2, .21, .22, .24, .25, .27, .28, .3, .32, .34, .36, .38, .4, .42, .44, .46, .48, .5, .53, .56, .59, .62, .65, .68, .71, .74, .77, .8, .83, .86, .89, .92, .95, .98, 1, 1.06, 1.12, 1.18, 1.24, 1.3, 1.36, 1.42, 1.48, 1.54, 1.6, 1.66, 1.72, 1.78, 1.84, 1.9, 1.96, 2, 2.12, 2.25, 2.37, 2.5, 2.62, 2.75, 2.87, 3, 3.2, 3.4, 3.6, 3.8, 4, 4.3, 4.7, 4.9, 5, 5.5, 6, 6.5, 6.8, 7, 7.3, 7.5, 7.8, 8, 8.4, 8.7, 9, 9.4, 9.6, 9.8, 10 ];
        }, "GRAY_MATRIX", function() {
            return this.GRAY_MATRIX = [ .3086, .6094, .082, 0, 0, .3086, .6094, .082, 0, 0, .3086, .6094, .082, 0, 0, 0, 0, 0, 1, 0 ];
        }, "IDENTITY_MATRIX", function() {
            return this.IDENTITY_MATRIX = [ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1 ];
        } ]), e;
    }(), be = function(t) {
        function e() {
            this._matrix = new st(), this._matrix4 = _t.defaultMatrix4.concat(), e.__super.call(this, 1e4), 
            this.shaderValue = new X(0, 0);
        }
        r(e, "laya.webgl.submit.SubmitCanvas", l);
        var i = e.prototype;
        return i.renderSubmit = function() {
            var t = dt.worldAlpha, e = dt.worldMatrix4, i = dt.worldMatrix, n = dt.worldFilters, r = dt.worldShaderDefines, s = this.shaderValue, a = this._matrix, o = this._matrix4, h = st.TEMP;
            return st.mul(a, i, h), o[0] = h.a, o[1] = h.b, o[4] = h.c, o[5] = h.d, o[12] = h.tx, 
            o[13] = h.ty, dt.worldMatrix = h.clone(), dt.worldMatrix4 = o, dt.worldAlpha = dt.worldAlpha * s.alpha, 
            s.filters &amp;&amp; s.filters.length &amp;&amp; (dt.worldFilters = s.filters, dt.worldShaderDefines = s.defines), 
            this.canv.flushsubmit(), dt.worldAlpha = t, dt.worldMatrix4 = e, dt.worldMatrix.destroy(), 
            dt.worldMatrix = i, dt.worldFilters = n, dt.worldShaderDefines = r, 1;
        }, i.releaseRender = function() {
            if (--this._ref &lt; 1) {
                var t = e.POOL;
                this._mesh = null, t[t._length++] = this;
            }
        }, i.clone = function(t, e, i) {
            return null;
        }, i.getRenderType = function() {
            return 10003;
        }, e.create = function(t, i, n) {
            var r = e.POOL._length ? e.POOL[--e.POOL._length] : new e();
            r.canv = t, r._ref = 1, r._numEle = 0;
            var s = r.shaderValue;
            return s.alpha = i, s.defines.setValue(0), n &amp;&amp; n.length &amp;&amp; s.setFilters(n), r;
        }, e.POOL = [], e.__init$ = function() {
            e.POOL._length = 0;
        }, e;
    }(), we = (function(t) {
        function e() {
            e.__super.call(this);
        }
        r(e, "laya.components.Script", p);
        var n = e.prototype;
        n._onAwake = function() {
            this.onAwake(), this.onStart !== laya.components.Script.prototype.onStart &amp;&amp; i.startTimer.callLater(this, this.onStart);
        }, n._onEnable = function() {
            var t = laya.components.Script.prototype;
            this.onTriggerEnter !== t.onTriggerEnter &amp;&amp; this.owner.on("triggerenter", this, this.onTriggerEnter), 
            this.onTriggerStay !== t.onTriggerStay &amp;&amp; this.owner.on("triggerstay", this, this.onTriggerStay), 
            this.onTriggerExit !== t.onTriggerExit &amp;&amp; this.owner.on("triggerexit", this, this.onTriggerExit), 
            this.onMouseDown !== t.onMouseDown &amp;&amp; this.owner.on("mousedown", this, this.onMouseDown), 
            this.onMouseUp !== t.onMouseUp &amp;&amp; this.owner.on("mouseup", this, this.onMouseUp), 
            this.onClick !== t.onClick &amp;&amp; this.owner.on("click", this, this.onClick), this.onStageMouseDown !== t.onStageMouseDown &amp;&amp; i.stage.on("mousedown", this, this.onStageMouseDown), 
            this.onStageMouseUp !== t.onStageMouseUp &amp;&amp; i.stage.on("mouseup", this, this.onStageMouseUp), 
            this.onStageClick !== t.onStageClick &amp;&amp; i.stage.on("click", this, this.onStageClick), 
            this.onStageMouseMove !== t.onStageMouseMove &amp;&amp; i.stage.on("mousemove", this, this.onStageMouseMove), 
            this.onDoubleClick !== t.onDoubleClick &amp;&amp; this.owner.on("doubleclick", this, this.onDoubleClick), 
            this.onRightClick !== t.onRightClick &amp;&amp; this.owner.on("rightclick", this, this.onRightClick), 
            this.onMouseMove !== t.onMouseMove &amp;&amp; this.owner.on("mousemove", this, this.onMouseMove), 
            this.onMouseOver !== t.onMouseOver &amp;&amp; this.owner.on("mouseover", this, this.onMouseOver), 
            this.onMouseOut !== t.onMouseOut &amp;&amp; this.owner.on("mouseout", this, this.onMouseOut), 
            this.onKeyDown !== t.onKeyDown &amp;&amp; i.stage.on("keydown", this, this.onKeyDown), this.onKeyPress !== t.onKeyPress &amp;&amp; i.stage.on("keypress", this, this.onKeyPress), 
            this.onKeyUp !== t.onKeyUp &amp;&amp; i.stage.on("keyup", this, this.onKeyUp), this.onUpdate !== t.onUpdate &amp;&amp; i.updateTimer.frameLoop(1, this, this.onUpdate), 
            this.onLateUpdate !== t.onLateUpdate &amp;&amp; i.lateTimer.frameLoop(1, this, this.onLateUpdate), 
            this.onPreRender !== t.onPreRender &amp;&amp; i.lateTimer.frameLoop(1, this, this.onPreRender);
        }, n._onDisable = function() {
            this.owner.offAllCaller(this), i.stage.offAllCaller(this), i.startTimer.clearAll(this), 
            i.updateTimer.clearAll(this), i.lateTimer.clearAll(this);
        }, n._isScript = function() {
            return !0;
        }, n._onDestroy = function() {
            this.onDestroy();
        }, n.onAwake = function() {}, n.onEnable = function() {}, n.onStart = function() {}, 
        n.onTriggerEnter = function(t, e, i) {}, n.onTriggerStay = function(t, e, i) {}, 
        n.onTriggerExit = function(t, e, i) {}, n.onMouseDown = function(t) {}, n.onMouseUp = function(t) {}, 
        n.onClick = function(t) {}, n.onStageMouseDown = function(t) {}, n.onStageMouseUp = function(t) {}, 
        n.onStageClick = function(t) {}, n.onStageMouseMove = function(t) {}, n.onDoubleClick = function(t) {}, 
        n.onRightClick = function(t) {}, n.onMouseMove = function(t) {}, n.onMouseOver = function(t) {}, 
        n.onMouseOut = function(t) {}, n.onKeyDown = function(t) {}, n.onKeyPress = function(t) {}, 
        n.onKeyUp = function(t) {}, n.onUpdate = function() {}, n.onLateUpdate = function() {}, 
        n.onPreRender = function() {}, n.onPostRender = function() {}, n.onDisable = function() {}, 
        n.onDestroy = function() {}, s(0, n, "isSingleton", function() {
            return !1;
        });
    }(), function(t) {
        function e() {
            this.url = null, this.audio = null, this.loaded = !1, e.__super.call(this);
        }
        r(e, "laya.media.h5audio.AudioSound", m);
        var i = e.prototype;
        return i.dispose = function() {
            var t = e._audioCache[this.url];
            U.clearBySign("audio:" + this.url), t &amp;&amp; (Mt.isConchApp || (t.src = ""), delete e._audioCache[this.url]);
        }, i.load = function(t) {
            function i() {
                r(), a.loaded = !0, a.event("complete");
            }
            function n() {
                s.load = null, r(), a.event("error");
            }
            function r() {
                s.removeEventListener("canplaythrough", i), s.removeEventListener("error", n);
            }
            t = q.formatURL(t), this.url = t;
            var s;
            if (t == ye._bgMusic ? (e._initMusicAudio(), (s = e._musicAudio).src != t &amp;&amp; (e._audioCache[s.src] = null, 
            s = null)) : s = e._audioCache[t], s &amp;&amp; s.readyState &gt;= 2) this.event("complete"); else {
                s || (t == ye._bgMusic ? (e._initMusicAudio(), s = e._musicAudio) : s = Dt.createElement("audio"), 
                e._audioCache[t] = s, s.src = t), s.addEventListener("canplaythrough", i), s.addEventListener("error", n);
                var a = this;
                this.audio = s, s.load ? s.load() : n();
            }
        }, i.play = function(t, i) {
            if (void 0 === t &amp;&amp; (t = 0), void 0 === i &amp;&amp; (i = 0), !this.url) return null;
            var n;
            if (!(n = this.url == ye._bgMusic ? e._musicAudio : e._audioCache[this.url])) return null;
            var r;
            r = U.getItem("audio:" + this.url), Mt.isConchApp ? r || ((r = Dt.createElement("audio")).src = this.url) : this.url == ye._bgMusic ? (e._initMusicAudio(), 
            (r = e._musicAudio).src = this.url) : r = r || n.cloneNode(!0);
            var s = new Je(r);
            return s.url = this.url, s.loops = i, s.startTime = t, s.play(), ye.addChannel(s), 
            s;
        }, s(0, i, "duration", function() {
            var t;
            return (t = e._audioCache[this.url]) ? t.duration : 0;
        }), e._initMusicAudio = function() {
            e._musicAudio || (e._musicAudio || (e._musicAudio = Dt.createElement("audio")), 
            Mt.isConchApp || Dt.document.addEventListener("mousedown", e._makeMusicOK));
        }, e._makeMusicOK = function() {
            Dt.document.removeEventListener("mousedown", e._makeMusicOK), e._musicAudio.src ? e._musicAudio.play() : (e._musicAudio.src = "", 
            e._musicAudio.load());
        }, e._audioCache = {}, e._musicAudio = null, e;
    }()), Ce = (function(t) {
        function e() {
            e.__super.call(this);
        }
        r(e, "laya.media.Sound", m);
        var i = e.prototype;
        i.load = function(t) {}, i.play = function(t, e) {
            return void 0 === t &amp;&amp; (t = 0), void 0 === e &amp;&amp; (e = 0), null;
        }, i.dispose = function() {}, s(0, i, "duration", function() {
            return 0;
        });
    }(), function(t) {
        function e(t) {
            e.__super.call(this, 116, 4 * t * 116, 4), this.canReuse = !0, this.setAttributes(laya.webgl.utils.MeshParticle2D._fixattriInfo), 
            this.createQuadIB(t), this._quadNum = t;
        }
        r(e, "laya.webgl.utils.MeshParticle2D", b);
        var i = e.prototype;
        i.setMaxParticleNum = function(t) {
            this._vb._resizeBuffer(4 * t * 116, !1), this.createQuadIB(t);
        }, i.releaseMesh = function() {
            this._vb.setByteLength(0), this.vertNum = 0, this.indexNum = 0, laya.webgl.utils.MeshParticle2D._POOL.push(this);
        }, i.destroy = function() {
            this._ib.destroy(), this._vb.destroy(), this._vb.deleteBuffer();
        }, e.getAMesh = function(t) {
            if (laya.webgl.utils.MeshParticle2D._POOL.length) {
                var i = laya.webgl.utils.MeshParticle2D._POOL.pop();
                return i.setMaxParticleNum(t), i;
            }
            return new e(t);
        }, e.const_stride = 116, e._POOL = [], n(e, [ "_fixattriInfo", function() {
            return this._fixattriInfo = [ 5126, 4, 0, 5126, 3, 16, 5126, 3, 28, 5126, 4, 40, 5126, 4, 56, 5126, 3, 72, 5126, 2, 84, 5126, 4, 92, 5126, 1, 108, 5126, 1, 112 ];
        } ]);
    }(), function(t) {
        function e() {
            this._bits = 0, this._parent = null, this.name = "", this.destroyed = !1, this._conchData = null, 
            this._components = null, this._activeChangeScripts = null, this._scene = null, e.__super.call(this), 
            this._children = e.ARRAY_EMPTY, this._extUIChild = e.ARRAY_EMPTY, this.createGLBuffer();
        }
        r(e, "laya.display.Node", m);
        var n = e.prototype;
        return n.createGLBuffer = function() {}, n._setBit = function(t, e) {
            16 === t &amp;&amp; this._getBit(t) != e &amp;&amp; this._updateDisplayedInstage(), e ? this._bits |= t : this._bits &amp;= ~t;
        }, n._getBit = function(t) {
            return 0 != (this._bits &amp; t);
        }, n._setUpNoticeChain = function() {
            this._getBit(16) &amp;&amp; this._setBitUp(16);
        }, n._setBitUp = function(t) {
            var e = this;
            for (e._setBit(t, !0), e = e._parent; e; ) {
                if (e._getBit(t)) return;
                e._setBit(t, !0), e = e._parent;
            }
        }, n.on = function(t, e, i, n) {
            return "display" !== t &amp;&amp; "undisplay" !== t || this._getBit(16) || this._setBitUp(16), 
            this._createListener(t, e, i, n, !1);
        }, n.once = function(t, e, i, n) {
            return "display" !== t &amp;&amp; "undisplay" !== t || this._getBit(16) || this._setBitUp(16), 
            this._createListener(t, e, i, n, !0);
        }, n.destroy = function(t) {
            void 0 === t &amp;&amp; (t = !0), this.destroyed = !0, this._destroyAllComponent(), this._parent &amp;&amp; this._parent.removeChild(this), 
            this._children &amp;&amp; (t ? this.destroyChildren() : this.removeChildren()), this.onDestroy(), 
            this._children = null, this.offAll();
        }, n.onDestroy = function() {}, n.destroyChildren = function() {
            if (this._children) for (var t = 0, e = this._children.length; t &lt; e; t++) this._children[0].destroy(!0);
        }, n.addChild = function(t) {
            if (!t || this.destroyed || t === this) return t;
            if (t._zOrder &amp;&amp; this._setBit(32, !0), t._parent === this) {
                var i = this.getChildIndex(t);
                i !== this._children.length - 1 &amp;&amp; (this._children.splice(i, 1), this._children.push(t), 
                this._childChanged());
            } else t._parent &amp;&amp; t._parent.removeChild(t), this._children === e.ARRAY_EMPTY &amp;&amp; (this._children = []), 
            this._children.push(t), t._setParent(this), this._childChanged();
            return t;
        }, n.addInputChild = function(t) {
            if (this._extUIChild == e.ARRAY_EMPTY) this._extUIChild = [ t ]; else {
                if (this._extUIChild.indexOf(t) &gt;= 0) return null;
                this._extUIChild.push(t);
            }
            return null;
        }, n.removeInputChild = function(t) {
            var e = this._extUIChild.indexOf(t);
            e &gt;= 0 &amp;&amp; this._extUIChild.splice(e, 1);
        }, n.addChildren = function(t) {
            for (var e = arguments, i = 0, n = e.length; i &lt; n; ) this.addChild(e[i++]);
        }, n.addChildAt = function(t, i) {
            if (!t || this.destroyed || t === this) return t;
            if (t._zOrder &amp;&amp; this._setBit(32, !0), i &gt;= 0 &amp;&amp; i &lt;= this._children.length) {
                if (t._parent === this) {
                    var n = this.getChildIndex(t);
                    this._children.splice(n, 1), this._children.splice(i, 0, t), this._childChanged();
                } else t._parent &amp;&amp; t._parent.removeChild(t), this._children === e.ARRAY_EMPTY &amp;&amp; (this._children = []), 
                this._children.splice(i, 0, t), t._setParent(this);
                return t;
            }
            throw new Error("appendChildAt:The index is out of bounds");
        }, n.getChildIndex = function(t) {
            return this._children.indexOf(t);
        }, n.getChildByName = function(t) {
            var e = this._children;
            if (e) for (var i = 0, n = e.length; i &lt; n; i++) {
                var r = e[i];
                if (r.name === t) return r;
            }
            return null;
        }, n.getChildAt = function(t) {
            return this._children[t] || null;
        }, n.setChildIndex = function(t, e) {
            var i = this._children;
            if (e &lt; 0 || e &gt;= i.length) throw new Error("setChildIndex:The index is out of bounds.");
            var n = this.getChildIndex(t);
            if (n &lt; 0) throw new Error("setChildIndex:node is must child of this object.");
            return i.splice(n, 1), i.splice(e, 0, t), this._childChanged(), t;
        }, n._childChanged = function(t) {}, n.removeChild = function(t) {
            if (!this._children) return t;
            var e = this._children.indexOf(t);
            return this.removeChildAt(e);
        }, n.removeSelf = function() {
            return this._parent &amp;&amp; this._parent.removeChild(this), this;
        }, n.removeChildByName = function(t) {
            var e = this.getChildByName(t);
            return e &amp;&amp; this.removeChild(e), e;
        }, n.removeChildAt = function(t) {
            var e = this.getChildAt(t);
            return e &amp;&amp; (this._children.splice(t, 1), e._setParent(null)), e;
        }, n.removeChildren = function(t, i) {
            if (void 0 === t &amp;&amp; (t = 0), void 0 === i &amp;&amp; (i = 2147483647), this._children &amp;&amp; this._children.length &gt; 0) {
                var n = this._children;
                if (0 === t &amp;&amp; i &gt;= n.length - 1) {
                    var r = n;
                    this._children = e.ARRAY_EMPTY;
                } else r = n.splice(t, i - t);
                for (var s = 0, a = r.length; s &lt; a; s++) r[s]._setParent(null);
            }
            return this;
        }, n.replaceChild = function(t, e) {
            var i = this._children.indexOf(e);
            return i &gt; -1 ? (this._children.splice(i, 1, t), e._setParent(null), t._setParent(this), 
            t) : null;
        }, n._setParent = function(t) {
            this._parent !== t &amp;&amp; (t ? (this._parent = t, this._onAdded(), this.event("added"), 
            this._getBit(16) &amp;&amp; (this._setUpNoticeChain(), t.displayedInStage &amp;&amp; this._displayChild(this, !0)), 
            t._childChanged(this)) : (this._onRemoved(), this.event("removed"), this._parent._childChanged(), 
            this._getBit(16) &amp;&amp; this._displayChild(this, !1), this._parent = t));
        }, n._updateDisplayedInstage = function() {
            var t;
            t = this;
            for (var e = i.stage, n = !1; t; ) {
                if (t._getBit(16)) {
                    n = t._getBit(128);
                    break;
                }
                if (t === e || t._getBit(128)) {
                    n = !0;
                    break;
                }
                t = t._parent;
            }
            this._setBit(128, n);
        }, n._setDisplay = function(t) {
            this._getBit(128) !== t &amp;&amp; (this._setBit(128, t), t ? this.event("display") : this.event("undisplay"));
        }, n._displayChild = function(t, e) {
            var i = t._children;
            if (i) for (var n = 0, r = i.length; n &lt; r; n++) {
                var s = i[n];
                s._getBit(16) &amp;&amp; (s._children.length &gt; 0 ? this._displayChild(s, e) : s._setDisplay(e));
            }
            t._setDisplay(e);
        }, n.contains = function(t) {
            if (t === this) return !0;
            for (;t; ) {
                if (t._parent === this) return !0;
                t = t._parent;
            }
            return !1;
        }, n.timerLoop = function(t, e, n, r, s, a) {
            void 0 === s &amp;&amp; (s = !0), void 0 === a &amp;&amp; (a = !1), (this.scene ? this.scene.timer : i.timer).loop(t, e, n, r, s, a);
        }, n.timerOnce = function(t, e, n, r, s) {
            void 0 === s &amp;&amp; (s = !0), (this.scene ? this.scene.timer : i.timer)._create(!1, !1, t, e, n, r, s);
        }, n.frameLoop = function(t, e, n, r, s) {
            void 0 === s &amp;&amp; (s = !0), (this.scene ? this.scene.timer : i.timer)._create(!0, !0, t, e, n, r, s);
        }, n.frameOnce = function(t, e, n, r, s) {
            void 0 === s &amp;&amp; (s = !0), (this.scene ? this.scene.timer : i.timer)._create(!0, !1, t, e, n, r, s);
        }, n.clearTimer = function(t, e) {
            (this.scene ? this.scene.timer : i.timer).clear(t, e);
        }, n.callLater = function(t, e) {
            (this.scene ? this.scene.timer : i.timer).callLater(this, t, e);
        }, n.runCallLater = function(t) {
            (this.scene ? this.scene.timer : i.timer).runCallLater(this, t);
        }, n._onActive = function() {
            A.spriteCount++;
        }, n._onInActive = function() {
            A.spriteCount--;
        }, n._onActiveInScene = function() {}, n._onInActiveInScene = function() {}, n._parse = function(t, e) {}, 
        n._setBelongScene = function(t) {
            if (!this._scene) {
                if (this._scene = t, this._components) for (var e = 0, i = this._components.length; e &lt; i; e++) this._components[e]._setActiveInScene(!0);
                for (this._onActiveInScene(), e = 0, i = this._children.length; e &lt; i; e++) this._children[e]._setBelongScene(t);
            }
        }, n._setUnBelongScene = function() {
            if (this._scene !== this) {
                if (this._onInActiveInScene(), this._components) for (var t = 0, e = this._components.length; t &lt; e; t++) this._components[t]._setActiveInScene(!1);
                for (this._scene = null, t = 0, e = this._children.length; t &lt; e; t++) this._children[t]._setUnBelongScene();
            }
        }, n.onAwake = function() {}, n.onEnable = function() {}, n._processActive = function() {
            this._activeChangeScripts || (this._activeChangeScripts = []), this._activeHierarchy(this._activeChangeScripts), 
            this._activeScripts();
        }, n._activeHierarchy = function(t) {
            if (this._setBit(2, !0), this._components) for (var e = 0, i = this._components.length; e &lt; i; e++) {
                var n = this._components[e];
                n._setActive(!0), n._isScript() &amp;&amp; n._enabled &amp;&amp; t.push(n);
            }
            for (this._onActive(), e = 0, i = this._children.length; e &lt; i; e++) {
                var r = this._children[e];
                !r._getBit(1) &amp;&amp; r._activeHierarchy(t);
            }
            this._getBit(4) || (this._setBit(4, !0), this.onAwake()), this.onEnable();
        }, n._activeScripts = function() {
            for (var t = 0, e = this._activeChangeScripts.length; t &lt; e; t++) this._activeChangeScripts[t].onEnable();
            this._activeChangeScripts.length = 0;
        }, n._processInActive = function() {
            this._activeChangeScripts || (this._activeChangeScripts = []), this._inActiveHierarchy(this._activeChangeScripts), 
            this._inActiveScripts();
        }, n._inActiveHierarchy = function(t) {
            if (this._onInActive(), this._components) for (var e = 0, i = this._components.length; e &lt; i; e++) {
                var n = this._components[e];
                n._setActive(!1), n._isScript() &amp;&amp; n._enabled &amp;&amp; t.push(n);
            }
            for (this._setBit(2, !1), e = 0, i = this._children.length; e &lt; i; e++) {
                var r = this._children[e];
                r &amp;&amp; !r._getBit(1) &amp;&amp; r._inActiveHierarchy(t);
            }
            this.onDisable();
        }, n._inActiveScripts = function() {
            for (var t = 0, e = this._activeChangeScripts.length; t &lt; e; t++) this._activeChangeScripts[t].onDisable();
            this._activeChangeScripts.length = 0;
        }, n.onDisable = function() {}, n._onAdded = function() {
            if (this._activeChangeScripts &amp;&amp; 0 !== this._activeChangeScripts.length) throw "Node: can't set the main inActive node active in hierarchy,if the operate is in main inActive node or it's children script's onDisable Event.";
            var t = this._parent.scene;
            t &amp;&amp; this._setBelongScene(t), this._parent.activeInHierarchy &amp;&amp; this.active &amp;&amp; this._processActive();
        }, n._onRemoved = function() {
            if (this._activeChangeScripts &amp;&amp; 0 !== this._activeChangeScripts.length) throw "Node: can't set the main active node inActive in hierarchy,if the operate is in main active node or it's children script's onEnable Event.";
            this._parent.activeInHierarchy &amp;&amp; this.active &amp;&amp; this._processInActive(), this._parent.scene &amp;&amp; this._setUnBelongScene();
        }, n._addComponentInstance = function(t) {
            this._components = this._components || [], this._components.push(t), t.owner = this, 
            t._onAdded(), this.activeInHierarchy &amp;&amp; (t._setActive(!0), t._isScript() &amp;&amp; t._enabled &amp;&amp; t.onEnable()), 
            this._scene &amp;&amp; t._setActiveInScene(!0);
        }, n._destroyComponent = function(t) {
            if (this._components) for (var e = 0, i = this._components.length; e &lt; i; e++) {
                var n = this._components[e];
                if (n === t) {
                    n._destroy(), this._components.splice(e, 1);
                    break;
                }
            }
        }, n._destroyAllComponent = function() {
            if (this._components) {
                for (var t = 0, e = this._components.length; t &lt; e; t++) this._components[t]._destroy();
                this._components.length = 0;
            }
        }, n._cloneTo = function(t, e, i) {
            var n = t;
            if (this._components) for (var r = 0, s = this._components.length; r &lt; s; r++) {
                var a = n.addComponent(this._components[r].constructor);
                this._components[r]._cloneTo(a);
            }
        }, n.addComponentIntance = function(t) {
            if (t.owner) throw "Node:the component has belong to other node.";
            if (t.isSingleton &amp;&amp; this.getComponent(t.constructor)) throw "Node:the component is singleton,can't add the second one.";
            return this._addComponentInstance(t), t;
        }, n.addComponent = function(t) {
            var e = U.createByClass(t);
            if (e._destroyed = !1, e.isSingleton &amp;&amp; this.getComponent(t)) throw "æ—&nbsp;æ³•å®žä¾‹" + t + "ç»„ä»¶ï¼Œ" + t + "ç»„ä»¶å·²å­˜åœ¨ï¼";
            return this._addComponentInstance(e), e;
        }, n.getComponent = function(t) {
            if (this._components) for (var e = 0, n = this._components.length; e &lt; n; e++) {
                var r = this._components[e];
                if (i.__typeof(r, t)) return r;
            }
            return null;
        }, n.getComponents = function(t) {
            var e;
            if (this._components) for (var n = 0, r = this._components.length; n &lt; r; n++) {
                var s = this._components[n];
                i.__typeof(s, t) &amp;&amp; (e = e || []).push(s);
            }
            return e;
        }, s(0, n, "numChildren", function() {
            return this._children.length;
        }), s(0, n, "parent", function() {
            return this._parent;
        }), s(0, n, "activeInHierarchy", function() {
            return this._getBit(2);
        }), s(0, n, "active", function() {
            return !this._getBit(8) &amp;&amp; !this._getBit(1);
        }, function(t) {
            if (t = !!t, !this._getBit(1) !== t) {
                if (this._activeChangeScripts &amp;&amp; 0 !== this._activeChangeScripts.length) throw t ? "Node: can't set the main inActive node active in hierarchy,if the operate is in main inActive node or it's children script's onDisable Event." : "Node: can't set the main active node inActive in hierarchy,if the operate is in main active node or it's children script's onEnable Event.";
                this._setBit(1, !t), this._parent &amp;&amp; this._parent.activeInHierarchy &amp;&amp; (t ? this._processActive() : this._processInActive());
            }
        }), s(0, n, "displayedInStage", function() {
            return this._getBit(16) ? this._getBit(128) : (this._setBitUp(16), this._getBit(128));
        }), s(0, n, "scene", function() {
            return this._scene;
        }), s(0, n, "timer", function() {
            return this.scene ? this.scene.timer : i.timer;
        }), e.ARRAY_EMPTY = [], e;
    }()), Ae = function(t) {
        function e() {
            this.url = null, this.loops = 0, this.startTime = NaN, this.isStopped = !1, this.completeHandler = null, 
            e.__super.call(this);
        }
        r(e, "laya.media.SoundChannel", m);
        var i = e.prototype;
        return i.play = function() {}, i.stop = function() {
            this.completeHandler &amp;&amp; this.completeHandler.run();
        }, i.pause = function() {}, i.resume = function() {}, i.__runComplete = function(t) {
            t &amp;&amp; t.run();
        }, s(0, i, "volume", function() {
            return 1;
        }, function(t) {}), s(0, i, "position", function() {
            return 0;
        }), s(0, i, "duration", function() {
            return 0;
        }), e;
    }(), Ee = function(t) {
        function e() {
            this._id = 0, this._url = null, this._cpuMemory = 0, this._gpuMemory = 0, this._destroyed = !1, 
            this._referenceCount = 0, this.lock = !1, this.name = null, e.__super.call(this), 
            this._id = ++e._uniqueIDCounter, this._destroyed = !1, this._referenceCount = 0, 
            e._idResourcesMap[this.id] = this, this.lock = !1;
        }
        r(e, "laya.resource.Resource", m);
        var n = e.prototype;
        return i.imps(n, {
            "laya.resource.ICreateResource": !0,
            "laya.resource.IDestroy": !0
        }), n._setCPUMemory = function(t) {
            var i = t - this._cpuMemory;
            this._cpuMemory = t, e._addCPUMemory(i);
        }, n._setGPUMemory = function(t) {
            var i = t - this._gpuMemory;
            this._gpuMemory = t, e._addGPUMemory(i);
        }, n._setCreateURL = function(t) {
            if (t = q.formatURL(t), this._url !== t) {
                var i;
                this._url &amp;&amp; ((i = e._urlResourcesMap[this._url]).splice(i.indexOf(this), 1), 0 === i.length &amp;&amp; delete e._urlResourcesMap[this._url]), 
                t &amp;&amp; ((i = e._urlResourcesMap[t]) || (e._urlResourcesMap[t] = i = []), i.push(this)), 
                this._url = t;
            }
        }, n._addReference = function(t) {
            void 0 === t &amp;&amp; (t = 1), this._referenceCount += t;
        }, n._removeReference = function(t) {
            void 0 === t &amp;&amp; (t = 1), this._referenceCount -= t;
        }, n._clearReference = function() {
            this._referenceCount = 0;
        }, n._recoverResource = function() {}, n._disposeResource = function() {}, n._activeResource = function() {}, 
        n.destroy = function() {
            if (!this._destroyed) {
                this._destroyed = !0, this.lock = !1, this._disposeResource(), delete e._idResourcesMap[this.id];
                var t;
                this._url &amp;&amp; ((t = e._urlResourcesMap[this._url]) &amp;&amp; (t.splice(t.indexOf(this), 1), 
                0 === t.length &amp;&amp; delete e._urlResourcesMap[this._url]), De.getRes(this._url) == this &amp;&amp; delete De.loadedMap[this._url]);
            }
        }, s(0, n, "id", function() {
            return this._id;
        }), s(0, n, "gpuMemory", function() {
            return this._gpuMemory;
        }), s(0, n, "url", function() {
            return this._url;
        }), s(0, n, "cpuMemory", function() {
            return this._cpuMemory;
        }), s(0, n, "destroyed", function() {
            return this._destroyed;
        }), s(0, n, "referenceCount", function() {
            return this._referenceCount;
        }), s(1, e, "cpuMemory", function() {
            return this._cpuMemory;
        }, laya.events.EventDispatcher._$SET_cpuMemory), s(1, e, "gpuMemory", function() {
            return this._gpuMemory;
        }, laya.events.EventDispatcher._$SET_gpuMemory), e._addCPUMemory = function(t) {
            this._cpuMemory += t;
        }, e._addGPUMemory = function(t) {
            this._gpuMemory += t;
        }, e._addMemory = function(t, e) {
            this._cpuMemory += t, this._gpuMemory += e;
        }, e.getResourceByID = function(t) {
            return e._idResourcesMap[t];
        }, e.getResourceByURL = function(t, i) {
            return void 0 === i &amp;&amp; (i = 0), e._urlResourcesMap[t][i];
        }, e.destroyUnusedResources = function() {
            for (var t in e._idResourcesMap) {
                var i = e._idResourcesMap[t];
                i.lock || 0 !== i._referenceCount || i.destroy();
            }
        }, e._uniqueIDCounter = 0, e._idResourcesMap = {}, e._urlResourcesMap = {}, e._cpuMemory = 0, 
        e._gpuMemory = 0, e;
    }(), Se = function(t) {
        function e() {
            e.__super.call(this, 12, 4, 4), this.canReuse = !0, this.setAttributes(laya.webgl.utils.MeshVG._fixattriInfo);
        }
        r(e, "laya.webgl.utils.MeshVG", b);
        var i = e.prototype;
        return i.addVertAndIBToMesh = function(t, e, i, n) {
            for (var r = this._vb.needSize(e.length / 2 * 12) &gt;&gt; 2, s = this._vb._floatArray32 || this._vb.getFloat32Array(), a = this._vb._uint32Array, o = 0, h = e.length / 2, l = 0; l &lt; h; l++) s[r++] = e[o], 
            s[r++] = e[o + 1], o += 2, a[r++] = i;
            this._vb.setNeedUpload(), this._ib.append(new Uint16Array(n)), this._ib.setNeedUpload(), 
            this.vertNum += h, this.indexNum += n.length;
        }, i.releaseMesh = function() {
            this._vb.setByteLength(0), this._ib.setByteLength(0), this.vertNum = 0, this.indexNum = 0, 
            laya.webgl.utils.MeshVG._POOL.push(this);
        }, i.destroy = function() {
            this._ib.destroy(), this._vb.destroy(), this._ib.disposeResource(), this._vb.deleteBuffer();
        }, e.getAMesh = function(t) {
            var i;
            return i = laya.webgl.utils.MeshVG._POOL.length ? laya.webgl.utils.MeshVG._POOL.pop() : new e(), 
            t &amp;&amp; i._vb._resizeBuffer(786432, !1), i;
        }, e.const_stride = 12, e._POOL = [], n(e, [ "_fixattriInfo", function() {
            return this._fixattriInfo = [ 5126, 2, 0, 5121, 4, 8 ];
        } ]), e;
    }(), Me = function(t) {
        function e() {
            this._labelDic = null, this._tweenDic = {}, this._tweenDataList = [], this._endTweenDataList = null, 
            this._currTime = 0, this._lastTime = 0, this._startTime = 0, this._index = 0, this._gidIndex = 0, 
            this._firstTweenDic = {}, this._startTimeSort = !1, this._endTimeSort = !1, this._loopKey = !1, 
            this.scale = 1, this._frameRate = 60, this._frameIndex = 0, this._total = 0, e.__super.call(this);
        }
        var n;
        r(e, "laya.utils.TimeLine", m);
        var a = e.prototype;
        return a.to = function(t, e, i, n, r) {
            return void 0 === r &amp;&amp; (r = 0), this._create(t, e, i, n, r, !0);
        }, a.from = function(t, e, i, n, r) {
            return void 0 === r &amp;&amp; (r = 0), this._create(t, e, i, n, r, !1);
        }, a._create = function(t, e, i, r, s, a) {
            var o = U.getItemByClass("tweenData", n);
            return o.isTo = a, o.type = 0, o.target = t, o.duration = i, o.data = e, o.startTime = this._startTime + s, 
            o.endTime = o.startTime + o.duration, o.ease = r, this._startTime = Math.max(o.endTime, this._startTime), 
            this._tweenDataList.push(o), this._startTimeSort = !0, this._endTimeSort = !0, this;
        }, a.addLabel = function(t, e) {
            var i = U.getItemByClass("tweenData", n);
            return i.type = 1, i.data = t, i.endTime = i.startTime = this._startTime + e, this._labelDic || (this._labelDic = {}), 
            this._labelDic[t] = i, this._tweenDataList.push(i), this;
        }, a.removeLabel = function(t) {
            if (this._labelDic &amp;&amp; this._labelDic[t]) {
                var e = this._labelDic[t];
                if (e) {
                    var i = this._tweenDataList.indexOf(e);
                    i &gt; -1 &amp;&amp; this._tweenDataList.splice(i, 1);
                }
                delete this._labelDic[t];
            }
        }, a.gotoTime = function(t) {
            if (null != this._tweenDataList &amp;&amp; 0 != this._tweenDataList.length) {
                var e, i;
                for (var n in this._firstTweenDic) if (i = this._firstTweenDic[n]) for (var r in i) i.diyTarget.hasOwnProperty(r) &amp;&amp; (i.diyTarget[r] = i[r]);
                for (n in this._tweenDic) (e = this._tweenDic[n]).clear(), delete this._tweenDic[n];
                this._index = 0, this._gidIndex = 0, this._currTime = t, this._lastTime = Dt.now();
                var s;
                null == this._endTweenDataList || this._endTimeSort ? (this._endTimeSort = !1, this._endTweenDataList = s = this._tweenDataList.concat(), 
                s.sort(function(t, e) {
                    return t.endTime &gt; e.endTime ? 1 : t.endTime &lt; e.endTime ? -1 : 0;
                })) : s = this._endTweenDataList;
                for (var a, o = 0, h = s.length; o &lt; h; o++) if (0 == (a = s[o]).type) {
                    if (!(t &gt;= a.endTime)) break;
                    this._index = Math.max(this._index, o + 1);
                    var l = a.data;
                    if (a.isTo) for (var u in l) a.target[u] = l[u];
                }
                for (o = 0, h = this._tweenDataList.length; o &lt; h; o++) 0 == (a = this._tweenDataList[o]).type &amp;&amp; t &gt;= a.startTime &amp;&amp; t &lt; a.endTime &amp;&amp; (this._index = Math.max(this._index, o + 1), 
                this._gidIndex++, (e = U.getItemByClass("tween", z))._create(a.target, a.data, a.duration, a.ease, g.create(this, this._animComplete, [ this._gidIndex ]), 0, !1, a.isTo, !0, !1), 
                e.setStartTime(this._currTime - (t - a.startTime)), e._updateEase(this._currTime), 
                e.gid = this._gidIndex, this._tweenDic[this._gidIndex] = e);
            }
        }, a.gotoLabel = function(t) {
            if (null != this._labelDic) {
                var e = this._labelDic[t];
                e &amp;&amp; this.gotoTime(e.startTime);
            }
        }, a.pause = function() {
            i.timer.clear(this, this._update);
        }, a.resume = function() {
            this.play(this._currTime, this._loopKey);
        }, a.play = function(t, e) {
            if (void 0 === t &amp;&amp; (t = 0), void 0 === e &amp;&amp; (e = !1), this._tweenDataList) {
                if (this._startTimeSort) {
                    this._startTimeSort = !1, this._tweenDataList.sort(function(t, e) {
                        return t.startTime &gt; e.startTime ? 1 : t.startTime &lt; e.startTime ? -1 : 0;
                    });
                    for (var n = 0, r = this._tweenDataList.length; n &lt; r; n++) {
                        var s = this._tweenDataList[n];
                        if (null != s &amp;&amp; 0 == s.type) {
                            var a = s.target, o = a.$_GID || (a.$_GID = ie.getGID()), h = null;
                            null == this._firstTweenDic[o] ? ((h = {}).diyTarget = a, this._firstTweenDic[o] = h) : h = this._firstTweenDic[o];
                            for (var l in s.data) null == h[l] &amp;&amp; (h[l] = a[l]);
                        }
                    }
                }
                "string" == typeof t ? this.gotoLabel(t) : this.gotoTime(t), this._loopKey = e, 
                this._lastTime = Dt.now(), i.timer.frameLoop(1, this, this._update);
            }
        }, a._update = function() {
            if (this._currTime &gt;= this._startTime) {
                if (!this._loopKey) {
                    for (var t in this._tweenDic) (r = this._tweenDic[t]).complete();
                    return this._complete(), void this.pause();
                }
                if (this._complete(), !this._tweenDataList) return;
                this.gotoTime(0);
            }
            var e = Dt.now(), i = e - this._lastTime, n = this._currTime += i * this.scale;
            this._lastTime = e;
            for (t in this._tweenDic) (r = this._tweenDic[t])._updateEase(n);
            var r;
            if (0 != this._tweenDataList.length &amp;&amp; this._index &lt; this._tweenDataList.length) {
                var s = this._tweenDataList[this._index];
                n &gt;= s.startTime &amp;&amp; (this._index++, 0 == s.type ? (this._gidIndex++, (r = U.getItemByClass("tween", z))._create(s.target, s.data, s.duration, s.ease, g.create(this, this._animComplete, [ this._gidIndex ]), 0, !1, s.isTo, !0, !1), 
                r.setStartTime(n), r.gid = this._gidIndex, this._tweenDic[this._gidIndex] = r, r._updateEase(n)) : this.event("label", s.data));
            }
        }, a._animComplete = function(t) {
            this._tweenDic[t] &amp;&amp; delete this._tweenDic[t];
        }, a._complete = function() {
            this.event("complete");
        }, a.reset = function() {
            var t;
            if (this._labelDic) for (t in this._labelDic) delete this._labelDic[t];
            for (t in this._tweenDic) this._tweenDic[t].clear(), delete this._tweenDic[t];
            for (t in this._firstTweenDic) delete this._firstTweenDic[t];
            if (this._endTweenDataList = null, this._tweenDataList &amp;&amp; this._tweenDataList.length) {
                var e = 0, n = 0;
                for (n = this._tweenDataList.length, e = 0; e &lt; n; e++) this._tweenDataList[e] &amp;&amp; this._tweenDataList[e].destroy();
            }
            this._tweenDataList.length = 0, this._currTime = 0, this._lastTime = 0, this._startTime = 0, 
            this._index = 0, this._gidIndex = 0, this.scale = 1, i.timer.clear(this, this._update);
        }, a.destroy = function() {
            this.reset(), this._labelDic = null, this._tweenDic = null, this._tweenDataList = null, 
            this._firstTweenDic = null;
        }, s(0, a, "index", function() {
            return this._frameIndex;
        }, function(t) {
            this._frameIndex = t, this.gotoTime(this._frameIndex / this._frameRate * 1e3);
        }), s(0, a, "total", function() {
            return this._total = Math.floor(this._startTime / 1e3 * this._frameRate), this._total;
        }), e.to = function(t, i, n, r, s) {
            return void 0 === s &amp;&amp; (s = 0), new e().to(t, i, n, r, s);
        }, e.from = function(t, i, n, r, s) {
            return void 0 === s &amp;&amp; (s = 0), new e().from(t, i, n, r, s);
        }, e.__init$ = function() {
            n = function() {
                function t() {
                    this.type = 0, this.isTo = !0, this.startTime = NaN, this.endTime = NaN, this.target = null, 
                    this.duration = NaN, this.ease = null, this.data = null;
                }
                return r(t, ""), t.prototype.destroy = function() {
                    this.target = null, this.ease = null, this.data = null, this.isTo = !0, this.type = 0, 
                    U.recover("tweenData", this);
                }, t;
            }();
        }, e;
    }(), Re = function(t) {
        function e() {
            e.__super.call(this, e.__name2int, e.__int2name, e.__int2nameMap);
        }
        return r(e, "laya.webgl.shader.d2.ShaderDefines2D", D), e.__init__ = function() {
            e.reg("TEXTURE2D", 1), e.reg("PRIMITIVE", 4), e.reg("GLOW_FILTER", 8), e.reg("BLUR_FILTER", 16), 
            e.reg("COLOR_FILTER", 32), e.reg("COLOR_ADD", 64), e.reg("WORLDMAT", 128), e.reg("FILLTEXTURE", 256), 
            e.reg("FSHIGHPRECISION", 1024), e.reg("MVP3D", 2048);
        }, e.reg = function(t, i) {
            D._reg(t, i, e.__name2int, e.__int2name);
        }, e.toText = function(t, e, i) {
            return D._toText(t, e, i);
        }, e.toInt = function(t) {
            return D._toInt(t, e.__name2int);
        }, e.TEXTURE2D = 1, e.PRIMITIVE = 4, e.FILTERGLOW = 8, e.FILTERBLUR = 16, e.FILTERCOLOR = 32, 
        e.COLORADD = 64, e.WORLDMAT = 128, e.FILLTEXTURE = 256, e.SKINMESH = 512, e.SHADERDEFINE_FSHIGHPRECISION = 1024, 
        e.MVP3D = 2048, e.NOOPTMASK = 312, e.__name2int = {}, e.__int2name = [], e.__int2nameMap = [], 
        e;
    }(), Ie = function(t) {
        function e(t, i, n, r) {
            this.uvrect = [ 0, 0, 1, 1 ], this._destroyed = !1, this._referenceCount = 0, this.$_GID = 0, 
            this.offsetX = 0, this.offsetY = 0, this._w = 0, this._h = 0, this.sourceWidth = 0, 
            this.sourceHeight = 0, this.url = null, this.scaleRate = 1, e.__super.call(this), 
            void 0 === n &amp;&amp; (n = 0), void 0 === r &amp;&amp; (r = 0), this.setTo(t, i, n, r);
        }
        r(e, "laya.resource.Texture", m);
        var n = e.prototype;
        return n._addReference = function() {
            this._bitmap &amp;&amp; this._bitmap._addReference(), this._referenceCount++;
        }, n._removeReference = function() {
            this._bitmap &amp;&amp; this._bitmap._removeReference(), this._referenceCount--;
        }, n._getSource = function(t) {
            return this._destroyed || !this._bitmap ? null : (this.recoverBitmap(t), this._bitmap.destroyed ? null : this.bitmap._getSource());
        }, n._onLoaded = function(t, i) {
            if (i) if (i == this) ; else if (i instanceof laya.resource.Texture) {
                var n = i;
                e._create(i, 0, 0, n.width, n.height, 0, 0, n.sourceWidth, n.sourceHeight, this);
            } else this.bitmap = i, this.sourceWidth = this._w = i.width, this.sourceHeight = this._h = i.height;
            t &amp;&amp; t.run(), this.event("ready", this);
        }, n.getIsReady = function() {
            return !this._destroyed &amp;&amp; !!this._bitmap;
        }, n.setTo = function(t, i, n, r) {
            void 0 === n &amp;&amp; (n = 0), void 0 === r &amp;&amp; (r = 0), this.bitmap = t, this.sourceWidth = n, 
            this.sourceHeight = r, t &amp;&amp; (this._w = t.width, this._h = t.height, this.sourceWidth = this.sourceWidth || t.width, 
            this.sourceHeight = this.sourceHeight || t.height), this.uv = i || e.DEF_UV;
        }, n.load = function(t, e) {
            this._destroyed || i.loader.load(t, g.create(this, this._onLoaded, [ e ]), null, "htmlimage", 1, !1, null, !0);
        }, n.getTexturePixels = function(t, e, i, n) {
            var r = 0, s = 0, a = 0, o = this.bitmap, h = o.width, l = o.height;
            if (t + i &gt; h &amp;&amp; (i -= t + i - h), e + n &gt; l &amp;&amp; (n -= e + n - l), i &lt;= 0 || n &lt;= 0) return null;
            var u = 4 * i, c = null;
            try {
                c = o.getPixels();
            } catch (t) {}
            if (c) {
                if (0 == t &amp;&amp; 0 == e &amp;&amp; i == h &amp;&amp; n == l) return c;
                var _ = new Uint8Array(i * n * 4);
                for (r = 4 * t, s = (e + n - 1) * (u = 4 * h) + 4 * t, a = n - 1; a &gt;= 0; a--) _.set(y.slice(s, s + 4 * i), r), 
                r += u, s -= u;
                return _;
            }
            var f = new ut();
            f.size(i, n), f.asBitmap = !0;
            var d = null;
            if (0 != t || 0 != e || i != h || n != l) {
                var p = (d = d.concat())[0], m = d[1], g = (d[2] - p) / h, v = (d[7] - m) / l;
                d = [ p + t * g, m + e * v, p + (t + i) * g, m + e * v, p + (t + i) * g, m + (e + n) * v, p + t * g, m + (e + n) * v ];
            }
            f._drawTextureM(this, 0, 0, i, n, null, 1, d), f._targets.start(), f.flush(), f._targets.end(), 
            f._targets.restore();
            var y = f._targets.getData(0, 0, i, n);
            for (f.destroy(), _ = new Uint8Array(i * n * 4), r = 0, s = (n - 1) * u, a = n - 1; a &gt;= 0; a--) _.set(y.slice(s, s + u), r), 
            r += u, s -= u;
            return _;
        }, n.getPixels = function(t, e, i, n) {
            return Mt.isConchApp ? this._nativeObj.getImageData(t, e, i, n) : this.getTexturePixels(t, e, i, n);
        }, n.recoverBitmap = function(t) {
            var e = this, n = this._bitmap.url;
            this._destroyed || this._bitmap &amp;&amp; !this._bitmap.destroyed || !n || i.loader.load(n, g.create(this, function(i) {
                e.bitmap = i, t &amp;&amp; t();
            }), null, "htmlimage", 1, !1, null, !0);
        }, n.disposeBitmap = function() {
            !this._destroyed &amp;&amp; this._bitmap &amp;&amp; this._bitmap.destroy();
        }, n.destroy = function(t) {
            if (void 0 === t &amp;&amp; (t = !1), !this._destroyed) {
                this._destroyed = !0;
                var e = this._bitmap;
                e &amp;&amp; (e._removeReference(this._referenceCount), (0 === e.referenceCount || t) &amp;&amp; e.destroy(), 
                e = null), this.url &amp;&amp; this === i.loader.getRes(this.url) &amp;&amp; i.loader.clearRes(this.url);
            }
        }, s(0, n, "height", function() {
            return this._h ? this._h : this.bitmap ? this.uv &amp;&amp; this.uv !== e.DEF_UV ? (this.uv[5] - this.uv[1]) * this.bitmap.height : this.bitmap.height : 0;
        }, function(t) {
            this._h = t, this.sourceHeight || (this.sourceHeight = t);
        }), s(0, n, "uv", function() {
            return this._uv;
        }, function(t) {
            this.uvrect[0] = Math.min(t[0], t[2], t[4], t[6]), this.uvrect[1] = Math.min(t[1], t[3], t[5], t[7]), 
            this.uvrect[2] = Math.max(t[0], t[2], t[4], t[6]) - this.uvrect[0], this.uvrect[3] = Math.max(t[1], t[3], t[5], t[7]) - this.uvrect[1], 
            this._uv = t;
        }), s(0, n, "width", function() {
            return this._w ? this._w : this.bitmap ? this.uv &amp;&amp; this.uv !== e.DEF_UV ? (this.uv[2] - this.uv[0]) * this.bitmap.width : this.bitmap.width : 0;
        }, function(t) {
            this._w = t, this.sourceWidth || (this.sourceWidth = t);
        }), s(0, n, "bitmap", function() {
            return this._bitmap;
        }, function(t) {
            this._bitmap &amp;&amp; this._bitmap._removeReference(this._referenceCount), this._bitmap = t, 
            t &amp;&amp; t._addReference(this._referenceCount);
        }), s(0, n, "destroyed", function() {
            return this._destroyed;
        }), e.moveUV = function(t, e, i) {
            for (var n = 0; n &lt; 8; n += 2) i[n] += t, i[n + 1] += e;
            return i;
        }, e.create = function(t, i, n, r, s, a, o, h, l) {
            return void 0 === a &amp;&amp; (a = 0), void 0 === o &amp;&amp; (o = 0), void 0 === h &amp;&amp; (h = 0), 
            void 0 === l &amp;&amp; (l = 0), e._create(t, i, n, r, s, a, o, h, l);
        }, e._create = function(t, i, n, r, s, a, o, h, l, u) {
            void 0 === a &amp;&amp; (a = 0), void 0 === o &amp;&amp; (o = 0), void 0 === h &amp;&amp; (h = 0), void 0 === l &amp;&amp; (l = 0);
            var c = t instanceof laya.resource.Texture, _ = c ? t.uv : e.DEF_UV, f = c ? t.bitmap : t;
            f.width &amp;&amp; i + r &gt; f.width &amp;&amp; (r = f.width - i), f.height &amp;&amp; n + s &gt; f.height &amp;&amp; (s = f.height - n);
            var d;
            u ? (d = u).setTo(f, null, h || r, l || s) : d = new e(f, null, h || r, l || s), 
            d.width = r, d.height = s, d.offsetX = a, d.offsetY = o;
            var p = 1 / f.width, m = 1 / f.height;
            i *= p, n *= m, r *= p, s *= m;
            var g = d.uv[0], v = d.uv[1], y = d.uv[4], x = d.uv[5], T = y - g, b = x - v, w = e.moveUV(_[0], _[1], [ i, n, i + r, n, i + r, n + s, i, n + s ]);
            d.uv = new Float32Array([ g + w[0] * T, v + w[1] * b, y - (1 - w[2]) * T, v + w[3] * b, y - (1 - w[4]) * T, x - (1 - w[5]) * b, g + w[6] * T, x - (1 - w[7]) * b ]);
            var C = f.scaleRate;
            return C &amp;&amp; 1 != C ? (d.sourceWidth /= C, d.sourceHeight /= C, d.width /= C, d.height /= C, 
            d.scaleRate = C) : d.scaleRate = 1, d;
        }, e.createFromTexture = function(t, i, n, r, s) {
            var a = t.scaleRate;
            1 != a &amp;&amp; (i *= a, n *= a, r *= a, s *= a);
            var o = mt.TEMP.setTo(i - t.offsetX, n - t.offsetY, r, s), h = o.intersection(e._rect1.setTo(0, 0, t.width, t.height), e._rect2);
            return h ? e.create(t, h.x, h.y, h.width, h.height, h.x - o.x, h.y - o.y, r, s) : null;
        }, e.DEF_UV = new Float32Array([ 0, 0, 1, 0, 1, 1, 0, 1 ]), e.NO_UV = new Float32Array([ 0, 0, 0, 0, 0, 0, 0, 0 ]), 
        e.INV_UV = new Float32Array([ 0, 1, 1, 1, 1, 0, 0, 0 ]), e._rect1 = new mt(), e._rect2 = new mt(), 
        e;
    }(), Pe = function(t) {
        function e() {
            this._responseType = null, this._data = null, this._url = null, e.__super.call(this), 
            this._http = new Dt.window.XMLHttpRequest();
        }
        r(e, "laya.net.HttpRequest", m);
        var i = e.prototype;
        return i.send = function(t, e, i, n, r) {
            void 0 === i &amp;&amp; (i = "get"), void 0 === n &amp;&amp; (n = "text"), this._responseType = n, 
            this._data = null, this._url = t;
            var s = this, a = this._http;
            if (t = q.getAdptedFilePath(t), a.open(i, t, !0), r) for (var o = 0; o &lt; r.length; o++) a.setRequestHeader(r[o++], r[o]); else Mt.isConchApp || (e &amp;&amp; "string" != typeof e ? a.setRequestHeader("Content-Type", "application/json") : a.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"));
            a.responseType = "arraybuffer" !== n ? "text" : "arraybuffer", a.onerror = function(t) {
                s._onError(t);
            }, a.onabort = function(t) {
                s._onAbort(t);
            }, a.onprogress = function(t) {
                s._onProgress(t);
            }, a.onload = function(t) {
                s._onLoad(t);
            }, a.send(e);
        }, i._onProgress = function(t) {
            t &amp;&amp; t.lengthComputable &amp;&amp; this.event("progress", t.loaded / t.total);
        }, i._onAbort = function(t) {
            this.error("Request was aborted by user");
        }, i._onError = function(t) {
            this.error("Request failed Status:" + this._http.status + " text:" + this._http.statusText);
        }, i._onLoad = function(t) {
            var e = this._http, i = void 0 !== e.status ? e.status : 200;
            200 === i || 204 === i || 0 === i ? this.complete() : this.error("[" + e.status + "]" + e.statusText + ":" + e.responseURL);
        }, i.error = function(t) {
            this.clear(), console.warn(this.url, t), this.event("error", t);
        }, i.complete = function() {
            this.clear();
            var t = !0;
            try {
                "json" === this._responseType ? this._data = JSON.parse(this._http.responseText) : "xml" === this._responseType ? this._data = ie.parseXMLFromString(this._http.responseText) : this._data = this._http.response || this._http.responseText;
            } catch (e) {
                t = !1, this.error(e.message);
            }
            t &amp;&amp; this.event("complete", this._data instanceof Array ? [ this._data ] : this._data);
        }, i.clear = function() {
            var t = this._http;
            t.onerror = t.onabort = t.onprogress = t.onload = null;
        }, s(0, i, "url", function() {
            return this._url;
        }), s(0, i, "http", function() {
            return this._http;
        }), s(0, i, "data", function() {
            return this._data;
        }), e;
    }(), De = function(t) {
        function e() {
            this._data = null, this._url = null, this._type = null, this._cache = !1, this._http = null, 
            this._useWorkerLoader = !1, this._customParse = !1, this._constructParams = null, 
            this._propertyParams = null, this._createCache = !1, e.__super.call(this);
        }
        r(e, "laya.net.Loader", m);
        var n = e.prototype;
        return n.load = function(t, i, n, r, s, a) {
            if (void 0 === n &amp;&amp; (n = !0), void 0 === s &amp;&amp; (s = !1), void 0 === a &amp;&amp; (a = !1), 
            t) {
                if (e.setGroup(t, "666"), this._url = t, 0 === t.indexOf("data:image") ? i = "image" : t = q.formatURL(t), 
                this._type = i || (i = e.getTypeFromUrl(this._url)), this._cache = n, this._useWorkerLoader = a, 
                this._data = null, a &amp;&amp; Ve.enableWorkerLoader(), !s &amp;&amp; e.loadedMap[t]) return this._data = e.loadedMap[t], 
                this.event("progress", 1), void this.event("complete", this._data);
                if (r &amp;&amp; e.setGroup(t, r), null != e.parserMap[i]) return this._customParse = !0, 
                void (e.parserMap[i] instanceof laya.utils.Handler ? e.parserMap[i].runWith(this) : e.parserMap[i].call(null, this));
                if ("image" === i || "htmlimage" === i || "nativeimage" === i) return this._loadImage(t);
                if ("sound" === i) return this._loadSound(t);
                if ("ttf" === i) return this._loadTTF(t);
                var o;
                switch (i) {
                  case "atlas":
                  case "prefab":
                  case "plf":
                    o = "json";
                    break;

                  case "font":
                    o = "xml";
                    break;

                  case "plfb":
                    o = "arraybuffer";
                    break;

                  default:
                    o = i;
                }
                e.preLoadedMap[t] ? this.onLoaded(e.preLoadedMap[t]) : (this._http || (this._http = new Pe(), 
                this._http.on("progress", this, this.onProgress), this._http.on("error", this, this.onError), 
                this._http.on("complete", this, this.onLoaded)), this._http.send(t, null, "get", o));
            } else this.onLoaded(null);
        }, n._loadTTF = function(t) {
            t = q.formatURL(t);
            var e = new N();
            e.complete = g.create(this, this.onLoaded), e.load(t);
        }, n._loadImage = function(t) {
            function i() {
                var i = n;
                i &amp;&amp; (i.onload = null, i.onerror = null, delete e._imgCache[t]);
            }
            t = q.formatURL(t);
            var n, r = this, s = function() {
                i(), r.event("error", "Load image failed");
            };
            if ("nativeimage" === this._type) {
                var a = function() {
                    i(), r.onLoaded(n);
                };
                (n = new Dt.window.Image()).crossOrigin = "", n.onload = a, n.onerror = s, n.src = t, 
                e._imgCache[t] = n;
            } else {
                var o = ie.getFileExtension(t);
                if ("ktx" === o || "pvr" === o) {
                    a = function(e) {
                        var s = 0;
                        switch (o) {
                          case "ktx":
                            s = 5;
                            break;

                          case "pvr":
                            s = 12;
                        }
                        (n = new _i(0, 0, s, !1, !1)).wrapModeU = 1, n.wrapModeV = 1, n.setCompressData(e), 
                        n._setCreateURL(t), i(), r.onLoaded(n);
                    };
                    var h;
                    (h = new Pe()).on("error", null, s), h.on("complete", null, a), h.send(t, null, "get", "arraybuffer");
                } else {
                    var l = new Dt.window.Image();
                    a = function() {
                        var e = new _i(l.width, l.height, 1, !1, !1);
                        e.wrapModeU = 1, e.wrapModeV = 1, e.loadImageSource(l, !0), e._setCreateURL(t), 
                        i(), r.onLoaded(e);
                    }, l.crossOrigin = "", l.onload = a, l.onerror = s, l.src = t, e._imgCache[t] = l;
                }
            }
        }, n._loadSound = function(t) {
            function e() {
                i.offAll();
            }
            var i = new ye._soundClass(), n = this;
            i.on("complete", this, function() {
                e(), n.onLoaded(i);
            }), i.on("error", this, function() {
                e(), i.dispose(), n.event("error", "Load sound failed");
            }), i.load(t);
        }, n.onProgress = function(t) {
            "atlas" === this._type ? this.event("progress", .3 * t) : this.event("progress", t);
        }, n.onError = function(t) {
            this.event("error", t);
        }, n.onLoaded = function(t) {
            var i = this._type;
            if ("plfb" == i) this.parsePLFBData(t), this.complete(t); else if ("plf" == i) this.parsePLFData(t), 
            this.complete(t); else if ("image" === i) {
                var n = new Ie(t);
                n.url = this._url, this.complete(n);
            } else if ("sound" === i || "htmlimage" === i || "nativeimage" === i) this.complete(t); else if ("atlas" === i) {
                if (!t.url &amp;&amp; !t._setContext) {
                    if (!this._data) {
                        if (this._data = t, t.meta &amp;&amp; t.meta.image) {
                            var r, s = t.meta.image.split(","), a = this._url.indexOf("/") &gt;= 0 ? "/" : "\\", o = this._url.lastIndexOf(a), h = o &gt;= 0 ? this._url.substr(0, o + 1) : "";
                            Dt.onAndroid &amp;&amp; t.meta.compressTextureAndroid &amp;&amp; (r = ".ktx"), Dt.onIOS &amp;&amp; t.meta.compressTextureIOS &amp;&amp; (r = ".pvr");
                            for (var l = 0, u = s.length; l &lt; u; l++) s[l] = r ? h + s[l].replace(".png", r) : h + s[l];
                        } else s = [ this._url.replace(".json", ".png") ];
                        s.reverse(), t.toLoads = s, t.pics = [];
                    }
                    return this.event("progress", .3 + 1 / s.length * .6), this._loadImage(s.pop());
                }
                if (this._data.pics.push(t), this._data.toLoads.length &gt; 0) return this.event("progress", .3 + 1 / this._data.toLoads.length * .6), 
                this._loadImage(this._data.toLoads.pop());
                var c = this._data.frames, _ = this._url.split("?")[0], f = this._data.meta &amp;&amp; this._data.meta.prefix ? this._data.meta.prefix : _.substring(0, _.lastIndexOf(".")) + "/", d = this._data.pics, p = q.formatURL(this._url), m = e.atlasMap[p] || (e.atlasMap[p] = []);
                m.dir = f;
                var g = 1;
                if (this._data.meta &amp;&amp; this._data.meta.scale &amp;&amp; 1 != this._data.meta.scale) {
                    g = parseFloat(this._data.meta.scale);
                    for (var v in c) {
                        var y = c[v], x = d[y.frame.idx ? y.frame.idx : 0], T = q.formatURL(f + v);
                        x.scaleRate = g;
                        var b;
                        b = Ie._create(x, y.frame.x, y.frame.y, y.frame.w, y.frame.h, y.spriteSourceSize.x, y.spriteSourceSize.y, y.sourceSize.w, y.sourceSize.h, laya.net.Loader.getRes(T)), 
                        e.cacheRes(T, b), b.url = T, m.push(T);
                    }
                } else for (v in c) x = d[(y = c[v]).frame.idx ? y.frame.idx : 0], T = q.formatURL(f + v), 
                b = Ie._create(x, y.frame.x, y.frame.y, y.frame.w, y.frame.h, y.spriteSourceSize.x, y.spriteSourceSize.y, y.sourceSize.w, y.sourceSize.h, laya.net.Loader.getRes(T)), 
                e.cacheRes(T, b), b.url = T, m.push(T);
                delete this._data.pics, this.complete(this._data);
            } else if ("font" === i) {
                if (!t._source) return this._data = t, this.event("progress", .5), this._loadImage(this._url.replace(".fnt", ".png"));
                var w = new L();
                w.parseFont(this._data, new Ie(t));
                var C = this._url.split(".fnt")[0].split("/"), A = C[C.length - 1];
                ei.registerBitmapFont(A, w), this._data = w, this.complete(this._data);
            } else if ("prefab" === i) {
                var E = new me();
                E.json = t, this.complete(E);
            } else this.complete(t);
        }, n.parsePLFData = function(t) {
            var i, n, r;
            for (i in t) switch (r = t[i], i) {
              case "json":
              case "text":
                for (n in r) e.preLoadedMap[q.formatURL(n)] = r[n];
                break;

              default:
                for (n in r) e.preLoadedMap[q.formatURL(n)] = r[n];
            }
        }, n.parsePLFBData = function(t) {
            var e, i = 0, n = 0;
            for (n = (e = new Kt(t)).getInt32(), i = 0; i &lt; n; i++) this.parseOnePLFBFile(e);
        }, n.parseOnePLFBFile = function(t) {
            var i, n, r = 0;
            i = t.getUTFString(), r = t.getInt32(), n = t.readArrayBuffer(r), e.preLoadedMap[q.formatURL(i)] = n;
        }, n.complete = function(t) {
            this._data = t, this._customParse ? this.event("loaded", t instanceof Array ? [ t ] : t) : (e._loaders.push(this), 
            e._isWorking || e.checkNext());
        }, n.endLoad = function(t) {
            t &amp;&amp; (this._data = t), this._cache &amp;&amp; e.cacheRes(this._url, this._data), this.event("progress", 1), 
            this.event("complete", this.data instanceof Array ? [ this.data ] : this.data);
        }, s(0, n, "url", function() {
            return this._url;
        }), s(0, n, "data", function() {
            return this._data;
        }), s(0, n, "cache", function() {
            return this._cache;
        }), s(0, n, "type", function() {
            return this._type;
        }), e.getTypeFromUrl = function(t) {
            var i = ie.getFileExtension(t);
            return i ? e.typeMap[i] : (console.warn("Not recognize the resources suffix", t), 
            "text");
        }, e.checkNext = function() {
            e._isWorking = !0;
            for (var t = Dt.now(); e._startIndex &lt; e._loaders.length; ) if (Dt.now(), e._loaders[e._startIndex].endLoad(), 
            e._startIndex++, Dt.now() - t &gt; e.maxTimeOut) return console.warn("loader callback cost a long time:" + (Dt.now() - t) + " url=" + e._loaders[e._startIndex - 1].url), 
            void i.systemTimer.frameOnce(1, null, e.checkNext);
            e._loaders.length = 0, e._startIndex = 0, e._isWorking = !1;
        }, e.clearRes = function(t) {
            t = q.formatURL(t);
            var i = e.getAtlas(t);
            if (i) {
                for (var n = 0, r = i.length; n &lt; r; n++) {
                    var s = i[n], a = e.getRes(s);
                    delete e.loadedMap[s], a &amp;&amp; a.destroy();
                }
                i.length = 0, delete e.atlasMap[t], delete e.loadedMap[t];
            } else {
                var o = e.loadedMap[t];
                o &amp;&amp; (delete e.loadedMap[t], o instanceof laya.resource.Texture &amp;&amp; o.bitmap &amp;&amp; o.destroy());
            }
        }, e.clearTextureRes = function(t) {
            t = q.formatURL(t);
            var e = laya.net.Loader.getAtlas(t), i = e &amp;&amp; e.length &gt; 0 ? laya.net.Loader.getRes(e[0]) : laya.net.Loader.getRes(t);
            i instanceof laya.resource.Texture &amp;&amp; i.disposeBitmap();
        }, e.getRes = function(t) {
            return e.loadedMap[q.formatURL(t)];
        }, e.getAtlas = function(t) {
            return e.atlasMap[q.formatURL(t)];
        }, e.cacheRes = function(t, i) {
            t = q.formatURL(t), null != e.loadedMap[t] ? console.warn("Resources already exist,is repeated loading:", t) : e.loadedMap[t] = i;
        }, e.setGroup = function(t, i) {
            e.groupMap[i] || (e.groupMap[i] = []), e.groupMap[i].push(t);
        }, e.clearResByGroup = function(t) {
            if (e.groupMap[t]) {
                var i = e.groupMap[t], n = 0, r = i.length;
                for (n = 0; n &lt; r; n++) e.clearRes(i[n]);
                i.length = 0;
            }
        }, e.TEXT = "text", e.JSON = "json", e.PREFAB = "prefab", e.XML = "xml", e.BUFFER = "arraybuffer", 
        e.IMAGE = "image", e.SOUND = "sound", e.ATLAS = "atlas", e.FONT = "font", e.TTF = "ttf", 
        e.PLF = "plf", e.PLFB = "plfb", e.HIERARCHY = "HIERARCHY", e.MESH = "MESH", e.MATERIAL = "MATERIAL", 
        e.TEXTURE2D = "TEXTURE2D", e.TEXTURECUBE = "TEXTURECUBE", e.ANIMATIONCLIP = "ANIMATIONCLIP", 
        e.AVATAR = "AVATAR", e.TERRAINHEIGHTDATA = "TERRAINHEIGHTDATA", e.TERRAINRES = "TERRAIN", 
        e.typeMap = {
            ttf: "ttf",
            png: "image",
            jpg: "image",
            jpeg: "image",
            ktx: "image",
            pvr: "image",
            txt: "text",
            json: "json",
            prefab: "prefab",
            xml: "xml",
            als: "atlas",
            atlas: "atlas",
            mp3: "sound",
            ogg: "sound",
            wav: "sound",
            part: "json",
            fnt: "font",
            plf: "plf",
            plfb: "plfb",
            scene: "json",
            ani: "json",
            sk: "arraybuffer"
        }, e.parserMap = {}, e.maxTimeOut = 100, e.groupMap = {}, e.loadedMap = {}, e.atlasMap = {}, 
        e.preLoadedMap = {}, e._imgCache = {}, e._loaders = [], e._isWorking = !1, e._startIndex = 0, 
        e;
    }(), Le = (function(t) {
        function e(t) {
            this.strength = NaN, this.strength_sig2_2sig2_gauss1 = [], this.strength_sig2_native = null, 
            this.renderFunc = null, e.__super.call(this), void 0 === t &amp;&amp; (t = 4), this.strength = t, 
            this._glRender = new ct();
        }
        r(e, "laya.filters.BlurFilter", c);
        var i = e.prototype;
        i.getStrenth_sig2_2sig2_native = function() {
            this.strength_sig2_native || (this.strength_sig2_native = new Float32Array(4));
            var t = this.strength / 3, e = t * t;
            return this.strength_sig2_native[0] = this.strength, this.strength_sig2_native[1] = e, 
            this.strength_sig2_native[2] = 2 * e, this.strength_sig2_native[3] = 1 / (2 * Math.PI * e), 
            this.strength_sig2_native;
        }, s(0, i, "type", function() {
            return 16;
        });
    }(), function(t) {
        function e() {
            this._maxsize = 0, this._upload = !0, this._uploadSize = 0, this._bufferSize = 0, 
            this._u8Array = null, e.__super.call(this);
        }
        r(e, "laya.webgl.utils.Buffer2D", V);
        var i = e.prototype;
        return i.setByteLength = function(t) {
            this._byteLength !== t &amp;&amp; (t &lt;= this._bufferSize || this._resizeBuffer(2 * t + 256, !0), 
            this._byteLength = t);
        }, i.needSize = function(t) {
            var e = this._byteLength;
            if (t) {
                var i = this._byteLength + t;
                i &lt;= this._bufferSize || this._resizeBuffer(i &lt;&lt; 1, !0), this._byteLength = i;
            }
            return e;
        }, i._bufferData = function() {
            this._maxsize = Math.max(this._maxsize, this._byteLength), A.loopCount % 30 == 0 &amp;&amp; (this._buffer.byteLength &gt; this._maxsize + 64 &amp;&amp; (this._buffer = this._buffer.slice(0, this._maxsize + 64), 
            this._bufferSize = this._buffer.byteLength, this._checkArrayUse()), this._maxsize = this._byteLength), 
            this._uploadSize &lt; this._buffer.byteLength &amp;&amp; (this._uploadSize = this._buffer.byteLength, 
            Pt.instance.bufferData(this._bufferType, this._uploadSize, this._bufferUsage)), 
            Pt.instance.bufferSubData(this._bufferType, 0, new Uint8Array(this._buffer, 0, this._byteLength));
        }, i._bufferSubData = function(t, e, i) {
            if (void 0 === t &amp;&amp; (t = 0), void 0 === e &amp;&amp; (e = 0), void 0 === i &amp;&amp; (i = 0), this._maxsize = Math.max(this._maxsize, this._byteLength), 
            A.loopCount % 30 == 0 &amp;&amp; (this._buffer.byteLength &gt; this._maxsize + 64 &amp;&amp; (this._buffer = this._buffer.slice(0, this._maxsize + 64), 
            this._bufferSize = this._buffer.byteLength, this._checkArrayUse()), this._maxsize = this._byteLength), 
            this._uploadSize &lt; this._buffer.byteLength &amp;&amp; (this._uploadSize = this._buffer.byteLength, 
            Pt.instance.bufferData(this._bufferType, this._uploadSize, this._bufferUsage)), 
            e || i) {
                var n = this._buffer.slice(e, i);
                Pt.instance.bufferSubData(this._bufferType, t, n);
            } else Pt.instance.bufferSubData(this._bufferType, t, this._buffer);
        }, i._checkArrayUse = function() {}, i._bind_uploadForVAO = function() {
            return !!this._upload &amp;&amp; (this._upload = !1, this._bindForVAO(), this._bufferData(), 
            !0);
        }, i._bind_upload = function() {
            return !!this._upload &amp;&amp; (this._upload = !1, this.bind(), this._bufferData(), !0);
        }, i._bind_subUpload = function(t, e, i) {
            return void 0 === t &amp;&amp; (t = 0), void 0 === e &amp;&amp; (e = 0), void 0 === i &amp;&amp; (i = 0), 
            !!this._upload &amp;&amp; (this._upload = !1, this.bind(), this._bufferSubData(t, e, i), 
            !0);
        }, i._resizeBuffer = function(t, e) {
            var i = this._buffer;
            if (t &lt;= i.byteLength) return this;
            var n = this._u8Array;
            if (e &amp;&amp; i &amp;&amp; i.byteLength &gt; 0) {
                var r = new ArrayBuffer(t), s = n &amp;&amp; n.buffer == i ? n : new Uint8Array(i);
                (n = this._u8Array = new Uint8Array(r)).set(s, 0), i = this._buffer = r;
            } else i = this._buffer = new ArrayBuffer(t), this._u8Array = null;
            return this._checkArrayUse(), this._upload = !0, this._bufferSize = i.byteLength, 
            this;
        }, i.append = function(t) {
            this._upload = !0;
            var e, i = 0;
            i = t.byteLength, t instanceof Uint8Array ? (this._resizeBuffer(this._byteLength + i, !0), 
            e = new Uint8Array(this._buffer, this._byteLength)) : t instanceof Uint16Array ? (this._resizeBuffer(this._byteLength + i, !0), 
            e = new Uint16Array(this._buffer, this._byteLength)) : t instanceof Float32Array &amp;&amp; (this._resizeBuffer(this._byteLength + i, !0), 
            e = new Float32Array(this._buffer, this._byteLength)), e.set(t, 0), this._byteLength += i, 
            this._checkArrayUse();
        }, i.appendU16Array = function(t, e) {
            this._resizeBuffer(this._byteLength + 2 * e, !0);
            var i = new Uint16Array(this._buffer, this._byteLength, e);
            if (6 == e) i[0] = t[0], i[1] = t[1], i[2] = t[2], i[3] = t[3], i[4] = t[4], i[5] = t[5]; else if (e &gt;= 100) i.set(new Uint16Array(t.buffer, 0, e)); else for (var n = 0; n &lt; e; n++) i[n] = t[n];
            this._byteLength += 2 * e, this._checkArrayUse();
        }, i.appendEx = function(t, e) {
            this._upload = !0;
            var i = 0;
            i = t.byteLength, this._resizeBuffer(this._byteLength + i, !0), new e(this._buffer, this._byteLength).set(t, 0), 
            this._byteLength += i, this._checkArrayUse();
        }, i.appendEx2 = function(t, e, i, n) {
            void 0 === n &amp;&amp; (n = 1), this._upload = !0;
            var r, s = 0;
            s = i * n, this._resizeBuffer(this._byteLength + s, !0), r = new e(this._buffer, this._byteLength);
            var a = 0;
            for (a = 0; a &lt; i; a++) r[a] = t[a];
            this._byteLength += s, this._checkArrayUse();
        }, i.getBuffer = function() {
            return this._buffer;
        }, i.setNeedUpload = function() {
            this._upload = !0;
        }, i.getNeedUpload = function() {
            return this._upload;
        }, i.upload = function() {
            var t = this._bind_upload();
            return Pt.instance.bindBuffer(this._bufferType, null), 34962 == this._bufferType &amp;&amp; (V._bindedVertexBuffer = null), 
            34963 == this._bufferType &amp;&amp; (V._bindedIndexBuffer = null), Ke.activeShader = null, 
            t;
        }, i.subUpload = function(t, e, i) {
            void 0 === t &amp;&amp; (t = 0), void 0 === e &amp;&amp; (e = 0), void 0 === i &amp;&amp; (i = 0);
            var n = this._bind_subUpload();
            return Pt.instance.bindBuffer(this._bufferType, null), 34962 == this._bufferType &amp;&amp; (V._bindedVertexBuffer = null), 
            34963 == this._bufferType &amp;&amp; (V._bindedIndexBuffer = null), Ke.activeShader = null, 
            n;
        }, i._disposeResource = function() {
            this._upload = !0, this._uploadSize = 0;
        }, i.clear = function() {
            this._byteLength = 0, this._upload = !0;
        }, s(0, i, "bufferLength", function() {
            return this._buffer.byteLength;
        }), s(0, i, "byteLength", null, function(t) {
            this.setByteLength(t);
        }), e.__int__ = function(t) {}, e.FLOAT32 = 4, e.SHORT = 2, e;
    }()), Be = (function(t) {
        function e(t, i, n, r) {
            this._sv_blurInfo2 = [ 0, 0, 1, 0 ], this._color = null, this._color_native = null, 
            this._blurInof1_native = null, this._blurInof2_native = null, e.__super.call(this), 
            this._elements = new Float32Array(9), this._sv_blurInfo1 = new Array(4), void 0 === i &amp;&amp; (i = 4), 
            void 0 === n &amp;&amp; (n = 6), void 0 === r &amp;&amp; (r = 6), this._color = new o(t), this.blur = Math.min(i, 20), 
            this.offX = n, this.offY = r, this._sv_blurInfo1[0] = this._sv_blurInfo1[1] = this.blur, 
            this._sv_blurInfo1[2] = n, this._sv_blurInfo1[3] = -r, this._glRender = new le();
        }
        r(e, "laya.filters.GlowFilter", c);
        var i = e.prototype;
        i.getColor = function() {
            return this._color.arrColor;
        }, i.getColorNative = function() {
            this._color_native || (this._color_native = new Float32Array(4));
            var t = this.getColor();
            return this._color_native[0] = t[0], this._color_native[1] = t[1], this._color_native[2] = t[2], 
            this._color_native[3] = t[3], this._color_native;
        }, i.getBlurInfo1Native = function() {
            return this._blurInof1_native || (this._blurInof1_native = new Float32Array(4)), 
            this._blurInof1_native[0] = this._blurInof1_native[1] = this.blur, this._blurInof1_native[2] = this.offX, 
            this._blurInof1_native[3] = this.offY, this._blurInof1_native;
        }, i.getBlurInfo2Native = function() {
            return this._blurInof2_native || (this._blurInof2_native = new Float32Array(4)), 
            this._blurInof2_native[2] = 1, this._blurInof2_native;
        }, s(0, i, "type", function() {
            return 8;
        }), s(0, i, "offY", function() {
            return this._elements[6];
        }, function(t) {
            this._elements[6] = t, this._sv_blurInfo1[3] = -t;
        }), s(0, i, "offX", function() {
            return this._elements[5];
        }, function(t) {
            this._elements[5] = t, this._sv_blurInfo1[2] = t;
        }), s(0, i, "blur", function() {
            return this._elements[4];
        }, function(t) {
            this._elements[4] = t, this._sv_blurInfo1[0] = this._sv_blurInfo1[1] = t;
        });
    }(), function(t) {
        function e() {
            e.__super.call(this, 24, 4, 4), this.canReuse = !0, this.setAttributes(laya.webgl.utils.MeshQuadTexture._fixattriInfo), 
            laya.webgl.utils.MeshQuadTexture._fixib ? (this._ib = laya.webgl.utils.MeshQuadTexture._fixib, 
            this._quadNum = e._maxIB) : (this.createQuadIB(e._maxIB), laya.webgl.utils.MeshQuadTexture._fixib = this._ib);
        }
        r(e, "laya.webgl.utils.MeshQuadTexture", b);
        var i = e.prototype;
        return i.releaseMesh = function() {
            this._vb.setByteLength(0), this.vertNum = 0, this.indexNum = 0, laya.webgl.utils.MeshQuadTexture._POOL.push(this);
        }, i.destroy = function() {
            this._vb.destroy(), this._vb.deleteBuffer();
        }, i.addQuad = function(t, e, i, n) {
            var r = this._vb, s = r._byteLength &gt;&gt; 2;
            r.setByteLength(s + 24 &lt;&lt; 2);
            var a = r._floatArray32 || r.getFloat32Array(), o = r._uint32Array, h = s, l = n ? 255 : 0;
            a[h++] = t[0], a[h++] = t[1], a[h++] = e[0], a[h++] = e[1], o[h++] = i, o[h++] = l, 
            a[h++] = t[2], a[h++] = t[3], a[h++] = e[2], a[h++] = e[3], o[h++] = i, o[h++] = l, 
            a[h++] = t[4], a[h++] = t[5], a[h++] = e[4], a[h++] = e[5], o[h++] = i, o[h++] = l, 
            a[h++] = t[6], a[h++] = t[7], a[h++] = e[6], a[h++] = e[7], o[h++] = i, o[h++] = l, 
            r._upload = !0;
        }, e.getAMesh = function(t) {
            var i = null;
            return i = laya.webgl.utils.MeshQuadTexture._POOL.length ? laya.webgl.utils.MeshQuadTexture._POOL.pop() : new e(), 
            t &amp;&amp; i._vb._resizeBuffer(1572864, !1), i;
        }, e.const_stride = 24, e._fixib = null, e._maxIB = 16384, e._POOL = [], n(e, [ "_fixattriInfo", function() {
            return this._fixattriInfo = [ 5126, 4, 0, 5121, 4, 16, 5121, 4, 20 ];
        } ]), e;
    }()), Fe = function(t) {
        function e() {
            this.url = null, this.loaded = !1, this.data = null, this.audioBuffer = null, this.__toPlays = null, 
            this._disposed = !1, e.__super.call(this);
        }
        r(e, "laya.media.webaudio.WebAudioSound", m);
        var i = e.prototype;
        return i.load = function(t) {
            var i = this;
            if (t = q.formatURL(t), this.url = t, this.audioBuffer = e._dataCache[t], this.audioBuffer) this._loaded(this.audioBuffer); else if (e.e.on("loaded:" + t, this, this._loaded), 
            e.e.on("err:" + t, this, this._err), !e.__loadingSound[t]) {
                e.__loadingSound[t] = !0;
                var n = new Dt.window.XMLHttpRequest();
                n.open("GET", t, !0), n.responseType = "arraybuffer", n.onload = function() {
                    i._disposed ? i._removeLoadEvents() : (i.data = n.response, e.buffs.push({
                        buffer: i.data,
                        url: i.url
                    }), e.decode());
                }, n.onerror = function(t) {
                    i._err();
                }, n.send();
            }
        }, i._err = function() {
            this._removeLoadEvents(), e.__loadingSound[this.url] = !1, this.event("error");
        }, i._loaded = function(t) {
            this._removeLoadEvents(), this._disposed || (this.audioBuffer = t, e._dataCache[this.url] = this.audioBuffer, 
            this.loaded = !0, this.event("complete"));
        }, i._removeLoadEvents = function() {
            e.e.off("loaded:" + this.url, this, this._loaded), e.e.off("err:" + this.url, this, this._err);
        }, i.__playAfterLoaded = function() {
            if (this.__toPlays) {
                var t, e = 0, i = 0;
                i = (t = this.__toPlays).length;
                var n;
                for (e = 0; e &lt; i; e++) (n = t[e])[2] &amp;&amp; !n[2].isStopped &amp;&amp; this.play(n[0], n[1], n[2]);
                this.__toPlays.length = 0;
            }
        }, i.play = function(t, e, i) {
            return void 0 === t &amp;&amp; (t = 0), void 0 === e &amp;&amp; (e = 0), i = i || new Ze(), this.audioBuffer || this.url &amp;&amp; (this.__toPlays || (this.__toPlays = []), 
            this.__toPlays.push([ t, e, i ]), this.once("complete", this, this.__playAfterLoaded), 
            this.load(this.url)), i.url = this.url, i.loops = e, i.audioBuffer = this.audioBuffer, 
            i.startTime = t, i.play(), ye.addChannel(i), i;
        }, i.dispose = function() {
            this._disposed = !0, delete e._dataCache[this.url], delete e.__loadingSound[this.url], 
            this.audioBuffer = null, this.data = null, this.__toPlays = [];
        }, s(0, i, "duration", function() {
            return this.audioBuffer ? this.audioBuffer.duration : 0;
        }), e.decode = function() {
            e.buffs.length &lt;= 0 || e.isDecoding || (e.isDecoding = !0, e.tInfo = e.buffs.shift(), 
            e.ctx.decodeAudioData(e.tInfo.buffer, e._done, e._fail));
        }, e._done = function(t) {
            e.e.event("loaded:" + e.tInfo.url, t), e.isDecoding = !1, e.decode();
        }, e._fail = function() {
            e.e.event("err:" + e.tInfo.url, null), e.isDecoding = !1, e.decode();
        }, e._playEmptySound = function() {
            if (null != e.ctx) {
                var t = e.ctx.createBufferSource();
                t.buffer = e._miniBuffer, t.connect(e.ctx.destination), t.start(0, 0, 0);
            }
        }, e._unlock = function() {
            e._unlocked || (e._playEmptySound(), "running" == e.ctx.state &amp;&amp; (Dt.document.removeEventListener("mousedown", e._unlock, !0), 
            Dt.document.removeEventListener("touchend", e._unlock, !0), Dt.document.removeEventListener("touchstart", e._unlock, !0), 
            e._unlocked = !0));
        }, e.initWebAudio = function() {
            "running" != e.ctx.state &amp;&amp; (e._unlock(), Dt.document.addEventListener("mousedown", e._unlock, !0), 
            Dt.document.addEventListener("touchend", e._unlock, !0), Dt.document.addEventListener("touchstart", e._unlock, !0));
        }, e._dataCache = {}, e.buffs = [], e.isDecoding = !1, e._unlocked = !1, e.tInfo = null, 
        e.__loadingSound = {}, n(e, [ "window", function() {
            return this.window = Dt.window;
        }, "webAudioEnabled", function() {
            return this.webAudioEnabled = e.window.AudioContext || e.window.webkitAudioContext || e.window.mozAudioContext;
        }, "ctx", function() {
            return this.ctx = e.webAudioEnabled ? new (e.window.AudioContext || e.window.webkitAudioContext || e.window.mozAudioContext)() : void 0;
        }, "_miniBuffer", function() {
            return this._miniBuffer = e.ctx.createBuffer(1, 1, 22050);
        }, "e", function() {
            return this.e = new m();
        } ]), e;
    }(), Oe = (function(t) {
        function e(t, i, n, r) {
            this._endian = null, this._socket = null, this._connected = !1, this._addInputPosition = 0, 
            this._input = null, this._output = null, this.disableInput = !1, this._byteClass = null, 
            this.protocols = [], e.__super.call(this), void 0 === i &amp;&amp; (i = 0), this._byteClass = n || Kt, 
            this.protocols = r, this.endian = "bigEndian", t &amp;&amp; i &gt; 0 &amp;&amp; i &lt; 65535 &amp;&amp; this.connect(t, i);
        }
        r(e, "laya.net.Socket", m);
        var i = e.prototype;
        i.connect = function(t, e) {
            var i = "ws://" + t + ":" + e;
            this.connectByUrl(i);
        }, i.connectByUrl = function(t) {
            var e = this;
            null != this._socket &amp;&amp; this.close(), this._socket &amp;&amp; this.cleanSocket(), this.protocols &amp;&amp; 0 != this.protocols.length ? this._socket = new Dt.window.WebSocket(t, this.protocols) : this._socket = new Dt.window.WebSocket(t), 
            this._socket.binaryType = "arraybuffer", this._output = new this._byteClass(), this._output.endian = this.endian, 
            this._input = new this._byteClass(), this._input.endian = this.endian, this._addInputPosition = 0, 
            this._socket.onopen = function(t) {
                e._onOpen(t);
            }, this._socket.onmessage = function(t) {
                e._onMessage(t);
            }, this._socket.onclose = function(t) {
                e._onClose(t);
            }, this._socket.onerror = function(t) {
                e._onError(t);
            };
        }, i.cleanSocket = function() {
            this.close(), this._connected = !1, this._socket.onopen = null, this._socket.onmessage = null, 
            this._socket.onclose = null, this._socket.onerror = null, this._socket = null;
        }, i.close = function() {
            if (null != this._socket) try {
                this._socket.close();
            } catch (t) {}
        }, i._onOpen = function(t) {
            this._connected = !0, this.event("open", t);
        }, i._onMessage = function(t) {
            if (t &amp;&amp; t.data) {
                var e = t.data;
                if (this.disableInput &amp;&amp; e) this.event("message", e); else {
                    this._input.length &gt; 0 &amp;&amp; this._input.bytesAvailable &lt; 1 &amp;&amp; (this._input.clear(), 
                    this._addInputPosition = 0);
                    var i = this._input.pos;
                    !this._addInputPosition &amp;&amp; (this._addInputPosition = 0), this._input.pos = this._addInputPosition, 
                    e &amp;&amp; ("string" == typeof e ? this._input.writeUTFBytes(e) : this._input.writeArrayBuffer(e), 
                    this._addInputPosition = this._input.pos, this._input.pos = i), this.event("message", e);
                }
            }
        }, i._onClose = function(t) {
            this._connected = !1, this.event("close", t);
        }, i._onError = function(t) {
            this.event("error", t);
        }, i.send = function(t) {
            this._socket.send(t);
        }, i.flush = function() {
            if (this._output &amp;&amp; this._output.length &gt; 0) {
                var t;
                try {
                    this._socket &amp;&amp; this._socket.send(this._output.__getBuffer().slice(0, this._output.length));
                } catch (e) {
                    t = e;
                }
                this._output.endian = this.endian, this._output.clear(), t &amp;&amp; this.event("error", t);
            }
        }, s(0, i, "input", function() {
            return this._input;
        }), s(0, i, "output", function() {
            return this._output;
        }), s(0, i, "connected", function() {
            return this._connected;
        }), s(0, i, "endian", function() {
            return this._endian;
        }, function(t) {
            this._endian = t, null != this._input &amp;&amp; (this._input.endian = t), null != this._output &amp;&amp; (this._output.endian = t);
        }), e.LITTLE_ENDIAN = "littleEndian", e.BIG_ENDIAN = "bigEndian";
    }(), function(t) {
        function e(t) {
            this.u_colorMatrix = null, this.strength = 0, this.blurInfo = null, this.colorMat = null, 
            this.colorAlpha = null, void 0 === t &amp;&amp; (t = 0), e.__super.call(this, 1, t), this._attribLocation = [ "posuv", 0, "attribColor", 1, "attribFlags", 2 ];
        }
        return r(e, "laya.webgl.shader.d2.value.TextureSV", X), e.prototype.clear = function() {
            this.texture = null, this.shader = null, this.defines._value = this.subID + (wt.shaderHighPrecision ? 1024 : 0);
        }, e;
    }()), Ne = (function(t) {
        function e() {
            e.__super.call(this);
        }
        r(e, "laya.components.CommonScript", p);
        var i = e.prototype;
        i.onAwake = function() {}, i.onEnable = function() {}, i.onStart = function() {}, 
        i.onUpdate = function() {}, i.onLateUpdate = function() {}, i.onDisable = function() {}, 
        i.onDestroy = function() {}, s(0, i, "isSingleton", function() {
            return !1;
        });
    }(), function(t) {
        function e() {
            this.retryNum = 1, this.retryDelay = 0, this.maxLoader = 5, this._loaders = [], 
            this._loaderCount = 0, this._resInfos = [], this._infoPool = [], this._maxPriority = 5, 
            this._failRes = {}, this._statInfo = {
                count: 1,
                loaded: 1
            }, e.__super.call(this);
            for (var t = 0; t &lt; this._maxPriority; t++) this._resInfos[t] = [];
        }
        var s;
        r(e, "laya.net.LoaderManager", m);
        var a = e.prototype;
        return a.getProgress = function() {
            return this._statInfo.loaded / this._statInfo.count;
        }, a.resetProgress = function() {
            this._statInfo.count = this._statInfo.loaded = 1;
        }, a.create = function(t, e, i, n, r, s, a, o) {
            void 0 === a &amp;&amp; (a = 1), void 0 === o &amp;&amp; (o = !0), this._create(t, !0, e, i, n, r, s, a, o);
        }, a._create = function(t, e, i, n, r, s, a, o, h) {
            if (void 0 === o &amp;&amp; (o = 1), void 0 === h &amp;&amp; (h = !0), t instanceof Array) {
                var l = !0, u = t, c = u.length, _ = 0;
                if (n) var f = g.create(n.caller, n.method, n.args, !1);
                for (var d = 0; d &lt; c; d++) {
                    var p = u[d];
                    "string" == typeof p &amp;&amp; (p = u[d] = {
                        url: p
                    }), p.progress = 0;
                }
                for (d = 0; d &lt; c; d++) {
                    p = u[d];
                    var m = n ? g.create(null, function(t, e) {
                        t.progress = e;
                        for (var i = 0, n = 0; n &lt; c; n++) i += u[n].progress;
                        var r = i / c;
                        f.runWith(r);
                    }, [ p ], !1) : null, v = n || i ? g.create(null, function(t, e) {
                        _++, t.progress = 1, e || (l = !1), _ === c &amp;&amp; i &amp;&amp; i.runWith(l);
                    }, [ p ]) : null;
                    this._createOne(p.url, e, v, m, p.type || r, p.constructParams || s, p.propertyParams || a, p.priority || o, h);
                }
            } else this._createOne(t, e, i, n, r, s, a, o, h);
        }, a._createOne = function(t, n, r, s, a, o, h, l, u) {
            void 0 === l &amp;&amp; (l = 1), void 0 === u &amp;&amp; (u = !0);
            var c = this.getRes(t);
            if (c) !n &amp;&amp; c instanceof laya.resource.Resource &amp;&amp; c._addReference(), s &amp;&amp; s.runWith(1), 
            r &amp;&amp; r.runWith(c); else {
                var _ = ie.getFileExtension(t);
                if (a || (a = e.createMap[_] ? e.createMap[_][0] : null), !a) return void this.load(t, r, s, a, l, u);
                if (!De.parserMap[a]) return void this.load(t, r, s, a, l, u);
                this._createLoad(t, g.create(null, function(e) {
                    e &amp;&amp; (!n &amp;&amp; e instanceof laya.resource.Resource &amp;&amp; e._addReference(), e._setCreateURL(t)), 
                    r &amp;&amp; r.runWith(e), i.loader.event(t);
                }), s, a, o, h, l, u, !0);
            }
        }, a.load = function(t, n, r, a, o, h, l, u, c) {
            var _ = this;
            if (void 0 === o &amp;&amp; (o = 1), void 0 === h &amp;&amp; (h = !0), void 0 === u &amp;&amp; (u = !1), 
            void 0 === c &amp;&amp; (c = !1), t instanceof Array) return this._loadAssets(t, n, r, a, o, h, l);
            var f = De.getRes(t);
            if (u || null == f) {
                var d;
                d = t, (t = ce.getFileLoadPath(t)) != d &amp;&amp; "nativeimage" !== a ? a = "atlas" : d = null;
                var p = e._resMap[t];
                p ? (n &amp;&amp; (d ? n &amp;&amp; p._createListener("complete", this, this._resInfoLoaded, [ d, n ], !1, !1) : n &amp;&amp; p._createListener("complete", n.caller, n.method, n.args, !1, !1)), 
                r &amp;&amp; p._createListener("progress", r.caller, r.method, r.args, !1, !1)) : ((p = this._infoPool.length ? this._infoPool.pop() : new s()).url = t, 
                p.type = a, p.cache = h, p.group = l, p.ignoreCache = u, p.useWorkerLoader = c, 
                p.originalUrl = d, n &amp;&amp; p.on("complete", n.caller, n.method, n.args), r &amp;&amp; p.on("progress", r.caller, r.method, r.args), 
                e._resMap[t] = p, o = o &lt; this._maxPriority ? o : this._maxPriority - 1, this._resInfos[o].push(p), 
                this._statInfo.count++, this.event("progress", this.getProgress()), this._next());
            } else i.systemTimer.frameOnce(1, null, function() {
                r &amp;&amp; r.runWith(1), n &amp;&amp; n.runWith(f instanceof Array ? [ f ] : f), _._loaderCount || _.event("complete");
            });
            return this;
        }, a._resInfoLoaded = function(t, e) {
            e.runWith(De.getRes(t));
        }, a._createLoad = function(t, n, r, a, o, h, l, u, c) {
            var _ = this;
            if (void 0 === l &amp;&amp; (l = 1), void 0 === u &amp;&amp; (u = !0), void 0 === c &amp;&amp; (c = !1), 
            t instanceof Array) return this._loadAssets(t, n, r, a, l, u);
            var f = De.getRes(t);
            if (null != f) i.systemTimer.frameOnce(1, null, function() {
                r &amp;&amp; r.runWith(1), n &amp;&amp; n.runWith(f), _._loaderCount || _.event("complete");
            }); else {
                var d = e._resMap[t];
                d ? (n &amp;&amp; d._createListener("complete", n.caller, n.method, n.args, !1, !1), r &amp;&amp; d._createListener("progress", r.caller, r.method, r.args, !1, !1)) : ((d = this._infoPool.length ? this._infoPool.pop() : new s()).url = t, 
                d.type = a, d.cache = !1, d.ignoreCache = c, d.originalUrl = null, d.createCache = u, 
                d.createConstructParams = o, d.createPropertyParams = h, n &amp;&amp; d.on("complete", n.caller, n.method, n.args), 
                r &amp;&amp; d.on("progress", r.caller, r.method, r.args), e._resMap[t] = d, l = l &lt; this._maxPriority ? l : this._maxPriority - 1, 
                this._resInfos[l].push(d), this._statInfo.count++, this.event("progress", this.getProgress()), 
                this._next());
            }
            return this;
        }, a._next = function() {
            if (!(this._loaderCount &gt;= this.maxLoader)) {
                for (var t = 0; t &lt; this._maxPriority; t++) for (var e = this._resInfos[t]; e.length &gt; 0; ) {
                    var i = e.shift();
                    if (i) return this._doLoad(i);
                }
                this._loaderCount || this.event("complete");
            }
        }, a._doLoad = function(t) {
            function e(e) {
                i.offAll(), i._data = null, i._customParse = !1, n._loaders.push(i), n._endLoad(t, e instanceof Array ? [ e ] : e), 
                n._loaderCount--, n._next();
            }
            this._loaderCount++;
            var i = this._loaders.length ? this._loaders.pop() : new De();
            i.on("complete", null, e), i.on("progress", null, function(e) {
                t.event("progress", e);
            }), i.on("error", null, function(t) {
                e(null);
            });
            var n = this;
            i._constructParams = t.createConstructParams, i._propertyParams = t.createPropertyParams, 
            i._createCache = t.createCache, i.load(t.url, t.type, t.cache, t.group, t.ignoreCache, t.useWorkerLoader);
        }, a._endLoad = function(t, n) {
            var r = t.url;
            if (null == n) {
                var s = this._failRes[r] || 0;
                if (s &lt; this.retryNum) return console.warn("[warn]Retry to load:", r), this._failRes[r] = s + 1, 
                void i.systemTimer.once(this.retryDelay, this, this._addReTry, [ t ], !1);
                De.clearRes(r), console.warn("[error]Failed to load:", r), this.event("error", r);
            }
            this._failRes[r] &amp;&amp; (this._failRes[r] = 0), delete e._resMap[r], t.originalUrl &amp;&amp; (n = De.getRes(t.originalUrl)), 
            t.event("complete", n), t.offAll(), this._infoPool.push(t), this._statInfo.loaded++, 
            this.event("progress", this.getProgress());
        }, a._addReTry = function(t) {
            this._resInfos[this._maxPriority - 1].push(t), this._next();
        }, a.clearRes = function(t) {
            De.clearRes(t);
        }, a.clearTextureRes = function(t) {
            De.clearTextureRes(t);
        }, a.getRes = function(t) {
            return De.getRes(t);
        }, a.cacheRes = function(t, e) {
            De.cacheRes(t, e);
        }, a.setGroup = function(t, e) {
            De.setGroup(t, e);
        }, a.clearResByGroup = function(t) {
            De.clearResByGroup(t);
        }, a.clearUnLoaded = function() {
            for (var t = 0; t &lt; this._maxPriority; t++) {
                for (var i = this._resInfos[t], n = i.length - 1; n &gt; -1; n--) {
                    var r = i[n];
                    r &amp;&amp; (r.offAll(), this._infoPool.push(r));
                }
                i.length = 0;
            }
            this._loaderCount = 0, e._resMap = {};
        }, a.cancelLoadByUrls = function(t) {
            if (t) for (var e = 0, i = t.length; e &lt; i; e++) this.cancelLoadByUrl(t[e]);
        }, a.cancelLoadByUrl = function(t) {
            for (var i = 0; i &lt; this._maxPriority; i++) for (var n = this._resInfos[i], r = n.length - 1; r &gt; -1; r--) {
                var s = n[r];
                s &amp;&amp; s.url === t &amp;&amp; (n[r] = null, s.offAll(), this._infoPool.push(s));
            }
            e._resMap[t] &amp;&amp; delete e._resMap[t];
        }, a._loadAssets = function(t, e, i, n, r, s, a) {
            void 0 === r &amp;&amp; (r = 1), void 0 === s &amp;&amp; (s = !0);
            for (var o = t.length, h = 0, l = 0, u = [], c = !0, _ = 0; _ &lt; o; _++) {
                var f = t[_];
                "string" == typeof f &amp;&amp; (f = {
                    url: f,
                    type: n,
                    size: 1,
                    priority: r
                }), f.size || (f.size = 1), f.progress = 0, l += f.size, u.push(f);
                var d = i ? g.create(null, function(t, e) {
                    if (null != i) {
                        t.progress = e;
                        for (var n = 0, r = 0; r &lt; u.length; r++) {
                            var s = u[r];
                            n += s.size * s.progress;
                        }
                        var a = n / l;
                        i.runWith(a);
                    }
                }, [ f ], !1) : null, p = e || i ? g.create(null, function(t, i) {
                    h++, t.progress = 1, i || (c = !1), h === o &amp;&amp; e &amp;&amp; e.runWith(c);
                }, [ f ]) : null;
                this.load(f.url, p, d, f.type, f.priority || 1, s, f.group || a, !1, f.useWorkerLoader);
            }
            return this;
        }, a.decodeBitmaps = function(t) {
            var e, i = 0, n = t.length;
            for (e = Mt._context, i = 0; i &lt; n; i++) {
                var r;
                if (r = De.getAtlas(t[i])) this._decodeTexture(r[0], e); else {
                    var s;
                    (s = this.getRes(t[i])) &amp;&amp; s instanceof laya.resource.Texture &amp;&amp; this._decodeTexture(s, e);
                }
            }
        }, a._decodeTexture = function(t, e) {
            var n = t.bitmap;
            if (t &amp;&amp; n) {
                var r = n.source || n.image;
                r &amp;&amp; i.__typeof(r, Dt.window.HTMLImageElement) &amp;&amp; (e.drawImage(r, 0, 0, 1, 1), e.getImageData(0, 0, 1, 1));
            }
        }, e.cacheRes = function(t, e) {
            De.cacheRes(t, e);
        }, e._resMap = {}, n(e, [ "createMap", function() {
            return this.createMap = {
                atlas: [ null, "atlas" ]
            };
        } ]), e.__init$ = function() {
            s = function(t) {
                function e() {
                    this.url = null, this.type = null, this.cache = !1, this.group = null, this.ignoreCache = !1, 
                    this.useWorkerLoader = !1, this.originalUrl = null, this.createCache = !1, this.createConstructParams = null, 
                    this.createPropertyParams = null, e.__super.call(this);
                }
                return r(e, "", m), e;
            }();
        }, e;
    }()), ke = function(t) {
        function e() {
            e.__super.call(this, 24, 4, 4), this.canReuse = !0, this.setAttributes(laya.webgl.utils.MeshTexture._fixattriInfo);
        }
        r(e, "laya.webgl.utils.MeshTexture", b);
        var i = e.prototype;
        return i.addData = function(t, e, i, n, r) {
            var s = this._vb, a = this._ib, o = t.length &gt;&gt; 1, h = s.needSize(24 * o) &gt;&gt; 2, l = s._floatArray32 || s.getFloat32Array(), u = s._uint32Array, c = 0, _ = n.a, f = n.b, d = n.c, p = n.d, m = n.tx, g = n.ty, v = 0;
            for (v = 0; v &lt; o; v++) {
                var y = t[c], x = t[c + 1];
                l[h] = y * _ + x * d + m, l[h + 1] = y * f + x * p + g, l[h + 2] = e[c], l[h + 3] = e[c + 1], 
                u[h + 4] = r, u[h + 5] = 255, h += 6, c += 2;
            }
            s.setNeedUpload();
            var T = this.vertNum, b = i.length, w = a.needSize(i.byteLength), C = a.getUint16Array(), A = w &gt;&gt; 1;
            if (T &gt; 0) {
                var E = A + b, S = 0;
                for (v = A; v &lt; E; v++, S++) C[v] = i[S] + T;
            } else C.set(i, A);
            a.setNeedUpload(), this.vertNum += o, this.indexNum += i.length;
        }, i.releaseMesh = function() {
            this._vb.setByteLength(0), this._ib.setByteLength(0), this.vertNum = 0, this.indexNum = 0, 
            laya.webgl.utils.MeshTexture._POOL.push(this);
        }, i.destroy = function() {
            this._ib.destroy(), this._vb.destroy(), this._ib.disposeResource(), this._vb.deleteBuffer();
        }, e.getAMesh = function(t) {
            var i;
            return i = laya.webgl.utils.MeshTexture._POOL.length ? laya.webgl.utils.MeshTexture._POOL.pop() : new e(), 
            t &amp;&amp; i._vb._resizeBuffer(1572864, !1), i;
        }, e.const_stride = 24, e._POOL = [], n(e, [ "_fixattriInfo", function() {
            return this._fixattriInfo = [ 5126, 4, 0, 5121, 4, 16, 5121, 4, 20 ];
        } ]), e;
    }(), Ue = function(t) {
        function e() {
            this.totalCount = 0, this._completeHandler = null, this._toLoadList = null, this._isLoading = !1, 
            this._curUrl = null, e.__super.call(this), this._completeHandler = new g(this, this.onOneLoadComplete), 
            this.reset();
        }
        r(e, "laya.net.SceneLoader", m);
        var a = e.prototype;
        return a.reset = function() {
            this._toLoadList = [], this._isLoading = !1, this.totalCount = 0;
        }, a.load = function(t, e, i) {
            if (void 0 === e &amp;&amp; (e = !1), void 0 === i &amp;&amp; (i = !0), t instanceof Array) {
                var n = 0, r = 0;
                for (r = t.length, n = 0; n &lt; r; n++) this._addToLoadList(t[n], e);
            } else this._addToLoadList(t, e);
            i &amp;&amp; this._checkNext();
        }, a._addToLoadList = function(t, e) {
            void 0 === e &amp;&amp; (e = !1), this._toLoadList.indexOf(t) &gt;= 0 || De.getRes(t) || (e ? this._toLoadList.push({
                url: t
            }) : this._toLoadList.push(t), this.totalCount++);
        }, a._checkNext = function() {
            if (!this._isLoading) {
                if (0 == this._toLoadList.length) return void this.event("complete");
                var t;
                "string" == typeof (t = this._toLoadList.pop()) ? this.loadOne(t) : this.loadOne(t.url, !0);
            }
        }, a.loadOne = function(t, n) {
            void 0 === n &amp;&amp; (n = !1), this._curUrl = t;
            var r = ie.getFileExtension(this._curUrl);
            n ? i.loader.create(t, this._completeHandler) : e.LoadableExtensions[r] ? i.loader.load(t, this._completeHandler, null, e.LoadableExtensions[r]) : t != ce.getFileLoadPath(t) || e.No3dLoadTypes[r] || !Ne.createMap[r] ? i.loader.load(t, this._completeHandler) : i.loader.create(t, this._completeHandler);
        }, a.onOneLoadComplete = function() {
            this._isLoading = !1, De.getRes(this._curUrl) || console.log("Fail to load:", this._curUrl);
            var t = ie.getFileExtension(this._curUrl);
            if (e.LoadableExtensions[t]) {
                var i;
                (i = De.getRes(this._curUrl)) &amp;&amp; i instanceof laya.components.Prefab &amp;&amp; (i = i.json), 
                i &amp;&amp; (i.loadList &amp;&amp; this.load(i.loadList, !1, !1), i.loadList3D &amp;&amp; this.load(i.loadList3D, !0, !1));
            }
            "sk" == t &amp;&amp; this.load(this._curUrl.replace(".sk", ".png"), !1, !1), this.event("progress", this.getProgress()), 
            this._checkNext();
        }, a.getProgress = function() {
            return this.loadedCount / this.totalCount;
        }, s(0, a, "loadedCount", function() {
            return this.totalCount - this.leftCount;
        }), s(0, a, "leftCount", function() {
            return this._isLoading ? this._toLoadList.length + 1 : this._toLoadList.length;
        }), n(e, [ "LoadableExtensions", function() {
            return this.LoadableExtensions = {
                scene: "json",
                scene3d: "json",
                ani: "json",
                ui: "json",
                prefab: "prefab"
            };
        }, "No3dLoadTypes", function() {
            return this.No3dLoadTypes = {
                png: !0,
                jpg: !0,
                txt: !0
            };
        } ]), e;
    }(), We = function(t) {
        function e() {
            this.italic = !1, e.__super.call(this);
        }
        r(e, "laya.display.css.TextStyle", t);
        var i = e.prototype;
        return i.reset = function() {
            return t.prototype.reset.call(this), this.italic = !1, this.align = "left", this.wordWrap = !1, 
            this.leading = 0, this.padding = [ 0, 0, 0, 0 ], this.bgColor = null, this.borderColor = null, 
            this.asPassword = !1, this.stroke = 0, this.strokeColor = "#000000", this.bold = !1, 
            this.underline = !1, this.underlineColor = null, this.currBitmapFont = null, this;
        }, i.recover = function() {
            this !== e.EMPTY &amp;&amp; U.recover("TextStyle", this.reset());
        }, i.render = function(t, e, i, n) {
            (this.bgColor || this.borderColor) &amp;&amp; e.drawRect(i, n, t.width, t.height, this.bgColor, this.borderColor, 1);
        }, e.create = function() {
            return U.getItemByClass("TextStyle", e);
        }, e.EMPTY = new e(), e;
    }(Z), Ve = function(t) {
        function e() {
            this.worker = null, this._useWorkerLoader = !1, e.__super.call(this);
            var t = this;
            this.worker = new Worker(e.workerPath), this.worker.onmessage = function(e) {
                t.workerMessage(e.data);
            };
        }
        r(e, "laya.net.WorkerLoader", m);
        var i = e.prototype;
        return i.workerMessage = function(t) {
            if (t) switch (t.type) {
              case "Image":
                this.imageLoaded(t);
                break;

              case "Disable":
                e.enable = !1;
            }
        }, i.imageLoaded = function(t) {
            if (t.dataType &amp;&amp; "imageBitmap" == t.dataType) {
                var e = new si(!0), i = e.source.getContext("2d");
                switch (t.dataType) {
                  case "imageBitmap":
                    var n = t.imageBitmap;
                    e.size(n.width, n.height), i.drawImage(n, 0, 0);
                }
                console.log("load:", t.url), e._setGPUMemory(0);
                var r = new _i();
                r.loadImageSource(e.source), this.event(t.url, r);
            } else this.event(t.url, null);
        }, i.loadImage = function(t) {
            this.worker.postMessage(t);
        }, i._loadImage = function(t) {
            var i = this;
            if (this._useWorkerLoader &amp;&amp; e._enable) {
                t = q.formatURL(t);
                var n = function(r) {
                    laya.net.WorkerLoader.I.off(t, i, n), r ? i.onLoaded(r) : e._preLoadFun.call(i, t);
                };
                laya.net.WorkerLoader.I.on(t, i, n), laya.net.WorkerLoader.I.loadImage(t);
            } else e._preLoadFun.call(i, t);
        }, s(1, e, "enable", function() {
            return e._enable;
        }, function(t) {
            e._enable != t &amp;&amp; (e._enable = t, t &amp;&amp; null == e._preLoadFun &amp;&amp; (e._enable = e.__init__()));
        }), e.__init__ = function() {
            return null == e._preLoadFun &amp;&amp; !!Worker &amp;&amp; (e._preLoadFun = De.prototype._loadImage, 
            De.prototype._loadImage = e.prototype._loadImage, e.I || (e.I = new e()), !0);
        }, e.workerSupported = function() {
            return !!Worker;
        }, e.enableWorkerLoader = function() {
            e._tryEnabled || (e.enable = !0, e._tryEnabled = !0);
        }, e.I = null, e.workerPath = "libs/workerloader.js", e._preLoadFun = null, e._enable = !1, 
        e._tryEnabled = !1, e;
    }(), Ge = function(t) {
        function e() {
            e.__super.call(this);
        }
        return r(e, "laya.webgl.BufferState2D", xt), e;
    }(), Xe = function(t) {
        function e(t) {
            e.__super.call(this, 4, 0), this._attribLocation = [ "position", 0, "attribColor", 1 ];
        }
        return r(e, "laya.webgl.shader.d2.value.PrimitiveSV", X), e;
    }(), Ye = function(t) {
        function e(t) {
            this.texcoord = null, this.position = null, this.offsetX = 300, this.offsetY = 0, 
            e.__super.call(this, 512, 0);
            var i = 8 * _t.BYTES_PE;
            this.position = [ 2, 5126, !1, i, 0 ], this.texcoord = [ 2, 5126, !1, i, 2 * _t.BYTES_PE ], 
            this.color = [ 4, 5126, !1, i, 4 * _t.BYTES_PE ];
        }
        return r(e, "laya.webgl.shader.d2.skinAnishader.SkinSV", X), e;
    }(), He = function(i) {
        function n(i, r, s, a, o) {
            this.ctx = null, this.lastScaleX = 1, this.lastScaleY = 1, this.needResetScale = !1, 
            this.maxTexW = 0, this.maxTexH = 0, this.scaleFontSize = !0, this.showDbgInfo = !1, 
            this.supportImageData = !0, n.__super.call(this), void 0 === s &amp;&amp; (s = !0), void 0 === a &amp;&amp; (a = !0), 
            void 0 === o &amp;&amp; (o = !1), this.maxTexW = i, this.maxTexH = r, this.scaleFontSize = s, 
            this.supportImageData = a, this.showDbgInfo = o, n.canvas || ((n.canvas = t.document.createElement("canvas")).width = 1024, 
            n.canvas.height = 512, n.canvas.style.left = "-10000px", n.canvas.style.position = "absolute", 
            e.body.appendChild(n.canvas), this.ctx = n.canvas.getContext("2d"));
        }
        r(n, "laya.webgl.text.CharRender_Canvas", Jt);
        var a = n.prototype;
        return a.getWidth = function(t, e) {
            return this.ctx ? (this.ctx._lastFont != t &amp;&amp; (this.ctx.font = t, this.ctx._lastFont = t), 
            this.ctx.measureText(e).width) : 0;
        }, a.scale = function(t, e) {
            if (!this.supportImageData) return this.lastScaleX = t, void (this.lastScaleY = e);
            this.lastScaleX == t &amp;&amp; this.lastScaleY == e || (this.ctx.setTransform(t, 0, 0, e, 0, 0), 
            this.lastScaleX = t, this.lastScaleY = e);
        }, a.getCharBmp = function(t, e, i, n, r, s, a, o, h, l, u) {
            if (!this.supportImageData) return this.getCharCanvas(t, e, i, n, r, s, a, o, h, l);
            var c = this.ctx;
            c.font != e &amp;&amp; (c.font = e, c._lastFont = e), s.width = c.measureText(t).width;
            var _ = s.width * this.lastScaleX, f = s.height * this.lastScaleY;
            _ += (a + h) * this.lastScaleX, f += (o + l) * this.lastScaleY, _ = Math.ceil(_), 
            f = Math.ceil(f);
            var d = (_ = Math.min(_, laya.webgl.text.CharRender_Canvas.canvas.width)) + 2 * i + 1, p = (f = Math.min(f, laya.webgl.text.CharRender_Canvas.canvas.height)) + 2 * i + 1;
            u &amp;&amp; (d = Math.max(d, u[0] + u[2] + 1), p = Math.max(p, u[1] + u[3] + 1)), c.clearRect(0, 0, d, p), 
            c.save(), c.textBaseline = "top", i &gt; 0 &amp;&amp; (c.strokeStyle = r, c.lineWidth = i, 
            c.strokeText(t, a, o)), c.fillStyle = n, c.fillText(t, a, o), this.showDbgInfo &amp;&amp; (c.strokeStyle = "#ff0000", 
            c.strokeRect(0, 0, _, f), c.strokeStyle = "#00ff00", c.strokeRect(a, o, s.width, s.height)), 
            u &amp;&amp; -1 == u[2] &amp;&amp; (u[2] = Math.ceil((s.width + 2 * i) * this.lastScaleX));
            var m = u ? c.getImageData(u[0], u[1], u[2], u[3]) : c.getImageData(0, 0, _, f);
            return c.restore(), s.bmpWidth = m.width, s.bmpHeight = m.height, m;
        }, a.getCharCanvas = function(t, e, i, r, s, a, o, h, l, u) {
            var c = this.ctx;
            c.font != e &amp;&amp; (c.font = e, c._lastFont = e), a.width = c.measureText(t).width;
            var _ = a.width * this.lastScaleX, f = a.height * this.lastScaleY;
            return _ += (o + l) * this.lastScaleX, f += (h + u) * this.lastScaleY + 1, _ = Math.min(_, this.maxTexW), 
            f = Math.min(f, this.maxTexH), n.canvas.width = Math.min(_ + 1, this.maxTexW), n.canvas.height = Math.min(f + 1, this.maxTexH), 
            c.font = e, c.clearRect(0, 0, _ + 1 + i, f + 1 + i), c.setTransform(1, 0, 0, 1, 0, 0), 
            c.save(), this.scaleFontSize &amp;&amp; c.scale(this.lastScaleX, this.lastScaleY), c.translate(o, h), 
            c.textAlign = "left", c.textBaseline = "top", i &gt; 0 ? (c.strokeStyle = s, c.fillStyle = r, 
            c.lineWidth = i, c.fillAndStrokeText ? c.fillAndStrokeText(t, 0, 0) : (c.strokeText(t, 0, 0), 
            c.fillText(t, 0, 0))) : (c.fillStyle = r, c.fillText(t, 0, 0)), this.showDbgInfo &amp;&amp; (c.strokeStyle = "#ff0000", 
            c.strokeRect(0, 0, _, f), c.strokeStyle = "#00ff00", c.strokeRect(0, 0, a.width, a.height)), 
            c.restore(), a.bmpWidth = n.canvas.width, a.bmpHeight = n.canvas.height, n.canvas;
        }, s(0, a, "canvasWidth", function() {
            return n.canvas.width;
        }, function(t) {
            n.canvas.width != t &amp;&amp; (n.canvas.width = t, t &gt; 2048 &amp;&amp; console.warn("ç”»æ–‡å­—è®¾ç½®çš„å®½åº¦å¤ªå¤§ï¼Œè¶…è¿‡2048äº†"), 
            this.ctx.setTransform(1, 0, 0, 1, 0, 0), this.ctx.scale(this.lastScaleX, this.lastScaleY));
        }), n.canvas = null, n;
    }(), ze = function(e) {
        function i() {
            this.lastFont = "", i.__super.call(this);
        }
        r(i, "laya.webgl.text.CharRender_Native", Jt);
        var n = i.prototype;
        return n.getWidth = function(e, i) {
            return t.conchTextCanvas ? (t.conchTextCanvas.font = e, this.lastFont = e, t.conchTextCanvas.measureText(i).width) : 0;
        }, n.scale = function(t, e) {}, n.getCharBmp = function(e, i, n, r, s, a, h, l, u, c, _) {
            if (!t.conchTextCanvas) return null;
            t.conchTextCanvas.font = i, this.lastFont = i, a.width = t.conchTextCanvas.measureText(e).width, 
            a.height;
            var f = o.create(s).numColor, d = o.create(r).numColor, p = t.conchTextCanvas.getTextBitmapData(e, d, n &gt; 2 ? 2 : n, f);
            return a.bmpWidth = p.width, a.bmpHeight = p.height, p;
        }, i;
    }(), je = function(t) {
        function e() {
            this._x = 0, this._y = 0, this._width = 0, this._height = 0, this._visible = !0, 
            this._mouseState = 0, this._zOrder = 0, this._renderType = 0, this._transform = null, 
            this._tfChanged = !1, this._texture = null, this._boundStyle = null, this._graphics = null, 
            this.mouseThrough = !1, this.autoSize = !1, this.hitTestPrior = !1, e.__super.call(this), 
            this._repaint = 0, this._style = Z.EMPTY, this._cacheStyle = tt.EMPTY;
        }
        r(e, "laya.display.Sprite", t);
        var n = e.prototype;
        return n.destroy = function(e) {
            void 0 === e &amp;&amp; (e = !0), t.prototype.destroy.call(this, e), this._style &amp;&amp; this._style.recover(), 
            this._cacheStyle &amp;&amp; this._cacheStyle.recover(), this._boundStyle &amp;&amp; this._boundStyle.recover(), 
            this._style = null, this._cacheStyle = null, this._boundStyle = null, this._transform = null, 
            this._graphics &amp;&amp; this._graphics.autoDestroy &amp;&amp; this._graphics.destroy(), this._graphics = null, 
            this.texture = null;
        }, n.updateZOrder = function() {
            ie.updateOrder(this._children) &amp;&amp; this.repaint();
        }, n._getBoundsStyle = function() {
            return this._boundStyle || (this._boundStyle = At.create()), this._boundStyle;
        }, n._setCustomRender = function() {}, n._setCacheAs = function(t) {}, n._checkCanvasEnable = function() {
            var t = this._cacheStyle.needEnableCanvasRender();
            this._getCacheStyle().enableCanvasRender = t, t ? (this._cacheStyle.needBitmapCache() ? this._cacheStyle.cacheAs = "bitmap" : this._cacheStyle.cacheAs = this._cacheStyle.userSetCache, 
            this._cacheStyle.reCache = !0, this._renderType |= 8) : (this._cacheStyle.cacheAs = "none", 
            this._cacheStyle.releaseContext(), this._renderType &amp;= -9), this._setCacheAs(this._cacheStyle.cacheAs), 
            this._setRenderType(this._renderType);
        }, n.reCache = function() {
            this._cacheStyle.reCache = !0, this._repaint |= 2;
        }, n.getRepaint = function() {
            return this._repaint;
        }, n._setX = function(t) {
            this._x = t;
        }, n._setY = function(t) {
            this._y = t;
        }, n._setWidth = function(t, e) {}, n._setHeight = function(t, e) {}, n.setSelfBounds = function(t) {
            this._getBoundsStyle().userBounds = t;
        }, n.getBounds = function() {
            return this._getBoundsStyle().bounds = mt._getWrapRec(this._boundPointsToParent());
        }, n.getSelfBounds = function() {
            return this._boundStyle &amp;&amp; this._boundStyle.userBounds ? this._boundStyle.userBounds : this._graphics || 0 !== this._children.length || this._texture ? this._getBoundsStyle().bounds = mt._getWrapRec(this._getBoundPointsM(!1)) : mt.TEMP.setTo(0, 0, 0, 0);
        }, n._boundPointsToParent = function(t) {
            void 0 === t &amp;&amp; (t = !1);
            var e = 0, i = 0;
            this._style &amp;&amp; (e = this.pivotX, i = this.pivotY, t = t || 0 !== this._style.rotation, 
            this._style.scrollRect &amp;&amp; (e += this._style.scrollRect.x, i += this._style.scrollRect.y));
            var n = this._getBoundPointsM(t);
            if (!n || n.length &lt; 1) return n;
            if (8 != n.length &amp;&amp; (n = t ? Y.scanPList(n) : mt._getWrapRec(n, mt.TEMP)._getBoundPoints()), 
            !this.transform) return ie.transPointList(n, this._x - e, this._y - i), n;
            var r = Yt.TEMP, s = 0, a = n.length;
            for (s = 0; s &lt; a; s += 2) r.x = n[s], r.y = n[s + 1], this.toParentPoint(r), n[s] = r.x, 
            n[s + 1] = r.y;
            return n;
        }, n.getGraphicBounds = function(t) {
            return void 0 === t &amp;&amp; (t = !1), this._graphics ? this._graphics.getBounds(t) : mt.TEMP.setTo(0, 0, 0, 0);
        }, n._getBoundPointsM = function(t) {
            if (void 0 === t &amp;&amp; (t = !1), this._boundStyle &amp;&amp; this._boundStyle.userBounds) return this._boundStyle.userBounds._getBoundPoints();
            if (this._boundStyle || this._getBoundsStyle(), this._boundStyle.temBM || (this._boundStyle.temBM = []), 
            this._style.scrollRect) {
                var e = ie.clearArray(this._boundStyle.temBM), i = mt.TEMP;
                return i.copyFrom(this._style.scrollRect), ie.concatArray(e, i._getBoundPoints()), 
                e;
            }
            var n;
            this._graphics ? n = this._graphics.getBoundPoints() : (n = ie.clearArray(this._boundStyle.temBM), 
            this._texture &amp;&amp; ((i = mt.TEMP).setTo(0, 0, this.width || this._texture.width, this.height || this._texture.height), 
            ie.concatArray(n, i._getBoundPoints())));
            for (var r, s, a, o = 0, h = (a = this._children).length; o &lt; h; o++) (r = a[o]) instanceof laya.display.Sprite &amp;&amp; !0 === r._visible &amp;&amp; (s = r._boundPointsToParent(t)) &amp;&amp; (n = n ? ie.concatArray(n, s) : s);
            return n;
        }, n._getCacheStyle = function() {
            return this._cacheStyle === tt.EMPTY &amp;&amp; (this._cacheStyle = tt.create()), this._cacheStyle;
        }, n.getStyle = function() {
            return this._style === Z.EMPTY &amp;&amp; (this._style = Z.create()), this._style;
        }, n.setStyle = function(t) {
            this._style = t;
        }, n._setScaleX = function(t) {
            this._style.scaleX = t;
        }, n._setScaleY = function(t) {
            this._style.scaleY = t;
        }, n._setRotation = function(t) {
            this._style.rotation = t;
        }, n._setSkewX = function(t) {
            this._style.skewX = t;
        }, n._setSkewY = function(t) {
            this._style.skewY = t;
        }, n._createTransform = function() {
            return st.create();
        }, n._adjustTransform = function() {
            this._tfChanged = !1;
            var t = this._style, e = t.scaleX, i = t.scaleY, n = t.skewX, r = t.skewY, s = t.rotation, a = this._transform || (this._transform = this._createTransform());
            if (s || 1 !== e || 1 !== i || 0 !== n || 0 !== r) {
                a._bTransform = !0;
                var o = .0174532922222222 * (s - n), h = .0174532922222222 * (s + r), l = Math.cos(h), u = Math.sin(h), c = Math.sin(o), _ = Math.cos(o);
                a.a = e * l, a.b = e * u, a.c = -i * c, a.d = i * _, a.tx = a.ty = 0;
            } else a.identity(), this._renderType &amp;= -3, this._setRenderType(this._renderType);
            return a;
        }, n._setTransform = function(t) {}, n._setPivotX = function(t) {
            this.getStyle().pivotX = t;
        }, n._getPivotX = function() {
            return this._style.pivotX;
        }, n._setPivotY = function(t) {
            this.getStyle().pivotY = t;
        }, n._getPivotY = function() {
            return this._style.pivotY;
        }, n._setAlpha = function(t) {
            this._style.alpha !== t &amp;&amp; (this.getStyle().alpha = t, 1 !== t ? this._renderType |= 1 : this._renderType &amp;= -2, 
            this._setRenderType(this._renderType), this.parentRepaint());
        }, n._getAlpha = function() {
            return this._style.alpha;
        }, n._setBlendMode = function(t) {}, n._setGraphics = function(t) {}, n._setGraphicsCallBack = function() {}, 
        n._setScrollRect = function(t) {}, n.pos = function(t, e, i) {
            if (void 0 === i &amp;&amp; (i = !1), this._x !== t || this._y !== e) {
                if (this.destroyed) return this;
                if (i) {
                    this._setX(t), this._setY(e), this.parentRepaint(2);
                    var n = this._cacheStyle.maskParent;
                    n &amp;&amp; n.repaint(2);
                } else this.x = t, this.y = e;
            }
            return this;
        }, n.pivot = function(t, e) {
            return this.pivotX = t, this.pivotY = e, this;
        }, n.size = function(t, e) {
            return this.width = t, this.height = e, this;
        }, n.scale = function(t, e, i) {
            void 0 === i &amp;&amp; (i = !1);
            var n = this.getStyle();
            if (n.scaleX != t || n.scaleY != e) {
                if (this.destroyed) return this;
                i ? (this._setScaleX(t), this._setScaleY(e), this._setTranformChange()) : (this.scaleX = t, 
                this.scaleY = e);
            }
            return this;
        }, n.skew = function(t, e) {
            return this.skewX = t, this.skewY = e, this;
        }, n.render = function(t, e, i) {
            I.renders[this._renderType]._fun(this, t, e + this._x, i + this._y), this._repaint = 0;
        }, n.drawToCanvas = function(t, e, i, n) {
            return ue.drawToCanvas(this, this._renderType, t, e, i, n);
        }, n.drawToTexture = function(t, e, i, n) {
            return ue.drawToTexture(this, this._renderType, t, e, i, n);
        }, n.customRender = function(t, e, i) {
            this._repaint = 3;
        }, n._applyFilters = function() {}, n._setColorFilter = function(t) {}, n._isHaveGlowFilter = function() {
            var t = 0, e = 0;
            if (this.filters) for (t = 0; t &lt; this.filters.length; t++) if (8 == this.filters[t].type) return !0;
            for (t = 0, e = this._children.length; t &lt; e; t++) if (this._children[t]._isHaveGlowFilter()) return !0;
            return !1;
        }, n.localToGlobal = function(t, e, n) {
            void 0 === e &amp;&amp; (e = !1), !0 === e &amp;&amp; (t = new Yt(t.x, t.y));
            var r = this;
            for (n = n || i.stage; r &amp;&amp; !r.destroyed &amp;&amp; r != n; ) t = r.toParentPoint(t), r = r.parent;
            return t;
        }, n.globalToLocal = function(t, e, n) {
            void 0 === e &amp;&amp; (e = !1), e &amp;&amp; (t = new Yt(t.x, t.y));
            var r = this, s = [];
            for (n = n || i.stage; r &amp;&amp; !r.destroyed &amp;&amp; r != n; ) s.push(r), r = r.parent;
            for (var a = s.length - 1; a &gt;= 0; ) t = (r = s[a]).fromParentPoint(t), a--;
            return t;
        }, n.toParentPoint = function(t) {
            if (!t) return t;
            t.x -= this.pivotX, t.y -= this.pivotY, this.transform &amp;&amp; this._transform.transformPoint(t), 
            t.x += this._x, t.y += this._y;
            var e = this._style.scrollRect;
            return e &amp;&amp; (t.x -= e.x, t.y -= e.y), t;
        }, n.fromParentPoint = function(t) {
            if (!t) return t;
            t.x -= this._x, t.y -= this._y;
            var e = this._style.scrollRect;
            return e &amp;&amp; (t.x += e.x, t.y += e.y), this.transform &amp;&amp; this._transform.invertTransformPoint(t), 
            t.x += this.pivotX, t.y += this.pivotY, t;
        }, n.fromStagePoint = function(t) {
            return t;
        }, n.on = function(e, i, n, r) {
            return 1 !== this._mouseState &amp;&amp; this.isMouseEvent(e) ? (this.mouseEnabled = !0, 
            this._setBit(64, !0), this._parent &amp;&amp; this._$2__onDisplay(), this._createListener(e, i, n, r, !1)) : t.prototype.on.call(this, e, i, n, r);
        }, n.once = function(e, i, n, r) {
            return 1 !== this._mouseState &amp;&amp; this.isMouseEvent(e) ? (this.mouseEnabled = !0, 
            this._setBit(64, !0), this._parent &amp;&amp; this._$2__onDisplay(), this._createListener(e, i, n, r, !0)) : t.prototype.once.call(this, e, i, n, r);
        }, n._$2__onDisplay = function() {
            if (1 !== this._mouseState) {
                var t = this;
                for (t = t.parent; t &amp;&amp; 1 !== t._mouseState &amp;&amp; !t._getBit(64); ) t.mouseEnabled = !0, 
                t._setBit(64, !0), t = t.parent;
            }
        }, n._setParent = function(e) {
            t.prototype._setParent.call(this, e), e &amp;&amp; this._getBit(64) &amp;&amp; this._$2__onDisplay();
        }, n.loadImage = function(t, e) {
            function i() {
                n.repaint(3), e &amp;&amp; e.run();
            }
            var n = this;
            if (null == t) this.texture = null, i(); else {
                var r = De.getRes(t);
                r || ((r = new Ie()).load(t), De.cacheRes(t, r)), this.texture = r, r.getIsReady() ? i() : r.once("ready", null, i);
            }
            return this;
        }, n.repaint = function(t) {
            void 0 === t &amp;&amp; (t = 2), this._repaint &amp; t || (this._repaint |= t, this.parentRepaint(t)), 
            this._cacheStyle &amp;&amp; this._cacheStyle.maskParent &amp;&amp; this._cacheStyle.maskParent.repaint(t);
        }, n._needRepaint = function() {
            return 2 &amp; this._repaint &amp;&amp; this._cacheStyle.enableCanvasRender &amp;&amp; this._cacheStyle.reCache;
        }, n._childChanged = function(t) {
            this._children.length ? this._renderType |= 8192 : this._renderType &amp;= -8193, this._setRenderType(this._renderType), 
            t &amp;&amp; this._getBit(32) &amp;&amp; i.systemTimer.callLater(this, this.updateZOrder), this.repaint(3);
        }, n.parentRepaint = function(t) {
            void 0 === t &amp;&amp; (t = 2);
            var e = this._parent;
            !e || e._repaint &amp; t || (e._repaint |= t, e.parentRepaint(t));
        }, n._setMask = function(t) {}, n.startDrag = function(t, e, i, n, r, s, a) {
            void 0 === e &amp;&amp; (e = !1), void 0 === i &amp;&amp; (i = 0), void 0 === n &amp;&amp; (n = 300), void 0 === s &amp;&amp; (s = !1), 
            void 0 === a &amp;&amp; (a = .92), this._style.dragging || (this.getStyle().dragging = new Wt()), 
            this._style.dragging.start(this, t, e, i, n, r, s, a);
        }, n.stopDrag = function() {
            this._style.dragging &amp;&amp; this._style.dragging.stop();
        }, n._setDisplay = function(e) {
            e || this._cacheStyle &amp;&amp; (this._cacheStyle.releaseContext(), this._cacheStyle.releaseFilterCache(), 
            this._cacheStyle.hasGlowFilter &amp;&amp; (this._cacheStyle.hasGlowFilter = !1)), t.prototype._setDisplay.call(this, e);
        }, n.hitTestPoint = function(t, e) {
            var i = this.globalToLocal(Yt.TEMP.setTo(t, e));
            return t = i.x, e = i.y, (this._style.hitArea ? this._style.hitArea : this._width &gt; 0 &amp;&amp; this._height &gt; 0 ? mt.TEMP.setTo(0, 0, this._width, this._height) : this.getSelfBounds()).contains(t, e);
        }, n.getMousePoint = function() {
            return this.globalToLocal(Yt.TEMP.setTo(i.stage.mouseX, i.stage.mouseY));
        }, n._setTexture = function(t) {}, n._setRenderType = function(t) {}, n._setTranformChange = function() {
            this._tfChanged = !0, this._renderType |= 2, this.parentRepaint(2);
        }, n._setBgStyleColor = function(t, e, i, n, r) {}, n._setBorderStyleColor = function(t, e, i, n, r, s) {}, 
        n.captureMouseEvent = function(t) {
            S.instance.setCapture(this, t);
        }, n.releaseMouseEvent = function() {
            S.instance.releaseCapture();
        }, s(0, n, "customRenderEnable", null, function(t) {
            t &amp;&amp; (this._renderType |= 2048, this._setRenderType(this._renderType), this._setCustomRender());
        }), s(0, n, "cacheAs", function() {
            return this._cacheStyle.cacheAs;
        }, function(t) {
            t !== this._cacheStyle.userSetCache &amp;&amp; (this.mask &amp;&amp; "normal" === t || (this._setCacheAs(t), 
            this._getCacheStyle().userSetCache = t, this._checkCanvasEnable(), this.repaint()));
        }), s(0, n, "globalScaleY", function() {
            for (var t = 1, e = this; e &amp;&amp; e !== i.stage; ) t *= e.scaleY, e = e.parent;
            return t;
        }), s(0, n, "hitArea", function() {
            return this._style.hitArea;
        }, function(t) {
            this.getStyle().hitArea = t;
        }), s(0, n, "staticCache", function() {
            return this._cacheStyle.staticCache;
        }, function(t) {
            this._getCacheStyle().staticCache = t, t || this.reCache();
        }), s(0, n, "displayWidth", function() {
            return this.width * this.scaleX;
        }), s(0, n, "zOrder", function() {
            return this._zOrder;
        }, function(t) {
            this._zOrder != t &amp;&amp; (this._zOrder = t, this._parent &amp;&amp; (t &amp;&amp; this._parent._setBit(32, !0), 
            i.systemTimer.callLater(this._parent, this.updateZOrder)));
        }), s(0, n, "rotation", function() {
            return this._style.rotation;
        }, function(t) {
            this.getStyle().rotation !== t &amp;&amp; (this._setRotation(t), this._setTranformChange());
        }), s(0, n, "width", function() {
            return this.autoSize ? this.texture ? this.texture.width : this._graphics || 0 !== this._children.length ? this.getSelfBounds().width : 0 : this._width || (this.texture ? this.texture.width : 0);
        }, function(t) {
            this._width !== t &amp;&amp; (this._width = t, this._setWidth(this.texture, t), this._setTranformChange());
        }), s(0, n, "x", function() {
            return this._x;
        }, function(t) {
            if (!this.destroyed &amp;&amp; this._x !== t) {
                this._setX(t), this.parentRepaint(2);
                var e = this._cacheStyle.maskParent;
                e &amp;&amp; e.repaint(2);
            }
        }), s(0, n, "drawCallOptimize", function() {
            return this._getBit(256);
        }, function(t) {
            this._setBit(256, t);
        }), s(0, n, "texture", function() {
            return this._texture;
        }, function(t) {
            "string" == typeof t ? this.loadImage(t) : this._texture != t &amp;&amp; (this._texture &amp;&amp; this._texture._removeReference(), 
            this._texture = t, t &amp;&amp; t._addReference(), this._setTexture(t), this._setWidth(this._texture, this.width), 
            this._setHeight(this._texture, this.height), t ? this._renderType |= 256 : this._renderType &amp;= -257, 
            this._setRenderType(this._renderType), this.repaint());
        }), s(0, n, "globalRotation", function() {
            for (var t = 0, e = this; e &amp;&amp; e !== i.stage; ) t += e.rotation, e = e.parent;
            return t;
        }), s(0, n, "y", function() {
            return this._y;
        }, function(t) {
            if (!this.destroyed &amp;&amp; this._y !== t) {
                this._setY(t), this.parentRepaint(2);
                var e = this._cacheStyle.maskParent;
                e &amp;&amp; e.repaint(2);
            }
        }), s(0, n, "displayHeight", function() {
            return this.height * this.scaleY;
        }), s(0, n, "height", function() {
            return this.autoSize ? this.texture ? this.texture.height : this._graphics || 0 !== this._children.length ? this.getSelfBounds().height : 0 : this._height || (this.texture ? this.texture.height : 0);
        }, function(t) {
            this._height !== t &amp;&amp; (this._height = t, this._setHeight(this.texture, t), this._setTranformChange());
        }), s(0, n, "blendMode", function() {
            return this._style.blendMode;
        }, function(t) {
            this._setBlendMode(t), this.getStyle().blendMode = t, t &amp;&amp; "source-over" != t ? this._renderType |= 4 : this._renderType &amp;= -5, 
            this._setRenderType(this._renderType), this.parentRepaint();
        }), s(0, n, "scaleX", function() {
            return this._style.scaleX;
        }, function(t) {
            this.getStyle().scaleX !== t &amp;&amp; (this._setScaleX(t), this._setTranformChange());
        }), s(0, n, "scaleY", function() {
            return this._style.scaleY;
        }, function(t) {
            this.getStyle().scaleY !== t &amp;&amp; (this._setScaleY(t), this._setTranformChange());
        }), s(0, n, "stage", function() {
            return i.stage;
        }), s(0, n, "skewX", function() {
            return this._style.skewX;
        }, function(t) {
            this.getStyle().skewX !== t &amp;&amp; (this._setSkewX(t), this._setTranformChange());
        }), s(0, n, "scrollRect", function() {
            return this._style.scrollRect;
        }, function(t) {
            this.getStyle().scrollRect = t, this._setScrollRect(t), this.repaint(), t ? this._renderType |= 64 : this._renderType &amp;= -65, 
            this._setRenderType(this._renderType);
        }), s(0, n, "skewY", function() {
            return this._style.skewY;
        }, function(t) {
            this.getStyle().skewY !== t &amp;&amp; (this._setSkewY(t), this._setTranformChange());
        }), s(0, n, "transform", function() {
            return this._tfChanged ? this._adjustTransform() : this._transform;
        }, function(t) {
            this._tfChanged = !1;
            var e = this._transform || (this._transform = this._createTransform());
            t.copyTo(e), this._setTransform(e), t &amp;&amp; (this._x = e.tx, this._y = e.ty, e.tx = e.ty = 0), 
            t ? this._renderType |= 2 : this._renderType &amp;= -3, this._setRenderType(this._renderType), 
            this.parentRepaint();
        }), s(0, n, "pivotX", function() {
            return this._getPivotX();
        }, function(t) {
            this._setPivotX(t), this.repaint();
        }), s(0, n, "pivotY", function() {
            return this._getPivotY();
        }, function(t) {
            this._setPivotY(t), this.repaint();
        }), s(0, n, "alpha", function() {
            return this._getAlpha();
        }, function(t) {
            t = t &lt; 0 ? 0 : t &gt; 1 ? 1 : t, this._setAlpha(t);
        }), s(0, n, "visible", function() {
            return this._visible;
        }, function(t) {
            this._visible !== t &amp;&amp; (this._visible = t, this.parentRepaint(3));
        }), s(0, n, "graphics", function() {
            return this._graphics || (this.graphics = new qt(), this._graphics.autoDestroy = !0), 
            this._graphics;
        }, function(t) {
            this._graphics &amp;&amp; (this._graphics._sp = null), this._graphics = t, t ? (this._setGraphics(t), 
            this._renderType |= 512, t._sp = this) : this._renderType &amp;= -513, this._setRenderType(this._renderType), 
            this.repaint();
        }), s(0, n, "filters", function() {
            return this._cacheStyle.filters;
        }, function(t) {
            t &amp;&amp; 0 === t.length &amp;&amp; (t = null), this._cacheStyle.filters != t &amp;&amp; (this._getCacheStyle().filters = t ? t.slice() : null, 
            t &amp;&amp; t.length ? (this._setColorFilter(t[0]), this._renderType |= 16) : (this._setColorFilter(null), 
            this._renderType &amp;= -17), this._setRenderType(this._renderType), t &amp;&amp; t.length &gt; 0 ? (this._getBit(16) || this._setBitUp(16), 
            1 == t.length &amp;&amp; t[0] instanceof laya.filters.ColorFilter || (this._getCacheStyle().cacheForFilters = !0, 
            this._checkCanvasEnable())) : this._cacheStyle.cacheForFilters &amp;&amp; (this._cacheStyle.cacheForFilters = !1, 
            this._checkCanvasEnable()), this._getCacheStyle().hasGlowFilter = this._isHaveGlowFilter(), 
            this.repaint());
        }), s(0, n, "mask", function() {
            return this._cacheStyle.mask;
        }, function(t) {
            t &amp;&amp; this.mask &amp;&amp; this.mask._cacheStyle.maskParent || (this._getCacheStyle().mask = t, 
            this._setMask(t), this._checkCanvasEnable(), t ? t._getCacheStyle().maskParent = this : this.mask &amp;&amp; (this.mask._getCacheStyle().maskParent = null), 
            this._renderType |= 32, this._setRenderType(this._renderType), this.parentRepaint(3));
        }), s(0, n, "mouseEnabled", function() {
            return this._mouseState &gt; 1;
        }, function(t) {
            this._mouseState = t ? 2 : 1;
        }), s(0, n, "globalScaleX", function() {
            for (var t = 1, e = this; e &amp;&amp; e !== i.stage; ) t *= e.scaleX, e = e.parent;
            return t;
        }), s(0, n, "mouseX", function() {
            return this.getMousePoint().x;
        }), s(0, n, "mouseY", function() {
            return this.getMousePoint().y;
        }), s(0, n, "viewport", function() {
            return this._style.viewport;
        }, function(t) {
            if ("string" == typeof t) {
                var e;
                (e = t.split(",")).length &gt; 3 &amp;&amp; (t = new mt(parseFloat(e[0]), parseFloat(e[1]), parseFloat(e[2]), parseFloat(e[3])));
            }
            this.getStyle().viewport = t;
        }), e.fromImage = function(t) {
            return new e().loadImage(t);
        }, e;
    }(Ce), Ke = function(t) {
        function e() {
            e.__super.call(this);
        }
        return r(e, "laya.webgl.shader.BaseShader", Ee), e.activeShader = null, e.bindShader = null, 
        e;
    }(), $e = function(t) {
        function e() {
            e.__super.call(this), this._width = -1, this._height = -1;
        }
        r(e, "laya.resource.Bitmap", Ee);
        var i = e.prototype;
        return i._getSource = function() {
            throw "Bitmap: must override it.";
        }, s(0, i, "width", function() {
            return this._width;
        }), s(0, i, "height", function() {
            return this._height;
        }), e;
    }(), qe = function(t) {
        function e(t, i) {
            this._source = null, this._texW = 0, this._texH = 0, this.__destroyed = !1, this._discardTm = 0, 
            this.genID = 0, this.bitmap = {
                id: 0,
                _glTexture: null
            }, this.curUsedCovRate = 0, this.curUsedCovRateAtlas = 0, this.lastTouchTm = 0, 
            this.ri = null, e.__super.call(this), this._texW = t || C.atlasWidth, this._texH = i || C.atlasWidth, 
            this.bitmap.id = this.id, this.lock = !0;
        }
        r(e, "laya.webgl.text.TextTexture", Ee);
        var a = e.prototype;
        return a.recreateResource = function() {
            if (!this._source) {
                var t = Mt.isConchApp ? Pt.instance.getDefaultCommandEncoder() : wt.mainContext, e = this._source = t.createTexture();
                this.bitmap._glTexture = e, nt.bindTexture(t, 3553, e), t.texImage2D(3553, 0, 6408, this._texW, this._texH, 0, 6408, 5121, null), 
                t.texParameteri(3553, 10241, 9729), t.texParameteri(3553, 10240, 9729), t.texParameteri(3553, 10242, 33071), 
                t.texParameteri(3553, 10243, 33071), C.debugUV &amp;&amp; this.fillWhite();
            }
        }, a.addChar = function(t, e, i, n) {
            if (C.isWan1Wan) return this.addCharCanvas(t, e, i, n);
            !this._source &amp;&amp; this.recreateResource();
            var r = Mt.isConchApp ? Pt.instance.getDefaultCommandEncoder() : wt.mainContext;
            nt.bindTexture(r, 3553, this._source), !Mt.isConchApp &amp;&amp; r.pixelStorei(37441, !0);
            var s = t.data;
            t.data instanceof Uint8ClampedArray &amp;&amp; (s = new Uint8Array(s.buffer)), r.texSubImage2D(3553, 0, e, i, t.width, t.height, 6408, 5121, s), 
            !Mt.isConchApp &amp;&amp; r.pixelStorei(37441, !1);
            var a = NaN, o = NaN, h = NaN, l = NaN;
            return Mt.isConchApp ? (a = e / this._texW, o = i / this._texH, h = (e + t.width) / this._texW, 
            l = (i + t.height) / this._texH) : (a = (e + 1) / this._texW, o = i / this._texH, 
            h = (e + t.width - 1) / this._texW, l = (i + t.height - 1) / this._texH), n = n || new Array(8), 
            n[0] = a, n[1] = o, n[2] = h, n[3] = o, n[4] = h, n[5] = l, n[6] = a, n[7] = l, 
            n;
        }, a.addCharCanvas = function(t, e, i, n) {
            !this._source &amp;&amp; this.recreateResource();
            var r = Mt.isConchApp ? Pt.instance.getDefaultCommandEncoder() : wt.mainContext;
            nt.bindTexture(r, 3553, this._source), !Mt.isConchApp &amp;&amp; r.pixelStorei(37441, !0), 
            r.texSubImage2D(3553, 0, e, i, 6408, 5121, t), !Mt.isConchApp &amp;&amp; r.pixelStorei(37441, !1);
            var s = NaN, a = NaN, o = NaN, h = NaN;
            return Mt.isConchApp ? (s = e / this._texW, a = i / this._texH, o = (e + t.width) / this._texW, 
            h = (i + t.height) / this._texH) : (s = (e + 1) / this._texW, a = (i + 1) / this._texH, 
            o = (e + t.width - 1) / this._texW, h = (i + t.height - 1) / this._texH), n = n || new Array(8), 
            n[0] = s, n[1] = a, n[2] = o, n[3] = a, n[4] = o, n[5] = h, n[6] = s, n[7] = h, 
            n;
        }, a.fillWhite = function() {
            !this._source &amp;&amp; this.recreateResource();
            var t = Mt.isConchApp ? Pt.instance.getDefaultCommandEncoder() : wt.mainContext, e = new Uint8Array(this._texW * this._texH * 4);
            e.fill(255), t.texSubImage2D(3553, 0, 0, 0, this._texW, this._texH, 6408, 5121, e);
        }, a.discard = function() {
            this._texW == C.atlasWidth &amp;&amp; this._texH == C.atlasWidth ? (this.genID++, e.poolLen &gt;= e.pool.length &amp;&amp; (e.pool = e.pool.concat(new Array(10))), 
            this._discardTm = i.stage.getFrameTm(), e.pool[e.poolLen++] = this) : this.destroy();
        }, a.destroy = function() {
            this.__destroyed = !0;
            var t = Mt.isConchApp ? Pt.instance.getDefaultCommandEncoder() : wt.mainContext;
            this._source &amp;&amp; t.deleteTexture(this._source), this._source = null;
        }, a.touchRect = function(t, e) {
            this.lastTouchTm != e &amp;&amp; (this.curUsedCovRate = 0, this.curUsedCovRateAtlas = 0, 
            this.lastTouchTm = e);
            var i = C.atlasWidth * C.atlasWidth, n = kt.atlasGridW * kt.atlasGridW;
            this.curUsedCovRate += t.bmpWidth * t.bmpHeight / i, this.curUsedCovRateAtlas += Math.ceil(t.bmpWidth / kt.atlasGridW) * Math.ceil(t.bmpHeight / kt.atlasGridW) / (i / n);
        }, a._getSource = function() {
            return this._source;
        }, a.drawOnScreen = function(t, e) {}, s(0, a, "texture", function() {
            return this;
        }), e.getTextTexture = function(t, i) {
            if (t != C.atlasWidth || t != C.atlasWidth) return new e(t, i);
            if (e.poolLen &gt; 0) {
                var n = e.pool[--e.poolLen];
                return e.poolLen &gt; 0 &amp;&amp; e.clean(), n;
            }
            return new e(t, i);
        }, e.clean = function() {
            var t = i.stage.getFrameTm();
            if (0 === e.cleanTm &amp;&amp; (e.cleanTm = t), t - e.cleanTm &gt;= C.checkCleanTextureDt) {
                for (var n = 0; n &lt; e.poolLen; n++) {
                    var r = e.pool[n];
                    t - r._discardTm &gt;= C.destroyUnusedTextureDt &amp;&amp; (r.destroy(), e.pool[n] = e.pool[e.poolLen - 1], 
                    e.poolLen--, n--);
                }
                e.cleanTm = t;
            }
        }, e.poolLen = 0, e.cleanTm = 0, n(e, [ "pool", function() {
            return this.pool = new Array(10);
        } ]), e;
    }(), Qe = function(t) {
        function e(t) {
            this._uint16Array = null, void 0 === t &amp;&amp; (t = 35044), e.__super.call(this), this._bufferUsage = t, 
            this._bufferType = 34963, this._buffer = new ArrayBuffer(8);
        }
        r(e, "laya.webgl.utils.IndexBuffer2D", Le);
        var i = e.prototype;
        return i._checkArrayUse = function() {
            this._uint16Array &amp;&amp; (this._uint16Array = new Uint16Array(this._buffer));
        }, i.getUint16Array = function() {
            return this._uint16Array || (this._uint16Array = new Uint16Array(this._buffer));
        }, i._bindForVAO = function() {
            Pt.instance.bindBuffer(34963, this._glBuffer);
        }, i.bind = function() {
            return V._bindedIndexBuffer !== this._glBuffer &amp;&amp; (Pt.instance.bindBuffer(34963, this._glBuffer), 
            V._bindedIndexBuffer = this._glBuffer, !0);
        }, i.destory = function() {
            this._uint16Array = null, this._buffer = null;
        }, i.disposeResource = function() {
            this._disposeResource();
        }, e.create = function(t) {
            return void 0 === t &amp;&amp; (t = 35044), new e(t);
        }, e;
    }(), Ze = function(t) {
        function e() {
            this.audioBuffer = null, this.gain = null, this.bufferSource = null, this._currentTime = 0, 
            this._volume = 1, this._startTime = 0, this._pauseTime = 0, this._onPlayEnd = null, 
            this.context = Fe.ctx, e.__super.call(this), this._onPlayEnd = ie.bind(this.__onPlayEnd, this), 
            this.context.createGain ? this.gain = this.context.createGain() : this.gain = this.context.createGainNode();
        }
        r(e, "laya.media.webaudio.WebAudioSoundChannel", t);
        var n = e.prototype;
        return n.play = function() {
            if (ye.addChannel(this), this.isStopped = !1, this._clearBufferSource(), this.audioBuffer) {
                var t = this.context, e = this.gain, i = t.createBufferSource();
                this.bufferSource = i, i.buffer = this.audioBuffer, i.connect(e), e &amp;&amp; e.disconnect(), 
                e.connect(t.destination), i.onended = this._onPlayEnd, this.startTime &gt;= this.duration &amp;&amp; (this.startTime = 0), 
                this._startTime = Dt.now(), this.gain.gain.setTargetAtTime ? this.gain.gain.setTargetAtTime(this._volume, this.context.currentTime, .001) : this.gain.gain.value = this._volume, 
                0 == this.loops &amp;&amp; (i.loop = !0), i.playbackRate.setTargetAtTime ? i.playbackRate.setTargetAtTime(ye.playbackRate, this.context.currentTime, .001) : i.playbackRate.value = ye.playbackRate, 
                i.start(0, this.startTime), this._currentTime = 0;
            }
        }, n.__onPlayEnd = function() {
            if (1 == this.loops) return this.completeHandler &amp;&amp; (i.timer.once(10, this, this.__runComplete, [ this.completeHandler ], !1), 
            this.completeHandler = null), this.stop(), void this.event("complete");
            this.loops &gt; 0 &amp;&amp; this.loops--, this.startTime = 0, this.play();
        }, n._clearBufferSource = function() {
            if (this.bufferSource) {
                var t = this.bufferSource;
                t.stop ? t.stop(0) : t.noteOff(0), t.disconnect(0), t.onended = null, e._tryCleanFailed || this._tryClearBuffer(t), 
                this.bufferSource = null;
            }
        }, n._tryClearBuffer = function(t) {
            if (Dt.onMac) try {
                t.buffer = Fe._miniBuffer;
            } catch (t) {
                e._tryCleanFailed = !0;
            } else try {
                t.buffer = null;
            } catch (t) {
                e._tryCleanFailed = !0;
            }
        }, n.stop = function() {
            t.prototype.stop.call(this), this._clearBufferSource(), this.audioBuffer = null, 
            this.gain &amp;&amp; this.gain.disconnect(), this.isStopped = !0, ye.removeChannel(this), 
            this.completeHandler = null, ye.autoReleaseSound &amp;&amp; ye.disposeSoundLater(this.url);
        }, n.pause = function() {
            this.isStopped || (this._pauseTime = this.position), this._clearBufferSource(), 
            this.gain &amp;&amp; this.gain.disconnect(), this.isStopped = !0, ye.removeChannel(this), 
            ye.autoReleaseSound &amp;&amp; ye.disposeSoundLater(this.url);
        }, n.resume = function() {
            this.startTime = this._pauseTime, this.play();
        }, s(0, n, "position", function() {
            return this.bufferSource ? (Dt.now() - this._startTime) / 1e3 + this.startTime : 0;
        }), s(0, n, "duration", function() {
            return this.audioBuffer ? this.audioBuffer.duration : 0;
        }), s(0, n, "volume", function() {
            return this._volume;
        }, function(t) {
            this._volume = t, this.isStopped || (this.gain.gain.setTargetAtTime ? this.gain.gain.setTargetAtTime(t, this.context.currentTime, .001) : this.gain.gain.value = t);
        }), e._tryCleanFailed = !1, e.SetTargetDelay = .001, e;
    }(Ae), Je = function(t) {
        function e(t) {
            this._audio = null, this._onEnd = null, this._resumePlay = null, e.__super.call(this), 
            this._onEnd = ie.bind(this.__onEnd, this), this._resumePlay = ie.bind(this.__resumePlay, this), 
            t.addEventListener("ended", this._onEnd), this._audio = t;
        }
        r(e, "laya.media.h5audio.AudioSoundChannel", t);
        var n = e.prototype;
        return n.__onEnd = function() {
            if (1 == this.loops) return this.completeHandler &amp;&amp; (i.systemTimer.once(10, this, this.__runComplete, [ this.completeHandler ], !1), 
            this.completeHandler = null), this.stop(), void this.event("complete");
            this.loops &gt; 0 &amp;&amp; this.loops--, this.startTime = 0, this.play();
        }, n.__resumePlay = function() {
            if (this._audio &amp;&amp; this._audio.removeEventListener("canplay", this._resumePlay), 
            !this.isStopped) try {
                this._audio.currentTime = this.startTime, Dt.container.appendChild(this._audio), 
                this._audio.play();
            } catch (t) {
                this.event("error");
            }
        }, n.play = function() {
            this.isStopped = !1;
            try {
                this._audio.playbackRate = ye.playbackRate, this._audio.currentTime = this.startTime;
            } catch (t) {
                return void this._audio.addEventListener("canplay", this._resumePlay);
            }
            ye.addChannel(this), Dt.container.appendChild(this._audio), "play" in this._audio &amp;&amp; this._audio.play();
        }, n.stop = function() {
            t.prototype.stop.call(this), this.isStopped = !0, ye.removeChannel(this), this.completeHandler = null, 
            this._audio &amp;&amp; ("pause" in this._audio &amp;&amp; Mt.isConchApp &amp;&amp; this._audio.stop(), this._audio.pause(), 
            this._audio.removeEventListener("ended", this._onEnd), this._audio.removeEventListener("canplay", this._resumePlay), 
            Dt.onIE || this._audio != we._musicAudio &amp;&amp; U.recover("audio:" + this.url, this._audio), 
            Dt.removeElement(this._audio), this._audio = null);
        }, n.pause = function() {
            this.isStopped = !0, ye.removeChannel(this), "pause" in this._audio &amp;&amp; this._audio.pause();
        }, n.resume = function() {
            this._audio &amp;&amp; (this.isStopped = !1, ye.addChannel(this), "play" in this._audio &amp;&amp; this._audio.play());
        }, s(0, n, "position", function() {
            return this._audio ? this._audio.currentTime : 0;
        }), s(0, n, "duration", function() {
            return this._audio ? this._audio.duration : 0;
        }), s(0, n, "volume", function() {
            return this._audio ? this._audio.volume : 1;
        }, function(t) {
            this._audio &amp;&amp; (this._audio.volume = t);
        }), e;
    }(Ae), ti = function(t) {
        function e(t, i) {
            this._floatArray32 = null, this._uint32Array = null, this._vertexStride = 0, e.__super.call(this), 
            this._vertexStride = t, this._bufferUsage = i, this._bufferType = 34962, this._buffer = new ArrayBuffer(8), 
            this._floatArray32 = new Float32Array(this._buffer), this._uint32Array = new Uint32Array(this._buffer);
        }
        r(e, "laya.webgl.utils.VertexBuffer2D", Le);
        var i = e.prototype;
        return i.getFloat32Array = function() {
            return this._floatArray32;
        }, i.appendArray = function(t) {
            var e = this._byteLength &gt;&gt; 2;
            this.setByteLength(this._byteLength + 4 * t.length), this.getFloat32Array().set(t, e), 
            this._upload = !0;
        }, i._checkArrayUse = function() {
            this._floatArray32 &amp;&amp; (this._floatArray32 = new Float32Array(this._buffer)), this._uint32Array &amp;&amp; (this._uint32Array = new Uint32Array(this._buffer));
        }, i.deleteBuffer = function() {
            this._disposeResource();
        }, i._bindForVAO = function() {
            Pt.instance.bindBuffer(34962, this._glBuffer);
        }, i.bind = function() {
            return V._bindedVertexBuffer !== this._glBuffer &amp;&amp; (Pt.instance.bindBuffer(34962, this._glBuffer), 
            V._bindedVertexBuffer = this._glBuffer, !0);
        }, i.destroy = function() {
            laya.webgl.utils.Buffer.prototype.destroy.call(this), this._byteLength = 0, this._upload = !0, 
            this._buffer = null, this._floatArray32 = null;
        }, s(0, i, "vertexStride", function() {
            return this._vertexStride;
        }), e.create = function(t, i) {
            return void 0 === i &amp;&amp; (i = 35048), new e(t, i);
        }, e;
    }(), ei = function(e) {
        function a() {
            this._clipPoint = null, this._text = null, this._isChanged = !1, this._textWidth = 0, 
            this._textHeight = 0, this._lines = [], this._lineWidths = [], this._startX = 0, 
            this._startY = 0, this._words = null, this._charSize = {}, this._valign = "top", 
            this._color = "#000000", this._singleCharRender = !1, a.__super.call(this), this._fontSize = a.defaultFontSize, 
            this._font = a.defaultFont, this.overflow = "visible", this._style = We.EMPTY;
        }
        r(a, "laya.display.Text", e);
        var o = a.prototype;
        return o.getStyle = function() {
            return this._style === We.EMPTY &amp;&amp; (this._style = We.create()), this._style;
        }, o._getTextStyle = function() {
            return this._style === We.EMPTY &amp;&amp; (this._style = We.create()), this._style;
        }, o.destroy = function(t) {
            void 0 === t &amp;&amp; (t = !0), e.prototype.destroy.call(this, t), this._clipPoint = null, 
            this._lines = null, this._lineWidths = null, this._words &amp;&amp; this._words.forEach(function(t) {
                t.cleanCache();
            }), this._words = null, this._charSize = null;
        }, o._getBoundPointsM = function(t) {
            void 0 === t &amp;&amp; (t = !1);
            var e = mt.TEMP;
            return e.setTo(0, 0, this.width, this.height), e._getBoundPoints();
        }, o.getGraphicBounds = function(t) {
            void 0 === t &amp;&amp; (t = !1);
            var e = mt.TEMP;
            return e.setTo(0, 0, this.width, this.height), e;
        }, o._getCSSStyle = function() {
            return this._style;
        }, o.lang = function(t, e, i, n, r, s, o, h, l, u, c) {
            if (t = a.langPacks &amp;&amp; a.langPacks[t] ? a.langPacks[t] : t, arguments.length &lt; 2) this._text = t; else {
                for (var _ = 0, f = arguments.length; _ &lt; f; _++) t = t.replace("{" + _ + "}", arguments[_ + 1]);
                this._text = t;
            }
        }, o._getContextFont = function() {
            return (this.italic ? "italic " : "") + (this.bold ? "bold " : "") + this.fontSize + "px " + (Dt.onIPhone ? laya.display.Text.fontFamilyMap[this.font] || this.font : this.font);
        }, o._isPassWordMode = function() {
            var t = this._style.asPassword;
            return "prompt" in this &amp;&amp; this.prompt == this._text &amp;&amp; (t = !1), t;
        }, o._getPassWordTxt = function(t) {
            var e;
            e = "";
            for (var i = t.length; i &gt; 0; i--) e += "â—";
            return e;
        }, o._renderText = function() {
            var t = this.padding, e = this._lines.length;
            "visible" != this.overflow &amp;&amp; (e = Math.min(e, Math.floor((this.height - t[0] - t[2]) / (this.leading + this._charSize.height)) + 1));
            var i = this.scrollY / (this._charSize.height + this.leading) | 0, n = this.graphics;
            n.clear(!0);
            var r = this._getContextFont();
            Dt.context.font = r;
            var s = t[3], a = "left", o = this._lines, h = this.leading + this._charSize.height, l = this._style.currBitmapFont;
            l &amp;&amp; (h = this.leading + l.getMaxHeight());
            var u = t[0];
            if (!l &amp;&amp; this._width &gt; 0 &amp;&amp; this._textWidth &lt;= this._width &amp;&amp; ("right" == this.align ? (a = "right", 
            s = this._width - t[1]) : "center" == this.align &amp;&amp; (a = "center", s = .5 * this._width + t[3] - t[1])), 
            this._height &gt; 0) {
                var c = this._textHeight &gt; this._height ? "top" : this.valign;
                "middle" === c ? u = .5 * (this._height - e * h) + t[0] - t[2] : "bottom" === c &amp;&amp; (u = this._height - e * h - t[2]);
            }
            var _ = this._style;
            if (l &amp;&amp; l.autoScaleSize) var f = l.fontSize / this.fontSize;
            if (this._clipPoint) {
                if (n.save(), l &amp;&amp; l.autoScaleSize) {
                    var d = 0, p = 0;
                    d = this._width ? this._width - t[3] - t[1] : this._textWidth, p = this._height ? this._height - t[0] - t[2] : this._textHeight, 
                    d *= f, p *= f, n.clipRect(t[3], t[0], d, p);
                } else n.clipRect(t[3], t[0], this._width ? this._width - t[3] - t[1] : this._textWidth, this._height ? this._height - t[0] - t[2] : this._textHeight);
                this.repaint();
            }
            var m = _.asPassword;
            "prompt" in this &amp;&amp; this.prompt == this._text &amp;&amp; (m = !1);
            for (var g = 0, v = 0, y = Math.min(this._lines.length, e + i) || 1, x = i; x &lt; y; x++) {
                var b, w = o[x];
                if (m) {
                    var C = w.length;
                    w = "";
                    for (var A = C; A &gt; 0; A--) w += "â—";
                }
                if (null == w &amp;&amp; (w = ""), g = s - (this._clipPoint ? this._clipPoint.x : 0), v = u + h * x - (this._clipPoint ? this._clipPoint.y : 0), 
                this.underline &amp;&amp; this._drawUnderline(a, g, v, x), l) {
                    var E = this.width;
                    l.autoScaleSize &amp;&amp; (E = this.width * f), l._drawText(w, this, g, v, this.align, E);
                } else this._words || (this._words = []), this._words.length &gt; x - i ? b = this._words[x - i] : (b = new T(), 
                this._words.push(b)), b.setText(w), b.splitRender = this._singleCharRender, _.stroke ? n.fillBorderText(b, g, v, r, this.color, _.strokeColor, _.stroke, a) : n.fillText(b, g, v, r, this.color, a);
            }
            if (l &amp;&amp; l.autoScaleSize) {
                var S = 1 / f;
                this.scale(S, S);
            }
            this._clipPoint &amp;&amp; n.restore(), this._startX = s, this._startY = u;
        }, o._drawUnderline = function(t, e, i, n) {
            var r = this._lineWidths[n];
            switch (t) {
              case "center":
                e -= r / 2;
                break;

              case "right":
                e -= r;
            }
            i += this._charSize.height, this._graphics.drawLine(e, i, e + r, i, this.underlineColor || this.color, 1);
        }, o.typeset = function() {
            if (this._isChanged = !1, !this._text) return this._clipPoint = null, this._textWidth = this._textHeight = 0, 
            void this.graphics.clear(!0);
            Mt.isConchApp ? t.conchTextCanvas.font = this._getContextFont() : Dt.context.font = this._getContextFont(), 
            this._lines.length = 0, this._lineWidths.length = 0, this._isPassWordMode() ? this._parseLines(this._getPassWordTxt(this._text)) : this._parseLines(this._text), 
            this._evalTextSize(), this._checkEnabledViewportOrNot() ? this._clipPoint || (this._clipPoint = new Yt(0, 0)) : this._clipPoint = null, 
            this._renderText();
        }, o._evalTextSize = function() {
            var t = NaN, e = NaN;
            t = Math.max.apply(this, this._lineWidths), e = this._style.currBitmapFont ? this._lines.length * (this._style.currBitmapFont.getMaxHeight() + this.leading) + this.padding[0] + this.padding[2] : this._lines.length * (this._charSize.height + this.leading) + this.padding[0] + this.padding[2], 
            t == this._textWidth &amp;&amp; e == this._textHeight || (this._textWidth = t, this._textHeight = e);
        }, o._checkEnabledViewportOrNot = function() {
            return "scroll" == this.overflow &amp;&amp; (this._width &gt; 0 &amp;&amp; this._textWidth &gt; this._width || this._height &gt; 0 &amp;&amp; this._textHeight &gt; this._height);
        }, o.changeText = function(t) {
            this._text !== t &amp;&amp; (this.lang(t + ""), this._graphics &amp;&amp; this._graphics.replaceText(this._text) || this.typeset());
        }, o._parseLines = function(e) {
            var i = this.wordWrap || "hidden" == this.overflow;
            if (i) var n = this._getWordWrapWidth();
            var r = this._style.currBitmapFont;
            if (r) this._charSize.width = r.getMaxWidth(), this._charSize.height = r.getMaxHeight(); else {
                var s = null;
                (s = Mt.isConchApp ? t.conchTextCanvas.measureText(this._testWord) : Dt.context.measureText(a._testWord)) || (s = {
                    width: 100
                }), this._charSize.width = s.width, this._charSize.height = s.height || this.fontSize;
            }
            for (var o = e.replace(/\r\n/g, "\n").split("\n"), h = 0, l = o.length; h &lt; l; h++) {
                var u = o[h];
                i ? this._parseLine(u, n) : (this._lineWidths.push(this._getTextWidth(u)), this._lines.push(u));
            }
        }, o._parseLine = function(t, e) {
            Dt.context;
            var i, n = this._lines, r = 0, s = NaN, a = NaN, o = 0;
            if ((s = this._getTextWidth(t)) &lt;= e) return n.push(t), void this._lineWidths.push(s);
            s = this._charSize.width, 0 == (r = Math.floor(e / s)) &amp;&amp; (r = 1), a = s = this._getTextWidth(t.substring(0, r));
            for (var h = r, l = t.length; h &lt; l; h++) if (s = this._getTextWidth(t.charAt(h)), 
            (a += s) &gt; e) if (this.wordWrap) {
                var u = t.substring(o, h);
                if (u.charCodeAt(u.length - 1) &lt; 255 &amp;&amp; (i = /(?:\w|-)+$/.exec(u)) &amp;&amp; (h = i.index + o, 
                0 == i.index ? h += u.length : u = t.substring(o, h)), n.push(u), this._lineWidths.push(a - s), 
                o = h, !(h + r &lt; l)) {
                    n.push(t.substring(o, l)), this._lineWidths.push(this._getTextWidth(n[n.length - 1])), 
                    o = -1;
                    break;
                }
                h += r, a = s = this._getTextWidth(t.substring(o, h)), h--;
            } else if ("hidden" == this.overflow) return n.push(t.substring(0, h)), void this._lineWidths.push(this._getTextWidth(n[n.length - 1]));
            this.wordWrap &amp;&amp; -1 != o &amp;&amp; (n.push(t.substring(o, l)), this._lineWidths.push(this._getTextWidth(n[n.length - 1])));
        }, o._getTextWidth = function(e) {
            var i = this._style.currBitmapFont;
            return i ? i.getTextWidth(e) : Mt.isConchApp ? t.conchTextCanvas.measureText(e).width : Dt.context.measureText(e).width;
        }, o._getWordWrapWidth = function() {
            var t = this.padding, e = NaN, i = this._style.currBitmapFont;
            return (e = i &amp;&amp; i.autoScaleSize ? this._width * (i.fontSize / this.fontSize) : this._width) &lt;= 0 &amp;&amp; (e = this.wordWrap ? 100 : Dt.width), 
            e &lt;= 0 &amp;&amp; (e = 100), e - t[3] - t[1];
        }, o.getCharPoint = function(t, e) {
            this._isChanged &amp;&amp; i.systemTimer.runCallLater(this, this.typeset);
            for (var n = 0, r = this._lines, s = 0, a = 0, o = r.length; a &lt; o; a++) {
                if (n += r[a].length, t &lt; n) {
                    var h = a;
                    break;
                }
                s = n;
            }
            var l = (this.italic ? "italic " : "") + (this.bold ? "bold " : "") + this.fontSize + "px " + this.font;
            Dt.context.font = l;
            var u = this._getTextWidth(this._text.substring(s, t));
            return (e || new Yt()).setTo(this._startX + u - (this._clipPoint ? this._clipPoint.x : 0), this._startY + h * (this._charSize.height + this.leading) - (this._clipPoint ? this._clipPoint.y : 0));
        }, s(0, o, "width", function() {
            return this._width ? this._width : this.textWidth + this.padding[1] + this.padding[3];
        }, function(t) {
            t != this._width &amp;&amp; (i.superSet(je, this, "width", t), this.isChanged = !0, this.borderColor &amp;&amp; this._setBorderStyleColor(0, 0, this.width, this.height, this.borderColor, 1));
        }), s(0, o, "textWidth", function() {
            return this._isChanged &amp;&amp; i.systemTimer.runCallLater(this, this.typeset), this._textWidth;
        }), s(0, o, "height", function() {
            return this._height ? this._height : this.textHeight;
        }, function(t) {
            t != this._height &amp;&amp; (i.superSet(je, this, "height", t), this.isChanged = !0, this.borderColor &amp;&amp; this._setBorderStyleColor(0, 0, this.width, this.height, this.borderColor, 1));
        }), s(0, o, "textHeight", function() {
            return this._isChanged &amp;&amp; i.systemTimer.runCallLater(this, this.typeset), this._textHeight;
        }), s(0, o, "padding", function() {
            return this._style.padding;
        }, function(t) {
            if ("string" == typeof t) {
                var e, i = 0, n = 0;
                for (n = (e = t.split(",")).length; e.length &lt; 4; ) e.push(0);
                for (i = 0; i &lt; n; i++) e[i] = parseFloat(e[i]) || 0;
                t = e;
            }
            this._getTextStyle().padding = t, this.isChanged = !0;
        }), s(0, o, "bold", function() {
            return this._style.bold;
        }, function(t) {
            this._getTextStyle().bold = t, this.isChanged = !0;
        }), s(0, o, "text", function() {
            return this._text || "";
        }, function(t) {
            this._text !== t &amp;&amp; (this.lang(t + ""), this.isChanged = !0, this.event("change"), 
            this.borderColor &amp;&amp; this._setBorderStyleColor(0, 0, this.width, this.height, this.borderColor, 1));
        }), s(0, o, "color", function() {
            return this._color;
        }, function(t) {
            this._color != t &amp;&amp; (this._color = t, !this._isChanged &amp;&amp; this._graphics ? this._graphics.replaceTextColor(this.color) : this.isChanged = !0);
        }), s(0, o, "font", function() {
            return this._font;
        }, function(t) {
            this._style.currBitmapFont &amp;&amp; (this._getTextStyle().currBitmapFont = null, this.scale(1, 1)), 
            a._bitmapFonts &amp;&amp; a._bitmapFonts[t] &amp;&amp; (this._getTextStyle().currBitmapFont = a._bitmapFonts[t]), 
            this._font = t, this.isChanged = !0;
        }), s(0, o, "fontSize", function() {
            return this._fontSize;
        }, function(t) {
            this._fontSize != t &amp;&amp; (this._fontSize = t, this.isChanged = !0);
        }), s(0, o, "italic", function() {
            return this._style.italic;
        }, function(t) {
            this._getTextStyle().italic = t, this.isChanged = !0;
        }), s(0, o, "align", function() {
            return this._style.align;
        }, function(t) {
            this._getTextStyle().align = t, this.isChanged = !0;
        }), s(0, o, "valign", function() {
            return this._valign;
        }, function(t) {
            this._valign = t, this.isChanged = !0;
        }), s(0, o, "wordWrap", function() {
            return this._style.wordWrap;
        }, function(t) {
            this._getTextStyle().wordWrap = t, this.isChanged = !0;
        }), s(0, o, "singleCharRender", function() {
            return this._singleCharRender;
        }, function(t) {
            this._singleCharRender = t;
        }), s(0, o, "leading", function() {
            return this._style.leading;
        }, function(t) {
            this._getTextStyle().leading = t, this.isChanged = !0;
        }), s(0, o, "bgColor", function() {
            return this._style.bgColor;
        }, function(t) {
            this._getTextStyle().bgColor = t, this._renderType |= 128, this._setBgStyleColor(0, 0, this.width, this.height, t), 
            this._setRenderType(this._renderType), this.isChanged = !0;
        }), s(0, o, "borderColor", function() {
            return this._style.borderColor;
        }, function(t) {
            this._getTextStyle().borderColor = t, this._renderType |= 128, this._setBorderStyleColor(0, 0, this.width, this.height, t, 1), 
            this._setRenderType(this._renderType), this.isChanged = !0;
        }), s(0, o, "stroke", function() {
            return this._style.stroke;
        }, function(t) {
            this._getTextStyle().stroke = t, this.isChanged = !0;
        }), s(0, o, "strokeColor", function() {
            return this._style.strokeColor;
        }, function(t) {
            this._getTextStyle().strokeColor = t, this.isChanged = !0;
        }), s(0, o, "isChanged", null, function(t) {
            this._isChanged !== t &amp;&amp; (this._isChanged = t, t &amp;&amp; i.systemTimer.callLater(this, this.typeset));
        }), s(0, o, "scrollX", function() {
            return this._clipPoint ? this._clipPoint.x : 0;
        }, function(t) {
            if (!("scroll" != this.overflow || this.textWidth &lt; this._width) &amp;&amp; this._clipPoint) {
                t = t &lt; this.padding[3] ? this.padding[3] : t;
                var e = this._textWidth - this._width;
                t = t &gt; e ? e : t, this._clipPoint.x = t, this._renderText();
            }
        }), s(0, o, "scrollY", function() {
            return this._clipPoint ? this._clipPoint.y : 0;
        }, function(t) {
            if (!("scroll" != this.overflow || this.textHeight &lt; this._height) &amp;&amp; this._clipPoint) {
                t = t &lt; this.padding[0] ? this.padding[0] : t;
                var e = this._textHeight - this._height;
                t = t &gt; e ? e : t, this._clipPoint.y = t, this._renderText();
            }
        }), s(0, o, "maxScrollX", function() {
            return this.textWidth &lt; this._width ? 0 : this._textWidth - this._width;
        }), s(0, o, "maxScrollY", function() {
            return this.textHeight &lt; this._height ? 0 : this._textHeight - this._height;
        }), s(0, o, "lines", function() {
            return this._isChanged &amp;&amp; this.typeset(), this._lines;
        }), s(0, o, "underlineColor", function() {
            return this._style.underlineColor;
        }, function(t) {
            this._getTextStyle().underlineColor = t, this._isChanged || this._renderText();
        }), s(0, o, "underline", function() {
            return this._style.underline;
        }, function(t) {
            this._getTextStyle().underline = t;
        }), a.defaultFontStr = function() {
            return a.defaultFontSize + "px " + a.defaultFont;
        }, a.registerBitmapFont = function(t, e) {
            a._bitmapFonts || (a._bitmapFonts = {}), a._bitmapFonts[t] = e;
        }, a.unregisterBitmapFont = function(t, e) {
            if (void 0 === e &amp;&amp; (e = !0), a._bitmapFonts &amp;&amp; a._bitmapFonts[t]) {
                var i = a._bitmapFonts[t];
                e &amp;&amp; i.destroy(), delete a._bitmapFonts[t];
            }
        }, a.VISIBLE = "visible", a.SCROLL = "scroll", a.HIDDEN = "hidden", a.defaultFontSize = 12, 
        a.defaultFont = "Arial", a.langPacks = null, a.isComplexText = !1, a._testWord = "æ¸¸", 
        a._bitmapFonts = null, a.CharacterCache = !0, a.RightToLeft = !1, n(a, [ "fontFamilyMap", function() {
            return this.fontFamilyMap = {
                "æŠ¥éš¶": "æŠ¥éš¶-ç®€",
                "é»‘ä½“": "é»‘ä½“-ç®€",
                "æ¥·ä½“": "æ¥·ä½“-ç®€",
                "å…°äº­é»‘": "å…°äº­é»‘-ç®€",
                "éš¶å˜": "éš¶å˜-ç®€",
                "å‡Œæ…§ä½“": "å‡Œæ…§ä½“-ç®€",
                "ç¿©ç¿©ä½“": "ç¿©ç¿©ä½“-ç®€",
                "è‹¹æ–¹": "è‹¹æ–¹-ç®€",
                "æ‰‹æœ­ä½“": "æ‰‹æœ­ä½“-ç®€",
                "å®‹ä½“": "å®‹ä½“-ç®€",
                "å¨ƒå¨ƒä½“": "å¨ƒå¨ƒä½“-ç®€",
                "é­ç¢‘": "é­ç¢‘-ç®€",
                "è¡Œæ¥·": "è¡Œæ¥·-ç®€",
                "é›…ç—ž": "é›…ç—ž-ç®€",
                "åœ†ä½“": "åœ†ä½“-ç®€"
            };
        } ]), a;
    }(je), ii = function(t) {
        function e() {
            this.loop = !1, this.wrapMode = 0, this._index = 0, this._count = 0, this._isPlaying = !1, 
            this._labels = null, this._isReverse = !1, this._frameRateChanged = !1, this._actionName = null, 
            this._controlNode = null, e.__super.call(this), this._interval = se.animationInterval, 
            this._setBitUp(16);
        }
        r(e, "laya.display.AnimationBase", t);
        var i = e.prototype;
        return i.play = function(t, e, i) {
            void 0 === t &amp;&amp; (t = 0), void 0 === e &amp;&amp; (e = !0), void 0 === i &amp;&amp; (i = ""), this._isPlaying = !0, 
            this._actionName = i, this.index = "string" == typeof t ? this._getFrameByLabel(t) : t, 
            this.loop = e, this._isReverse = 1 === this.wrapMode, 0 == this.index &amp;&amp; this._isReverse &amp;&amp; (this.index = this.count - 1), 
            this.interval &gt; 0 &amp;&amp; this.timerLoop(this.interval, this, this._frameLoop, null, !0, !0);
        }, i._getFrameByLabel = function(t) {
            for (var e = 0; e &lt; this._count; e++) {
                var i = this._labels[e];
                if (i &amp;&amp; i.indexOf(t) &gt; -1) return e;
            }
            return 0;
        }, i._frameLoop = function() {
            if (this._isReverse) {
                if (this._index--, this._index &lt; 0) {
                    if (!this.loop) return this._index = 0, this.stop(), void this.event("complete");
                    2 == this.wrapMode ? (this._index = this._count &gt; 0 ? 1 : 0, this._isReverse = !1) : this._index = this._count - 1, 
                    this.event("complete");
                }
            } else if (this._index++, this._index &gt;= this._count) {
                if (!this.loop) return this._index--, this.stop(), void this.event("complete");
                2 == this.wrapMode ? (this._index = this._count - 2 &gt;= 0 ? this._count - 2 : 0, 
                this._isReverse = !0) : this._index = 0, this.event("complete");
            }
            this.index = this._index;
        }, i._setControlNode = function(t) {
            this._controlNode &amp;&amp; (this._controlNode.off("display", this, this._resumePlay), 
            this._controlNode.off("undisplay", this, this._resumePlay)), this._controlNode = t, 
            t &amp;&amp; t != this &amp;&amp; (t.on("display", this, this._resumePlay), t.on("undisplay", this, this._resumePlay));
        }, i._setDisplay = function(e) {
            t.prototype._setDisplay.call(this, e), this._resumePlay();
        }, i._resumePlay = function() {
            this._isPlaying &amp;&amp; (this._controlNode.displayedInStage ? this.play(this._index, this.loop, this._actionName) : this.clearTimer(this, this._frameLoop));
        }, i.stop = function() {
            this._isPlaying = !1, this.clearTimer(this, this._frameLoop);
        }, i.addLabel = function(t, e) {
            this._labels || (this._labels = {}), this._labels[e] || (this._labels[e] = []), 
            this._labels[e].push(t);
        }, i.removeLabel = function(t) {
            if (t) {
                if (this._labels) for (var e in this._labels) this._removeLabelFromList(this._labels[e], t);
            } else this._labels = null;
        }, i._removeLabelFromList = function(t, e) {
            if (t) for (var i = t.length - 1; i &gt;= 0; i--) t[i] == e &amp;&amp; t.splice(i, 1);
        }, i.gotoAndStop = function(t) {
            this.index = "string" == typeof t ? this._getFrameByLabel(t) : t, this.stop();
        }, i._displayToIndex = function(t) {}, i.clear = function() {
            return this.stop(), this._labels = null, this;
        }, s(0, i, "interval", function() {
            return this._interval;
        }, function(t) {
            this._interval != t &amp;&amp; (this._frameRateChanged = !0, this._interval = t, this._isPlaying &amp;&amp; t &gt; 0 &amp;&amp; this.timerLoop(t, this, this._frameLoop, null, !0, !0));
        }), s(0, i, "isPlaying", function() {
            return this._isPlaying;
        }), s(0, i, "index", function() {
            return this._index;
        }, function(t) {
            if (this._index = t, this._displayToIndex(t), this._labels &amp;&amp; this._labels[t]) for (var e = this._labels[t], i = 0, n = e.length; i &lt; n; i++) this.event("label", e[i]);
        }), s(0, i, "count", function() {
            return this._count;
        }), e.WRAP_POSITIVE = 0, e.WRAP_REVERSE = 1, e.WRAP_PINGPONG = 2, e;
    }(je), ni = function(t) {
        function e(t, i, n, r, s) {
            if (this._attribInfo = null, this.customCompile = !1, this._curActTexIndex = 0, 
            this.tag = {}, this._program = null, this._params = null, this._paramsMap = {}, 
            e.__super.call(this), !t || !i) throw "Shader Error";
            this._attribInfo = s, this._id = ++e._count, this._vs = t, this._ps = i, this._nameMap = r || {}, 
            null != n &amp;&amp; (e.sharders[n] = this), this.recreateResource(), this.lock = !0;
        }
        r(e, "laya.webgl.shader.Shader", Ke);
        var i = e.prototype;
        return i.recreateResource = function() {
            this._compile(), this._setGPUMemory(0);
        }, i._disposeResource = function() {
            wt.mainContext.deleteShader(this._vshader), wt.mainContext.deleteShader(this._pshader), 
            wt.mainContext.deleteProgram(this._program), this._vshader = this._pshader = this._program = null, 
            this._params = null, this._paramsMap = {}, this._setGPUMemory(0), this._curActTexIndex = 0;
        }, i._compile = function() {
            if (this._vs &amp;&amp; this._ps &amp;&amp; !this._params) {
                this._reCompile = !0, this._params = [];
                var t;
                this.customCompile &amp;&amp; (t = pe.preGetParams(this._vs, this._ps));
                var i = wt.mainContext;
                this._program = i.createProgram(), this._vshader = e._createShader(i, this._vs, 35633), 
                this._pshader = e._createShader(i, this._ps, 35632), i.attachShader(this._program, this._vshader), 
                i.attachShader(this._program, this._pshader);
                var n, r = 0, s = 0, a = this._attribInfo ? this._attribInfo.length : 0;
                for (r = 0; r &lt; a; r += 2) i.bindAttribLocation(this._program, this._attribInfo[r + 1], this._attribInfo[r]);
                if (i.linkProgram(this._program), !this.customCompile &amp;&amp; !i.getProgramParameter(this._program, 35714)) throw i.getProgramInfoLog(this._program);
                var o = this.customCompile ? t.uniforms.length : i.getProgramParameter(this._program, 35718);
                for (r = 0; r &lt; o; r++) {
                    var h = this.customCompile ? t.uniforms[r] : i.getActiveUniform(this._program, r);
                    (n = {
                        vartype: "uniform",
                        glfun: null,
                        ivartype: 1,
                        location: i.getUniformLocation(this._program, h.name),
                        name: h.name,
                        type: h.type,
                        isArray: !1,
                        isSame: !1,
                        preValue: null,
                        indexOfParams: 0
                    }).name.indexOf("[0]") &gt; 0 &amp;&amp; (n.name = n.name.substr(0, n.name.length - 3), n.isArray = !0, 
                    n.location = i.getUniformLocation(this._program, n.name)), this._params.push(n);
                }
                for (r = 0, s = this._params.length; r &lt; s; r++) switch (n = this._params[r], n.indexOfParams = r, 
                n.index = 1, n.value = [ n.location, null ], n.codename = n.name, n.name = this._nameMap[n.codename] ? this._nameMap[n.codename] : n.codename, 
                this._paramsMap[n.name] = n, n._this = this, n.uploadedValue = [], n.type) {
                  case 5124:
                    n.fun = n.isArray ? this._uniform1iv : this._uniform1i;
                    break;

                  case 5126:
                    n.fun = n.isArray ? this._uniform1fv : this._uniform1f;
                    break;

                  case 35664:
                    n.fun = n.isArray ? this._uniform_vec2v : this._uniform_vec2;
                    break;

                  case 35665:
                    n.fun = n.isArray ? this._uniform_vec3v : this._uniform_vec3;
                    break;

                  case 35666:
                    n.fun = n.isArray ? this._uniform_vec4v : this._uniform_vec4;
                    break;

                  case 35678:
                    n.fun = this._uniform_sampler2D;
                    break;

                  case 35680:
                    n.fun = this._uniform_samplerCube;
                    break;

                  case 35676:
                    n.glfun = i.uniformMatrix4fv, n.fun = this._uniformMatrix4fv;
                    break;

                  case 35670:
                    n.fun = this._uniform1i;
                    break;

                  case 35674:
                  case 35675:
                  default:
                    throw new Error("compile shader err!");
                }
            }
        }, i.getUniform = function(t) {
            return this._paramsMap[t];
        }, i._uniform1f = function(t, e) {
            var i = t.uploadedValue;
            return i[0] !== e ? (wt.mainContext.uniform1f(t.location, i[0] = e), 1) : 0;
        }, i._uniform1fv = function(t, e) {
            if (e.length &lt; 4) {
                var i = t.uploadedValue;
                return i[0] !== e[0] || i[1] !== e[1] || i[2] !== e[2] || i[3] !== e[3] ? (wt.mainContext.uniform1fv(t.location, e), 
                i[0] = e[0], i[1] = e[1], i[2] = e[2], i[3] = e[3], 1) : 0;
            }
            return wt.mainContext.uniform1fv(t.location, e), 1;
        }, i._uniform_vec2 = function(t, e) {
            var i = t.uploadedValue;
            return i[0] !== e[0] || i[1] !== e[1] ? (wt.mainContext.uniform2f(t.location, i[0] = e[0], i[1] = e[1]), 
            1) : 0;
        }, i._uniform_vec2v = function(t, e) {
            if (e.length &lt; 2) {
                var i = t.uploadedValue;
                return i[0] !== e[0] || i[1] !== e[1] || i[2] !== e[2] || i[3] !== e[3] ? (wt.mainContext.uniform2fv(t.location, e), 
                i[0] = e[0], i[1] = e[1], i[2] = e[2], i[3] = e[3], 1) : 0;
            }
            return wt.mainContext.uniform2fv(t.location, e), 1;
        }, i._uniform_vec3 = function(t, e) {
            var i = t.uploadedValue;
            return i[0] !== e[0] || i[1] !== e[1] || i[2] !== e[2] ? (wt.mainContext.uniform3f(t.location, i[0] = e[0], i[1] = e[1], i[2] = e[2]), 
            1) : 0;
        }, i._uniform_vec3v = function(t, e) {
            return wt.mainContext.uniform3fv(t.location, e), 1;
        }, i._uniform_vec4 = function(t, e) {
            var i = t.uploadedValue;
            return i[0] !== e[0] || i[1] !== e[1] || i[2] !== e[2] || i[3] !== e[3] ? (wt.mainContext.uniform4f(t.location, i[0] = e[0], i[1] = e[1], i[2] = e[2], i[3] = e[3]), 
            1) : 0;
        }, i._uniform_vec4v = function(t, e) {
            return wt.mainContext.uniform4fv(t.location, e), 1;
        }, i._uniformMatrix2fv = function(t, e) {
            return wt.mainContext.uniformMatrix2fv(t.location, !1, e), 1;
        }, i._uniformMatrix3fv = function(t, e) {
            return wt.mainContext.uniformMatrix3fv(t.location, !1, e), 1;
        }, i._uniformMatrix4fv = function(t, e) {
            return wt.mainContext.uniformMatrix4fv(t.location, !1, e), 1;
        }, i._uniform1i = function(t, e) {
            var i = t.uploadedValue;
            return i[0] !== e ? (wt.mainContext.uniform1i(t.location, i[0] = e), 1) : 0;
        }, i._uniform1iv = function(t, e) {
            return wt.mainContext.uniform1iv(t.location, e), 1;
        }, i._uniform_ivec2 = function(t, e) {
            var i = t.uploadedValue;
            return i[0] !== e[0] || i[1] !== e[1] ? (wt.mainContext.uniform2i(t.location, i[0] = e[0], i[1] = e[1]), 
            1) : 0;
        }, i._uniform_ivec2v = function(t, e) {
            return wt.mainContext.uniform2iv(t.location, e), 1;
        }, i._uniform_vec3i = function(t, e) {
            var i = t.uploadedValue;
            return i[0] !== e[0] || i[1] !== e[1] || i[2] !== e[2] ? (wt.mainContext.uniform3i(t.location, i[0] = e[0], i[1] = e[1], i[2] = e[2]), 
            1) : 0;
        }, i._uniform_vec3vi = function(t, e) {
            return wt.mainContext.uniform3iv(t.location, e), 1;
        }, i._uniform_vec4i = function(t, e) {
            var i = t.uploadedValue;
            return i[0] !== e[0] || i[1] !== e[1] || i[2] !== e[2] || i[3] !== e[3] ? (wt.mainContext.uniform4i(t.location, i[0] = e[0], i[1] = e[1], i[2] = e[2], i[3] = e[3]), 
            1) : 0;
        }, i._uniform_vec4vi = function(t, e) {
            return wt.mainContext.uniform4iv(t.location, e), 1;
        }, i._uniform_sampler2D = function(t, e) {
            var i = wt.mainContext, n = t.uploadedValue;
            return null == n[0] ? (n[0] = this._curActTexIndex, i.uniform1i(t.location, this._curActTexIndex), 
            nt.activeTexture(i, 33984 + this._curActTexIndex), nt.bindTexture(i, 3553, e), this._curActTexIndex++, 
            1) : (nt.activeTexture(i, 33984 + n[0]), nt.bindTexture(i, 3553, e), 0);
        }, i._uniform_samplerCube = function(t, e) {
            var i = wt.mainContext, n = t.uploadedValue;
            return null == n[0] ? (n[0] = this._curActTexIndex, i.uniform1i(t.location, this._curActTexIndex), 
            nt.activeTexture(i, 33984 + this._curActTexIndex), nt.bindTexture(i, 34067, e), 
            this._curActTexIndex++, 1) : (nt.activeTexture(i, 33984 + n[0]), nt.bindTexture(i, 34067, e), 
            0);
        }, i._noSetValue = function(t) {
            console.log("no....:" + t.name);
        }, i.uploadOne = function(t, e) {
            nt.useProgram(wt.mainContext, this._program);
            var i = this._paramsMap[t];
            i.fun.call(this, i, e);
        }, i.uploadTexture2D = function(t) {
            var e = nt;
            e._activeTextures[0] !== t &amp;&amp; (e.bindTexture(wt.mainContext, e.TEXTURE_2D, t), e._activeTextures[0] = t);
        }, i.upload = function(t, e) {
            Ke.activeShader = Ke.bindShader = this;
            var i = wt.mainContext;
            nt.useProgram(i, this._program), this._reCompile ? (e = this._params, this._reCompile = !1) : e = e || this._params;
            for (var n, r, s = e.length, a = 0, o = 0; o &lt; s; o++) null !== (r = t[(n = e[o]).name]) &amp;&amp; (a += n.fun.call(this, n, r));
            A.shaderCall += a;
        }, i.uploadArray = function(t, e, i) {
            Ke.activeShader = this, Ke.bindShader = this, nt.useProgram(wt.mainContext, this._program), 
            this._params;
            for (var n, r, s = 0, a = e - 2; a &gt;= 0; a -= 2) (r = this._paramsMap[t[a]]) &amp;&amp; null != (n = t[a + 1]) &amp;&amp; (i &amp;&amp; i[r.name] &amp;&amp; i[r.name].bind(), 
            s += r.fun.call(this, r, n));
            A.shaderCall += s;
        }, i.getParams = function() {
            return this._params;
        }, i.setAttributesLocation = function(t) {
            this._attribInfo = t;
        }, e.getShader = function(t) {
            return e.sharders[t];
        }, e.create = function(t, i, n, r, s) {
            return new e(t, i, n, r, s);
        }, e.withCompile = function(t, i, n, r) {
            if (n &amp;&amp; e.sharders[n]) return e.sharders[n];
            var s = e._preCompileShader[2e-4 * t];
            if (!s) throw new Error("withCompile shader err!" + t);
            return s.createShader(i, n, r, null);
        }, e.withCompile2D = function(t, i, n, r, s, a) {
            if (r &amp;&amp; e.sharders[r]) return e.sharders[r];
            var o = e._preCompileShader[2e-4 * t + i];
            if (!o) throw new Error("withCompile shader err!" + t + " " + i);
            return o.createShader(n, r, s, a);
        }, e.addInclude = function(t, e) {
            pe.addInclude(t, e);
        }, e.preCompile = function(t, i, n, r) {
            e._preCompileShader[2e-4 * t] = new pe(i, n, r);
        }, e.preCompile2D = function(t, i, n, r, s) {
            e._preCompileShader[2e-4 * t + i] = new pe(n, r, s);
        }, e._createShader = function(t, e, i) {
            var n = t.createShader(i);
            return t.shaderSource(n, e), t.compileShader(n), t.getShaderParameter(n, 35713) ? n : (console.log(t.getShaderInfoLog(n)), 
            null);
        }, e._count = 0, e._preCompileShader = {}, e.SHADERNAME2ID = 2e-4, e.sharders = new Array(32), 
        n(e, [ "nameKey", function() {
            return this.nameKey = new Ut();
        } ]), e;
    }(), ri = (function(t) {
        function e() {
            this.url = null, this._channel = null, this._tar = null, this._playEvents = null, 
            this._stopEvents = null, e.__super.call(this), this.visible = !1, this.on("added", this, this._onParentChange), 
            this.on("removed", this, this._onParentChange);
        }
        r(e, "laya.media.SoundNode", je);
        var i = e.prototype;
        i._onParentChange = function() {
            this.target = this.parent;
        }, i.play = function(t, e) {
            void 0 === t &amp;&amp; (t = 1), isNaN(t) &amp;&amp; (t = 1), this.url &amp;&amp; (this.stop(), this._channel = ye.playSound(this.url, t, e));
        }, i.stop = function() {
            this._channel &amp;&amp; !this._channel.isStopped &amp;&amp; this._channel.stop(), this._channel = null;
        }, i._setPlayAction = function(t, e, i, n) {
            void 0 === n &amp;&amp; (n = !0), this[i] &amp;&amp; t &amp;&amp; (n ? t.on(e, this, this[i]) : t.off(e, this, this[i]));
        }, i._setPlayActions = function(t, e, i, n) {
            if (void 0 === n &amp;&amp; (n = !0), t &amp;&amp; e) {
                var r = e.split(","), s = 0, a = 0;
                for (a = r.length, s = 0; s &lt; a; s++) this._setPlayAction(t, r[s], i, n);
            }
        }, s(0, i, "playEvent", null, function(t) {
            this._playEvents = t, t &amp;&amp; this._tar &amp;&amp; this._setPlayActions(this._tar, t, "play");
        }), s(0, i, "target", null, function(t) {
            this._tar &amp;&amp; (this._setPlayActions(this._tar, this._playEvents, "play", !1), this._setPlayActions(this._tar, this._stopEvents, "stop", !1)), 
            this._tar = t, this._tar &amp;&amp; (this._setPlayActions(this._tar, this._playEvents, "play", !0), 
            this._setPlayActions(this._tar, this._stopEvents, "stop", !0));
        }), s(0, i, "stopEvent", null, function(t) {
            this._stopEvents = t, t &amp;&amp; this._tar &amp;&amp; this._setPlayActions(this._tar, t, "stop");
        });
    }(), function(t) {
        function e(t, i) {
            e.__super.call(this), this._wrapModeU = 0, this._wrapModeV = 0, this._filterMode = 1, 
            this._readyed = !1, this._width = -1, this._height = -1, this._format = t, this._mipmap = i, 
            this._anisoLevel = 1, this._glTexture = Pt.instance.createTexture();
        }
        r(e, "laya.resource.BaseTexture", $e);
        var i = e.prototype;
        return i._isPot = function(t) {
            return 0 == (t &amp; t - 1);
        }, i._getGLFormat = function() {
            var t = 0;
            switch (this._format) {
              case 0:
                t = 6407;
                break;

              case 1:
                t = 6408;
                break;

              case 2:
                t = 6406;
                break;

              case 3:
                if (!nt._compressedTextureS3tc) throw "BaseTexture: not support DXT1 format.";
                t = nt._compressedTextureS3tc.COMPRESSED_RGB_S3TC_DXT1_EXT;
                break;

              case 4:
                if (!nt._compressedTextureS3tc) throw "BaseTexture: not support DXT5 format.";
                t = nt._compressedTextureS3tc.COMPRESSED_RGBA_S3TC_DXT5_EXT;
                break;

              case 5:
                if (!nt._compressedTextureEtc1) throw "BaseTexture: not support ETC1RGB format.";
                t = nt._compressedTextureEtc1.COMPRESSED_RGB_ETC1_WEBGL;
                break;

              case 9:
                if (!nt._compressedTexturePvrtc) throw "BaseTexture: not support PVRTCRGB_2BPPV format.";
                t = nt._compressedTexturePvrtc.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;
                break;

              case 10:
                if (!nt._compressedTexturePvrtc) throw "BaseTexture: not support PVRTCRGBA_2BPPV format.";
                t = nt._compressedTexturePvrtc.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;
                break;

              case 11:
                if (!nt._compressedTexturePvrtc) throw "BaseTexture: not support PVRTCRGB_4BPPV format.";
                t = nt._compressedTexturePvrtc.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;
                break;

              case 12:
                if (!nt._compressedTexturePvrtc) throw "BaseTexture: not support PVRTCRGBA_4BPPV format.";
                t = nt._compressedTexturePvrtc.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;
                break;

              default:
                throw "BaseTexture: unknown texture format.";
            }
            return t;
        }, i._setFilterMode = function(t) {
            var e = Pt.instance;
            switch (nt.bindTexture(e, this._glTextureType, this._glTexture), t) {
              case 0:
                this._mipmap ? e.texParameteri(this._glTextureType, 10241, 9984) : e.texParameteri(this._glTextureType, 10241, 9728), 
                e.texParameteri(this._glTextureType, 10240, 9728);
                break;

              case 1:
                this._mipmap ? e.texParameteri(this._glTextureType, 10241, 9985) : e.texParameteri(this._glTextureType, 10241, 9729), 
                e.texParameteri(this._glTextureType, 10240, 9729);
                break;

              case 2:
                this._mipmap ? e.texParameteri(this._glTextureType, 10241, 9987) : e.texParameteri(this._glTextureType, 10241, 9729), 
                e.texParameteri(this._glTextureType, 10240, 9729);
                break;

              default:
                throw new Error("BaseTexture:unknown filterMode value.");
            }
        }, i._setWarpMode = function(t, e) {
            var i = Pt.instance;
            if (nt.bindTexture(i, this._glTextureType, this._glTexture), this._isPot(this._width) &amp;&amp; this._isPot(this._height)) switch (e) {
              case 0:
                i.texParameteri(this._glTextureType, t, 10497);
                break;

              case 1:
                i.texParameteri(this._glTextureType, t, 33071);
            } else i.texParameteri(this._glTextureType, t, 33071);
        }, i._setAnisotropy = function(t) {
            var e = nt._extTextureFilterAnisotropic;
            if (e &amp;&amp; !Dt.onLimixiu) {
                t = Math.max(t, 1);
                var i = Pt.instance;
                nt.bindTexture(i, this._glTextureType, this._glTexture), t = Math.min(i.getParameter(e.MAX_TEXTURE_MAX_ANISOTROPY_EXT), t), 
                i.texParameterf(this._glTextureType, e.TEXTURE_MAX_ANISOTROPY_EXT, t);
            }
        }, i._disposeResource = function() {
            this._glTexture &amp;&amp; (Pt.instance.deleteTexture(this._glTexture), this._glTexture = null, 
            this._setGPUMemory(0));
        }, i._getSource = function() {
            return this._readyed ? this._glTexture : null;
        }, i.generateMipmap = function() {
            this._isPot(this.width) &amp;&amp; this._isPot(this.height) &amp;&amp; Pt.instance.generateMipmap(this._glTextureType);
        }, s(0, i, "wrapModeU", function() {
            return this._wrapModeU;
        }, function(t) {
            this._wrapModeU !== t &amp;&amp; (this._wrapModeU = t, -1 !== this._width &amp;&amp; this._setWarpMode(10242, t));
        }), s(0, i, "mipmap", function() {
            return this._mipmap;
        }), s(0, i, "format", function() {
            return this._format;
        }), s(0, i, "wrapModeV", function() {
            return this._wrapModeV;
        }, function(t) {
            this._wrapModeV !== t &amp;&amp; (this._wrapModeV = t, -1 !== this._height &amp;&amp; this._setWarpMode(10243, t));
        }), s(0, i, "defaulteTexture", function() {
            throw "BaseTexture:must override it.";
        }), s(0, i, "filterMode", function() {
            return this._filterMode;
        }, function(t) {
            t !== this._filterMode &amp;&amp; (this._filterMode = t, -1 !== this._width &amp;&amp; -1 !== this._height &amp;&amp; this._setFilterMode(t));
        }), s(0, i, "anisoLevel", function() {
            return this._anisoLevel;
        }, function(t) {
            t !== this._anisoLevel &amp;&amp; (this._anisoLevel = Math.max(1, Math.min(16, t)), -1 !== this._width &amp;&amp; -1 !== this._height &amp;&amp; this._setAnisotropy(t));
        }), e.WARPMODE_REPEAT = 0, e.WARPMODE_CLAMP = 1, e.FILTERMODE_POINT = 0, e.FILTERMODE_BILINEAR = 1, 
        e.FILTERMODE_TRILINEAR = 2, e.FORMAT_R8G8B8 = 0, e.FORMAT_R8G8B8A8 = 1, e.FORMAT_ALPHA8 = 2, 
        e.FORMAT_DXT1 = 3, e.FORMAT_DXT5 = 4, e.FORMAT_ETC1RGB = 5, e.FORMAT_PVRTCRGB_2BPPV = 9, 
        e.FORMAT_PVRTCRGBA_2BPPV = 10, e.FORMAT_PVRTCRGB_4BPPV = 11, e.FORMAT_PVRTCRGBA_4BPPV = 12, 
        e.FORMAT_DEPTH_16 = 0, e.FORMAT_STENCIL_8 = 1, e.FORMAT_DEPTHSTENCIL_16_8 = 2, e.FORMAT_DEPTHSTENCIL_NONE = 3, 
        e;
    }()), si = function(t) {
        function e(t) {
            e.__super.call(this), void 0 === t &amp;&amp; (t = !1), this._source = t ? Dt.createElement("canvas") : this, 
            this.lock = !0;
        }
        r(e, "laya.resource.HTMLCanvas", $e);
        var i = e.prototype;
        return i._getSource = function() {
            return this._source;
        }, i.clear = function() {
            this._ctx &amp;&amp; this._ctx.clear &amp;&amp; this._ctx.clear(), this._texture &amp;&amp; (this._texture.destroy(), 
            this._texture = null);
        }, i.destroy = function() {
            laya.resource.Resource.prototype.destroy.call(this), this._setCPUMemory(0), this._ctx &amp;&amp; this._ctx.destroy(), 
            this._ctx = null;
        }, i.release = function() {}, i._setContext = function(t) {
            this._ctx = t;
        }, i.getContext = function(t, e) {
            return this.context;
        }, i.getMemSize = function() {
            return 0;
        }, i.size = function(t, e) {
            (this._width != t || this._height != e || this._source &amp;&amp; (this._source.width != t || this._source.height != e)) &amp;&amp; (this._width = t, 
            this._height = e, this._setCPUMemory(t * e * 4), this._ctx &amp;&amp; this._ctx.size &amp;&amp; this._ctx.size(t, e), 
            this._source &amp;&amp; (this._source.height = e, this._source.width = t), this._texture &amp;&amp; (this._texture.destroy(), 
            this._texture = null));
        }, i.getTexture = function() {
            if (!this._texture) {
                var t = new _i();
                t.loadImageSource(this.source), this._texture = new Ie(t);
            }
            return this._texture;
        }, i.toBase64 = function(t, e) {
            if (this._source) {
                if (Mt.isConchApp) {
                    if (2 == conchConfig.threadMode) throw "native 2 thread mode use toBase64Async";
                    var i = this._ctx._targets.sourceWidth, n = this._ctx._targets.sourceHeight, r = this._ctx._targets.getData(0, 0, i, n);
                    return conchToBase64FlipY ? conchToBase64FlipY(t, e, r.buffer, i, n) : conchToBase64(t, e, r.buffer, i, n);
                }
                return this._source.toDataURL(t, e);
            }
            return null;
        }, i.toBase64Async = function(t, e, i) {
            var n = this._ctx._targets.sourceWidth, r = this._ctx._targets.sourceHeight;
            this._ctx._targets.getDataAsync(0, 0, n, r, function(s) {
                var a = conchToBase64FlipY ? conchToBase64FlipY(t, e, s.buffer, n, r) : conchToBase64(t, e, s.buffer, n, r);
                i(a);
            });
        }, s(0, i, "source", function() {
            return this._source;
        }), s(0, i, "context", function() {
            return this._ctx ? this._ctx : (this._source == this ? this._ctx = new ut() : this._ctx = this._source.getContext(Mt.isConchApp ? "layagl" : "2d"), 
            this._ctx._canvas = this, this._ctx);
        }), e;
    }(), ai = (function(t) {
        function e() {
            e.__super.call(this);
        }
        r(e, "laya.resource.HTMLImage", $e), e.create = function(t, e, i) {
            var n = new _i(t, e, i, !1, !1);
            return n.wrapModeU = 1, n.wrapModeV = 1, n;
        };
    }(), function(e) {
        function a() {
            this.focus = null, this._frameRate = "fast", this.designWidth = 0, this.designHeight = 0, 
            this.canvasRotation = !1, this.canvasDegree = 0, this.renderingEnabled = !0, this.screenAdaptationEnabled = !0, 
            this._screenMode = "none", this._scaleMode = "noscale", this._alignV = "top", this._alignH = "left", 
            this._bgColor = "black", this._mouseMoveTime = 0, this._renderCount = 0, this._safariOffsetY = 0, 
            this._frameStartTime = 0, this._isFocused = !1, this._isVisibility = !1, this._wgColor = [ 0, 0, 0, 1 ], 
            this._scene3Ds = [], this._globalRepaintSet = !1, this._globalRepaintGet = !1, this._curUIBase = null, 
            this.useRetinalCanvas = !1, a.__super.call(this), this.offset = new Yt(), this._canvasTransform = new st(), 
            this._previousOrientation = Dt.window.orientation, this._3dUI = [];
            var t = this;
            this.transform = this._createTransform(), this.mouseEnabled = !0, this.hitTestPrior = !0, 
            this.autoSize = !1, this._setBit(128, !0), this._setBit(2, !0), this._isFocused = !0, 
            this._isVisibility = !0, this.useRetinalCanvas = se.useRetinalCanvas;
            var e = Dt.window, i = this;
            e.addEventListener("focus", function() {
                t._isFocused = !0, i.event("focus"), i.event("focuschange");
            }), e.addEventListener("blur", function() {
                t._isFocused = !1, i.event("blur"), i.event("focuschange"), i._isInputting() &amp;&amp; (li.inputElement.target.focus = !1);
            });
            var n = "visibilityState", r = "visibilitychange", s = e.document;
            void 0 !== s.hidden ? (r = "visibilitychange", n = "visibilityState") : void 0 !== s.mozHidden ? (r = "mozvisibilitychange", 
            n = "mozVisibilityState") : void 0 !== s.msHidden ? (r = "msvisibilitychange", n = "msVisibilityState") : void 0 !== s.webkitHidden &amp;&amp; (r = "webkitvisibilitychange", 
            n = "webkitVisibilityState"), e.document.addEventListener(r, function() {
                "hidden" == Dt.document[n] ? (t._isVisibility = !1, i._isInputting() &amp;&amp; (li.inputElement.target.focus = !1)) : t._isVisibility = !0, 
                t.renderingEnabled = t._isVisibility, i.event("visibilitychange");
            }),window.addEventListener("resize",Â&nbsp;()Â&nbsp;=&gt;Â&nbsp;{
                Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;varÂ&nbsp;orientationÂ&nbsp;=Â&nbsp;Laya.Browser.window.orientation;
                Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;ifÂ&nbsp;(orientationÂ&nbsp;!=Â&nbsp;nullÂ&nbsp;&amp;&amp;Â&nbsp;orientationÂ&nbsp;!=Â&nbsp;this._previousOrientationÂ&nbsp;&amp;&amp;Â&nbsp;this._isInputting())Â&nbsp;{
                Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Input["inputElement"].target.focusÂ&nbsp;=Â&nbsp;false;
                Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;}
                Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;this._previousOrientationÂ&nbsp;=Â&nbsp;orientation;
                Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;ifÂ&nbsp;(this._isInputting())
                Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;return;
                Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;ifÂ&nbsp;(Laya.Browser.onSafari)Â&nbsp;{
                Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;this._safariOffsetYÂ&nbsp;=Â&nbsp;(Laya.Browser.window.__innerHeightÂ&nbsp;||Â&nbsp;Laya.Browser.document.body.clientHeightÂ&nbsp;||
                Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Laya.Browser.document.documentElement.clientHeight)Â&nbsp;-Â&nbsp;Laya.Browser.window.innerHeight;
                Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;this._safariOffsetYÂ&nbsp;=Â&nbsp;Math.max(0,Â&nbsp;this._safariOffsetY);
                Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;}
                
                Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;this._resetCanvas();
                Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;}),Â&nbsp;window.addEventListener("orientationchange",Â&nbsp;(e)Â&nbsp;=&gt;Â&nbsp;{
                Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;ifÂ&nbsp;(Laya.Browser.onSafari)Â&nbsp;{
                Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;clearTimeout(this._timeoutId);
                Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;this._timeoutIdÂ&nbsp;=Â&nbsp;setTimeout(()Â&nbsp;=&gt;Â&nbsp;{
                Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;this._safariOffsetYÂ&nbsp;=Â&nbsp;(Laya.Browser.window.__innerHeightÂ&nbsp;||Â&nbsp;Laya.Browser.document.body.clientHeightÂ&nbsp;||
                Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Laya.Browser.document.documentElement.clientHeight)Â&nbsp;-Â&nbsp;Laya.Browser.window.innerHeight;
                Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;this._safariOffsetYÂ&nbsp;=Â&nbsp;Math.max(0,Â&nbsp;this._safariOffsetY);
                Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;this._resetCanvas();
                
                Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;},Â&nbsp;0.5e3);
                Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;}Â&nbsp;elseÂ&nbsp;{
                Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;this._resetCanvas();
                Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;}
                Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;Â&nbsp;})
        }
        r(a, "laya.display.Stage", e);
        var h = a.prototype;
        return h._isInputting = function() {
            return Dt.onMobile &amp;&amp; li.isInputting;
        }, h._changeCanvasSize = function() {
            this.setScreenSize(Dt.clientWidth * Dt.pixelRatio, Dt.clientHeight * Dt.pixelRatio);
        }, h._resetCanvas = function() {
            this.screenAdaptationEnabled &amp;&amp; this._changeCanvasSize();
        }, h.setScreenSize = function(t, e) {
            var i = !1;
            if ("none" !== this._screenMode &amp;&amp; (i = (t / e &lt; 1 ? "vertical" : "horizontal") !== this._screenMode)) {
                var n = e;
                e = t, t = n;
            }
            this.canvasRotation = i;
            var r = Mt._mainCanvas, s = r.source.style, a = this._canvasTransform.identity(), o = this._scaleMode, h = t / this.designWidth, l = e / this.designHeight, u = this.useRetinalCanvas ? t : this.designWidth, c = this.useRetinalCanvas ? e : this.designHeight, _ = t, f = e, d = Dt.pixelRatio;
            switch (this._width = this.designWidth, this._height = this.designHeight, o) {
              case "noscale":
                h = l = 1, _ = this.designWidth, f = this.designHeight;
                break;

              case "showall":
                h = l = Math.min(h, l), u = _ = Math.round(this.designWidth * h), c = f = Math.round(this.designHeight * l);
                break;

              case "noborder":
                h = l = Math.max(h, l), _ = Math.round(this.designWidth * h), f = Math.round(this.designHeight * l);
                break;

              case "full":
                h = l = 1, this._width = u = t, this._height = c = e;
                break;

              case "fixedwidth":
                l = h, this._height = c = Math.round(e / h);
                break;

              case "fixedheight":
                h = l, this._width = u = Math.round(t / l);
                break;

              case "fixedauto":
                t / e &lt; this.designWidth / this.designHeight ? (l = h, this._height = c = Math.round(e / h)) : (h = l, 
                this._width = u = Math.round(t / l));
            }
            this.useRetinalCanvas &amp;&amp; (u = t, c = e), h *= this.scaleX, l *= this.scaleY, 1 === h &amp;&amp; 1 === l ? this.transform.identity() : (this.transform.a = this._formatData(h / (_ / u)), 
            this.transform.d = this._formatData(l / (f / c))), r.size(u, c), ue.changeWebGLSize(u, c), 
            a.scale(_ / u / d, f / c / d), "left" === this._alignH ? this.offset.x = 0 : "right" === this._alignH ? this.offset.x = t - _ : this.offset.x = .5 * (t - _) / d, 
            "top" === this._alignV ? this.offset.y = 0 : "bottom" === this._alignV ? this.offset.y = e - f : this.offset.y = .5 * (e - f) / d, 
            this.offset.x = Math.round(this.offset.x), this.offset.y = Math.round(this.offset.y), 
            a.translate(this.offset.x, this.offset.y), this._safariOffsetY &amp;&amp; a.translate(0, this._safariOffsetY), 
            this.canvasDegree = 0, i &amp;&amp; ("horizontal" === this._screenMode ? (a.rotate(Math.PI / 2), 
            a.translate(e / d, 0), this.canvasDegree = 90) : (a.rotate(-Math.PI / 2), a.translate(0, t / d), 
            this.canvasDegree = -90)), a.a = this._formatData(a.a), a.d = this._formatData(a.d), 
            a.tx = this._formatData(a.tx), a.ty = this._formatData(a.ty), this.transform = this.transform, 
            s.transformOrigin = s.webkitTransformOrigin = s.msTransformOrigin = s.mozTransformOrigin = s.oTransformOrigin = "0px 0px 0px", 
            s.transform = s.webkitTransform = s.msTransform = s.mozTransform = s.oTransform = "matrix(" + a.toString() + ")", 
            this._safariOffsetY &amp;&amp; a.translate(0, -this._safariOffsetY), a.translate(parseInt(s.left) || 0, parseInt(s.top) || 0), 
            this.visible = !0, this._repaint |= 2, this.event("resize");
        }, h._formatData = function(t) {
            return Math.abs(t) &lt; 1e-6 ? 0 : Math.abs(1 - t) &lt; .001 ? t &gt; 0 ? 1 : -1 : t;
        }, h.getMousePoint = function() {
            return Yt.TEMP.setTo(this.mouseX, this.mouseY);
        }, h.repaint = function(t) {
            void 0 === t &amp;&amp; (t = 2), this._repaint |= t;
        }, h.parentRepaint = function(t) {
            void 0 === t &amp;&amp; (t = 2);
        }, h._loop = function() {
            return this._globalRepaintGet = this._globalRepaintSet, this._globalRepaintSet = !1, 
            this.render(Mt._context, 0, 0), !0;
        }, h.getFrameTm = function() {
            return this._frameStartTime;
        }, h._onmouseMove = function(t) {
            this._mouseMoveTime = Dt.now();
        }, h.getTimeFromFrameStart = function() {
            return Dt.now() - this._frameStartTime;
        }, h.render = function(t, i, n) {
            if (a._dbgSprite.graphics.clear(), "sleep" === this._frameRate) {
                var r = Dt.now();
                if (!(r - this._frameStartTime &gt;= 1e3)) return;
                this._frameStartTime = r;
            } else {
                if (!this._visible) return this._renderCount++, void (this._renderCount % 5 == 0 &amp;&amp; ($t.I._update(), 
                A.loopCount++, this._updateTimers()));
                this._frameStartTime = Dt.now();
            }
            this._renderCount++;
            var s = "slow" !== ("mouse" === this._frameRate ? this._frameStartTime - this._mouseMoveTime &lt; 2e3 ? "fast" : "slow" : this._frameRate), o = this._renderCount % 2 == 0;
            if (A.renderSlow = !s, (s || o) &amp;&amp; ($t.I._update(), A.loopCount++, this.renderingEnabled)) {
                for (var h = 0, l = this._scene3Ds.length; h &lt; l; h++) this._scene3Ds[h]._update();
                t.clear(), e.prototype.render.call(this, t, i, n), A._show &amp;&amp; A._sp &amp;&amp; A._sp.render(t, i, n);
            }
            a._dbgSprite.render(t, 0, 0), !s &amp;&amp; o || (this.renderingEnabled &amp;&amp; (ue.clear(this._bgColor), 
            t.flush(), M.instance &amp;&amp; M.getInstance().endDispose()), this._updateTimers());
        }, h.renderToNative = function(t, i, n) {
            if (this._renderCount++, this._visible) {
                if ($t.I._update(), A.loopCount++, this.renderingEnabled) {
                    for (var r = 0, s = this._scene3Ds.length; r &lt; s; r++) this._scene3Ds[r]._update();
                    t.clear(), e.prototype.render.call(this, t, i, n), A._show &amp;&amp; A._sp &amp;&amp; A._sp.render(t, i, n);
                }
                this.renderingEnabled &amp;&amp; (ue.clear(this._bgColor), t.flush(), M.instance &amp;&amp; M.getInstance().endDispose()), 
                this._updateTimers();
            } else this._renderCount % 5 == 0 &amp;&amp; ($t.I._update(), A.loopCount++, this._updateTimers());
        }, h._updateTimers = function() {
            i.systemTimer._update(), i.startTimer._update(), i.physicsTimer._update(), i.updateTimer._update(), 
            i.lateTimer._update(), i.timer._update();
        }, h._requestFullscreen = function() {
            var t = Dt.document.documentElement;
            t.requestFullscreen ? t.requestFullscreen() : t.mozRequestFullScreen ? t.mozRequestFullScreen() : t.webkitRequestFullscreen ? t.webkitRequestFullscreen() : t.msRequestFullscreen &amp;&amp; t.msRequestFullscreen();
        }, h._fullScreenChanged = function() {
            i.stage.event("fullscreenchange");
        }, h.exitFullscreen = function() {
            var t = Dt.document;
            t.exitFullscreen ? t.exitFullscreen() : t.mozCancelFullScreen ? t.mozCancelFullScreen() : t.webkitExitFullscreen &amp;&amp; t.webkitExitFullscreen();
        }, h.isGlobalRepaint = function() {
            return this._globalRepaintGet;
        }, h.setGlobalRepaint = function() {
            this._globalRepaintSet = !0;
        }, h.add3DUI = function(t) {
            var e = t.rootView;
            this._3dUI.indexOf(e) &gt;= 0 || this._3dUI.push(e);
        }, h.remove3DUI = function(t) {
            var e = t.rootView, i = this._3dUI.indexOf(e);
            return i &gt;= 0 &amp;&amp; (this._3dUI.splice(i, 1), !0);
        }, s(0, h, "clientScaleY", function() {
            return this._transform ? this._transform.getScaleY() : 1;
        }), s(0, h, "width", e.prototype._$get_width, function(t) {
            this.designWidth = t, i.superSet(je, this, "width", t), i.systemTimer.callLater(this, this._changeCanvasSize);
        }), s(0, h, "isFocused", function() {
            return this._isFocused;
        }), s(0, h, "alignH", function() {
            return this._alignH;
        }, function(t) {
            this._alignH = t, i.systemTimer.callLater(this, this._changeCanvasSize);
        }), s(0, h, "height", e.prototype._$get_height, function(t) {
            this.designHeight = t, i.superSet(je, this, "height", t), i.systemTimer.callLater(this, this._changeCanvasSize);
        }), s(0, h, "transform", function() {
            return this._tfChanged &amp;&amp; this._adjustTransform(), this._transform = this._transform || this._createTransform();
        }, e.prototype._$set_transform), s(0, h, "isVisibility", function() {
            return this._isVisibility;
        }), s(0, h, "scaleMode", function() {
            return this._scaleMode;
        }, function(t) {
            this._scaleMode = t, i.systemTimer.callLater(this, this._changeCanvasSize);
        }), s(0, h, "alignV", function() {
            return this._alignV;
        }, function(t) {
            this._alignV = t, i.systemTimer.callLater(this, this._changeCanvasSize);
        }), s(0, h, "bgColor", function() {
            return this._bgColor;
        }, function(t) {
            this._bgColor = t, this._wgColor = t ? o.create(t).arrColor : null, Dt.onLimixiu ? this._wgColor = o.create(t).arrColor : Mt.canvas.style.background = t || "none";
        }), s(0, h, "mouseX", function() {
            return Math.round(S.instance.mouseX / this.clientScaleX);
        }), s(0, h, "mouseY", function() {
            return Math.round(S.instance.mouseY / this.clientScaleY);
        }), s(0, h, "clientScaleX", function() {
            return this._transform ? this._transform.getScaleX() : 1;
        }), s(0, h, "screenMode", function() {
            return this._screenMode;
        }, function(t) {
            this._screenMode = t;
        }), s(0, h, "visible", e.prototype._$get_visible, function(t) {
            this.visible !== t &amp;&amp; (i.superSet(je, this, "visible", t), Mt._mainCanvas.source.style.visibility = t ? "visible" : "hidden");
        }), s(0, h, "fullScreenEnabled", null, function(t) {
            var e = Dt.document, i = Mt.canvas;
            t ? (i.addEventListener("mousedown", this._requestFullscreen), i.addEventListener("touchstart", this._requestFullscreen), 
            e.addEventListener("fullscreenchange", this._fullScreenChanged), e.addEventListener("mozfullscreenchange", this._fullScreenChanged), 
            e.addEventListener("webkitfullscreenchange", this._fullScreenChanged), e.addEventListener("msfullscreenchange", this._fullScreenChanged)) : (i.removeEventListener("mousedown", this._requestFullscreen), 
            i.removeEventListener("touchstart", this._requestFullscreen), e.removeEventListener("fullscreenchange", this._fullScreenChanged), 
            e.removeEventListener("mozfullscreenchange", this._fullScreenChanged), e.removeEventListener("webkitfullscreenchange", this._fullScreenChanged), 
            e.removeEventListener("msfullscreenchange", this._fullScreenChanged));
        }), s(0, h, "frameRate", function() {
            return Mt.isConchApp ? this._frameRateNative : this._frameRate;
        }, function(e) {
            if (Mt.isConchApp) {
                switch (e) {
                  case "fast":
                    t.conch.config.setLimitFPS(60);
                    break;

                  case "mouse":
                    t.conch.config.setMouseFrame(2e3);
                    break;

                  case "slow":
                    t.conch.config.setSlowFrame(!0);
                    break;

                  case "sleep":
                    t.conch.config.setLimitFPS(1);
                }
                this._frameRateNative = e;
            } else this._frameRate = e;
        }), a.SCALE_NOSCALE = "noscale", a.SCALE_EXACTFIT = "exactfit", a.SCALE_SHOWALL = "showall", 
        a.SCALE_NOBORDER = "noborder", a.SCALE_FULL = "full", a.SCALE_FIXED_WIDTH = "fixedwidth", 
        a.SCALE_FIXED_HEIGHT = "fixedheight", a.SCALE_FIXED_AUTO = "fixedauto", a.ALIGN_LEFT = "left", 
        a.ALIGN_RIGHT = "right", a.ALIGN_CENTER = "center", a.ALIGN_TOP = "top", a.ALIGN_MIDDLE = "middle", 
        a.ALIGN_BOTTOM = "bottom", a.SCREEN_NONE = "none", a.SCREEN_HORIZONTAL = "horizontal", 
        a.SCREEN_VERTICAL = "vertical", a.FRAME_FAST = "fast", a.FRAME_SLOW = "slow", a.FRAME_MOUSE = "mouse", 
        a.FRAME_SLEEP = "sleep", n(a, [ "_dbgSprite", function() {
            return this._dbgSprite = new je();
        } ]), a;
    }(je)), oi = function(t) {
        function e() {
            this.datas = [], this.hud_width = 800, this.hud_height = 200, this.gMinV = 0, this.gMaxV = 100, 
            this.textSpace = 40, this._now = null, this.sttm = 0, e.__super.call(this), this.xdata = new Array(e.DATANUM), 
            this.ydata = new Array(e.DATANUM), e.inst = this, this._renderType |= 2048, this._setRenderType(this._renderType), 
            this._setCustomRender(), this.addDataDef(0, 16777215, "frame", 1), this.addDataDef(1, 65280, "update", 1), 
            this.addDataDef(2, 16711680, "flush", 1), this._now = performance ? performance.now.bind(performance) : Date.now;
        }
        r(e, "laya.utils.PerfHUD", je);
        var i = e.prototype;
        return i.now = function() {
            return this._now();
        }, i.start = function() {
            this.sttm = this._now();
        }, i.end = function(t) {
            var e = this._now() - this.sttm;
            this.updateValue(t, e);
        }, i.config = function(t, e) {
            this.hud_width = t, this.hud_height = e;
        }, i.addDataDef = function(t, e, i, n) {
            this.datas[t] = new at(t, e, i, n);
        }, i.updateValue = function(t, e) {
            this.datas[t].addData(e);
        }, i.v2y = function(t) {
            return this._y, this.hud_height, this.gMinV, this.gMaxV, this._y + this.hud_height * (1 - (t - this.gMinV) / this.gMaxV);
        }, i.drawHLine = function(t, e, i, n) {
            var r = this._x, s = (this._x, this.hud_width, this.v2y(e));
            t.fillText(n, r, s - 6, null, "green", null), r += this.textSpace, t.fillStyle = i, 
            t.fillRect(r, s, this._x + this.hud_width, 1, null);
        }, i.customRender = function(t, i, n) {
            var r = performance.now();
            e._lastTm &lt;= 0 &amp;&amp; (e._lastTm = r), this.updateValue(0, r - e._lastTm), e._lastTm = r, 
            t.save(), t.fillRect(this._x, this._y, this.hud_width, this.hud_height + 4, "#000000cc"), 
            t.globalAlpha = .9, this.drawHLine(t, 0, "green", "    0"), this.drawHLine(t, 10, "green", "  10"), 
            this.drawHLine(t, 16.667, "red", " "), this.drawHLine(t, 20, "green", "50|20"), 
            this.drawHLine(t, 33.334, "yellow", ""), this.drawHLine(t, 16.667 * 3, "yellow", ""), 
            this.drawHLine(t, 66.668, "yellow", ""), this.drawHLine(t, 50, "green", "20|50"), 
            this.drawHLine(t, 100, "green", "10|100");
            for (var s = 0, a = this.datas.length; s &lt; a; s++) {
                var o = this.datas[s];
                if (o) {
                    var h = o.datas.length, l = (this.hud_width - this.textSpace) / h, u = o.datapos, c = this._x + this.textSpace;
                    t.fillStyle = o.color;
                    for (var _ = h; u &lt; _; u++) {
                        var f = this.v2y(o.datas[u] * o.scale);
                        t.fillRect(c, f, l, this.hud_height + this._y - f, null), c += l;
                    }
                    for (u = 0; u &lt; o.datapos; u++) f = this.v2y(o.datas[u] * o.scale), t.fillRect(c, f, l, this.hud_height + this._y - f, null), 
                    c += l;
                }
            }
            t.restore();
        }, e._lastTm = 0, e._now = 0, e.DATANUM = 300, e.inst = null, e.drawTexTm = 0, e;
    }(), hi = function(t) {
        function e() {
            this.autoDestroyAtClosed = !1, this.url = null, this._timer = null, this._viewCreated = !1, 
            this._idMap = null, this._$componentType = "Scene", e.__super.call(this), this._setBit(8, !0), 
            e.unDestroyedScenes.push(this), this._scene = this, this.createChildren();
        }
        r(e, "laya.display.Scene", t);
        var n = e.prototype;
        return n.createChildren = function() {}, n.loadScene = function(t) {
            var e = t.indexOf(".") &gt; -1 ? t : t + ".scene", n = i.loader.getRes(e);
            if (n) this.createView(n); else {
                i.loader.resetProgress();
                var r = new Ue();
                r.on("complete", this, this._onSceneLoaded, [ e ]), r.load(e);
            }
        }, n._onSceneLoaded = function(t) {
            this.createView(De.getRes(t));
        }, n.createView = function(t) {
            t &amp;&amp; !this._viewCreated &amp;&amp; (this._viewCreated = !0, pt.createByData(this, t));
        }, n.getNodeByID = function(t) {
            return this._idMap ? this._idMap[t] : null;
        }, n.open = function(t, i) {
            void 0 === t &amp;&amp; (t = !0), t &amp;&amp; e.closeAll(), e.root.addChild(this), this.onOpened(i);
        }, n.onOpened = function(t) {}, n.close = function(t) {
            this.onClosed(t), this.autoDestroyAtClosed ? this.destroy() : this.removeSelf();
        }, n.onClosed = function(t) {}, n.destroy = function(e) {
            void 0 === e &amp;&amp; (e = !0), this._idMap = null, t.prototype.destroy.call(this, e);
            for (var i = laya.display.Scene.unDestroyedScenes, n = i.length - 1; n &gt; -1; n--) if (i[n] === this) return void i.splice(n, 1);
        }, n._sizeChanged = function() {
            this.event("resize");
        }, s(0, n, "scaleX", t.prototype._$get_scaleX, function(t) {
            i.superGet(je, this, "scaleX") != t &amp;&amp; (i.superSet(je, this, "scaleX", t), this.event("resize"));
        }), s(0, n, "scaleY", t.prototype._$get_scaleY, function(t) {
            i.superGet(je, this, "scaleY") != t &amp;&amp; (i.superSet(je, this, "scaleY", t), this.event("resize"));
        }), s(0, n, "width", function() {
            if (this._width) return this._width;
            for (var t = 0, e = this.numChildren - 1; e &gt; -1; e--) {
                var i = this.getChildAt(e);
                i._visible &amp;&amp; (t = Math.max(i._x + i.width * i.scaleX, t));
            }
            return t;
        }, function(t) {
            i.superGet(je, this, "width") != t &amp;&amp; (i.superSet(je, this, "width", t), this.callLater(this._sizeChanged));
        }), s(0, n, "timer", function() {
            return this._timer || i.timer;
        }, function(t) {
            this._timer = t;
        }), s(0, n, "height", function() {
            if (this._height) return this._height;
            for (var t = 0, e = this.numChildren - 1; e &gt; -1; e--) {
                var i = this.getChildAt(e);
                i._visible &amp;&amp; (t = Math.max(i._y + i.height * i.scaleY, t));
            }
            return t;
        }, function(t) {
            i.superGet(je, this, "height") != t &amp;&amp; (i.superSet(je, this, "height", t), this.callLater(this._sizeChanged));
        }), s(1, e, "root", function() {
            function t() {
                e._root.size(i.stage.width, i.stage.height), e._root.event("resize");
            }
            return e._root || ((e._root = i.stage.addChild(new je())).name = "root", i.stage.on("resize", null, t), 
            t()), e._root;
        }, laya.display.Sprite._$SET_root), e.load = function(t, n, r) {
            function s(t) {
                e._loadPage &amp;&amp; e._loadPage.event("progress", t), r &amp;&amp; r.runWith(t);
            }
            i.loader.resetProgress();
            var a = new Ue();
            a.on("progress", null, s), a.once("complete", null, function() {
                a.off("progress", null, s);
                var i = De.getRes(t);
                if (!i) throw "Can not find scene:" + t;
                if (!i.props) throw "Scene data is error:" + t;
                var r = i.props.runtime ? i.props.runtime : i.type, o = Rt.getClass(r);
                if ("instance" == i.props.renderType) var h = o.instance || (o.instance = new o()); else h = new o();
                if (!(h &amp;&amp; h instanceof laya.display.Node)) throw "Can not find scene:" + r;
                h.url = t, h._getBit(8) ? (h.on("onViewCreated", null, function() {
                    n &amp;&amp; n.runWith(h);
                }), h.createView(i)) : n &amp;&amp; n.runWith(h), e.hideLoadingPage();
            }), a.load(t);
        }, e.open = function(t, i, n, r, s) {
            if (void 0 === i &amp;&amp; (i = !0), n instanceof laya.utils.Handler) {
                var a = r;
                r = n, n = a;
            }
            e.showLoadingPage(), e.load(t, g.create(null, this._onSceneLoaded, [ i, r, n ]), s);
        }, e._onSceneLoaded = function(t, e, i, n) {
            n.open(t, i), e &amp;&amp; e.runWith(n);
        }, e.close = function(t, e) {
            void 0 === e &amp;&amp; (e = "");
            for (var i = !1, n = laya.display.Scene.unDestroyedScenes, r = 0, s = n.length; r &lt; s; r++) {
                var a = n[r];
                a &amp;&amp; a.parent &amp;&amp; a.url === t &amp;&amp; a.name == e &amp;&amp; (a.close(), i = !0);
            }
            return i;
        }, e.closeAll = function() {
            for (var t = laya.display.Scene.root, e = 0, i = t.numChildren; e &lt; i; e++) {
                var n = t.getChildAt(0);
                n instanceof laya.display.Scene ? n.close() : n.removeSelf();
            }
        }, e.destroy = function(t, e) {
            void 0 === e &amp;&amp; (e = "");
            for (var i = !1, n = laya.display.Scene.unDestroyedScenes, r = 0, s = n.length; r &lt; s; r++) {
                var a = n[r];
                a.url === t &amp;&amp; a.name == e &amp;&amp; (a.destroy(), i = !0);
            }
            return i;
        }, e.gc = function() {
            Ee.destroyUnusedResources();
        }, e.setLoadingPage = function(t) {
            e._loadPage != t &amp;&amp; (e._loadPage = t);
        }, e.showLoadingPage = function(t, n) {
            void 0 === n &amp;&amp; (n = 500), e._loadPage &amp;&amp; (i.systemTimer.clear(null, e._showLoading), 
            i.systemTimer.clear(null, e._hideLoading), i.systemTimer.once(n, null, e._showLoading, [ t ], !1));
        }, e._showLoading = function(t) {
            i.stage.addChild(e._loadPage), e._loadPage.onOpened(t);
        }, e._hideLoading = function() {
            e._loadPage.close();
        }, e.hideLoadingPage = function(t) {
            void 0 === t &amp;&amp; (t = 500), e._loadPage &amp;&amp; (i.systemTimer.clear(null, e._showLoading), 
            i.systemTimer.clear(null, e._hideLoading), i.systemTimer.once(t, null, e._hideLoading));
        }, e.unDestroyedScenes = [], e._root = null, e._loadPage = null, e;
    }(je), li = function(t) {
        function e() {
            this._focus = !1, this._multiline = !1, this._editable = !0, this._restrictPattern = null, 
            this._type = "text", this._prompt = "", this._promptColor = "#A9A9A9", this._originColor = "#000000", 
            this._content = "", e.__super.call(this), this._maxChars = 1e5, this._width = 100, 
            this._height = 20, this.multiline = !1, this.overflow = "scroll", this.on("mousedown", this, this._onMouseDown), 
            this.on("undisplay", this, this._onUnDisplay);
        }
        r(e, "laya.display.Input", t);
        var a = e.prototype;
        return a.setSelection = function(t, e) {
            this.focus = !0, laya.display.Input.inputElement.selectionStart = t, laya.display.Input.inputElement.selectionEnd = e;
        }, a._onUnDisplay = function(t) {
            this.focus = !1;
        }, a._onMouseDown = function(t) {
            this.focus = !0;
        }, a._syncInputTransform = function() {
            var t = this.nativeInput, n = ie.getTransformRelativeToWindow(this, this.padding[3], this.padding[0]), r = this._width - this.padding[1] - this.padding[3], s = this._height - this.padding[0] - this.padding[2];
            Mt.isConchApp ? (t.setScale(n.scaleX, n.scaleY), t.setSize(r, s), t.setPos(n.x, n.y)) : (e.inputContainer.style.transform = e.inputContainer.style.webkitTransform = "scale(" + n.scaleX + "," + n.scaleY + ") rotate(" + i.stage.canvasDegree + "deg)", 
            t.style.width = r + "px", t.style.height = s + "px", e.inputContainer.style.left = n.x + "px", 
            e.inputContainer.style.top = n.y + "px");
        }, a.select = function() {
            this.nativeInput.select();
        }, a._setInputMethod = function() {
            e.input.parentElement &amp;&amp; e.inputContainer.removeChild(e.input), e.area.parentElement &amp;&amp; e.inputContainer.removeChild(e.area), 
            e.inputElement = this._multiline ? e.area : e.input, e.inputContainer.appendChild(e.inputElement), 
            ei.RightToLeft &amp;&amp; (e.inputElement.style.direction = "rtl");
        }, a._focusIn = function() {
            laya.display.Input.isInputting = !0;
            var t = this.nativeInput;
            this._focus = !0;
            var e = t.style;
            e.whiteSpace = this.wordWrap ? "pre-wrap" : "nowrap", this._setPromptColor(), t.readOnly = !this._editable, 
            Mt.isConchApp &amp;&amp; (t.setType(this._type), t.setForbidEdit(!this._editable)), t.maxLength = this._maxChars, 
            this.padding, t.type = this._type, t.value = this._content, t.placeholder = this._prompt, 
            i.stage.off("keydown", this, this._onKeyDown), i.stage.on("keydown", this, this._onKeyDown), 
            i.stage.focus = this, this.event("focus"), Dt.onPC &amp;&amp; t.focus(), Dt.onMiniGame || Dt.onBDMiniGame || Dt.onQGMiniGame || Dt.onKGMiniGame || (this._text, 
            this._text = null), this.typeset(), t.setColor(this._originColor), t.setFontSize(this.fontSize), 
            t.setFontFace(Dt.onIPhone ? ei.fontFamilyMap[this.font] || this.font : this.font), 
            Mt.isConchApp &amp;&amp; t.setMultiAble &amp;&amp; t.setMultiAble(this._multiline), e.lineHeight = this.leading + this.fontSize + "px", 
            e.fontStyle = this.italic ? "italic" : "normal", e.fontWeight = this.bold ? "bold" : "normal", 
            e.textAlign = this.align, e.padding = "0 0", this._syncInputTransform(), !Mt.isConchApp &amp;&amp; Dt.onPC &amp;&amp; i.systemTimer.frameLoop(1, this, this._syncInputTransform);
        }, a._setPromptColor = function() {
            (e.promptStyleDOM = Dt.getElementById("promptStyle")) || ((e.promptStyleDOM = Dt.createElement("style")).setAttribute("id", "promptStyle"), 
            Dt.document.head.appendChild(e.promptStyleDOM)), e.promptStyleDOM.innerText = "input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {color:" + this._promptColor + "}input:-moz-placeholder, textarea:-moz-placeholder {color:" + this._promptColor + "}input::-moz-placeholder, textarea::-moz-placeholder {color:" + this._promptColor + "}input:-ms-input-placeholder, textarea:-ms-input-placeholder {color:" + this._promptColor + "}";
        }, a._focusOut = function() {
            laya.display.Input.isInputting = !1, this._focus = !1, this._text = null, this._content = this.nativeInput.value, 
            this._content ? (i.superSet(ei, this, "text", this._content), i.superSet(ei, this, "color", this._originColor)) : (i.superSet(ei, this, "text", this._prompt), 
            i.superSet(ei, this, "color", this._promptColor)), i.stage.off("keydown", this, this._onKeyDown), 
            i.stage.focus = null, this.event("blur"), this.event("change"), Mt.isConchApp &amp;&amp; this.nativeInput.blur(), 
            Dt.onPC &amp;&amp; i.systemTimer.clear(this, this._syncInputTransform);
        }, a._onKeyDown = function(t) {
            13 === t.keyCode &amp;&amp; (Dt.onMobile &amp;&amp; !this._multiline &amp;&amp; (this.focus = !1), this.event("enter"));
        }, a.changeText = function(e) {
            this._content = e, this._focus ? (this.nativeInput.value = e || "", this.event("change")) : t.prototype.changeText.call(this, e);
        }, s(0, a, "color", t.prototype._$get_color, function(t) {
            this._focus &amp;&amp; this.nativeInput.setColor(t), i.superSet(ei, this, "color", this._content ? t : this._promptColor), 
            this._originColor = t;
        }), s(0, a, "multiline", function() {
            return this._multiline;
        }, function(t) {
            this._multiline = t, this.valign = t ? "top" : "middle";
        }), s(0, a, "maxChars", function() {
            return this._maxChars;
        }, function(t) {
            t &lt;= 0 &amp;&amp; (t = 1e5), this._maxChars = t;
        }), s(0, a, "text", function() {
            return this._focus ? this.nativeInput.value : this._content || "";
        }, function(t) {
            i.superSet(ei, this, "color", this._originColor), t += "", this._focus ? (this.nativeInput.value = t || "", 
            this.event("change")) : (this._multiline || (t = t.replace(/\r?\n/g, "")), this._content = t, 
            t ? i.superSet(ei, this, "text", t) : (i.superSet(ei, this, "text", this._prompt), 
            i.superSet(ei, this, "color", this.promptColor)));
        }), s(0, a, "nativeInput", function() {
            return this._multiline ? e.area : e.input;
        }), s(0, a, "focus", function() {
            return this._focus;
        }, function(t) {
            var i = this.nativeInput;
            this._focus !== t &amp;&amp; (t ? (i.target ? i.target._focusOut() : this._setInputMethod(), 
            i.target = this, this._focusIn()) : (i.target = null, this._focusOut(), Dt.document.body.scrollTop = 0, 
            i.blur(), Mt.isConchApp ? i.setPos(-1e4, -1e4) : e.inputContainer.contains(i) &amp;&amp; e.inputContainer.removeChild(i)));
        }), s(0, a, "editable", function() {
            return this._editable;
        }, function(t) {
            this._editable = t, Mt.isConchApp &amp;&amp; e.input.setForbidEdit(!t);
        }), s(0, a, "bgColor", t.prototype._$get_bgColor, function(t) {
            i.superSet(ei, this, "bgColor", t), Mt.isConchApp &amp;&amp; this.nativeInput.setBgColor(t);
        }), s(0, a, "restrict", function() {
            return this._restrictPattern ? this._restrictPattern.source : "";
        }, function(t) {
            t ? ((t = "[^" + t + "]").indexOf("^^") &gt; -1 &amp;&amp; (t = t.replace("^^", "")), this._restrictPattern = new RegExp(t, "g")) : this._restrictPattern = null;
        }), s(0, a, "prompt", function() {
            return this._prompt;
        }, function(t) {
            !this._text &amp;&amp; t &amp;&amp; i.superSet(ei, this, "color", this._promptColor), this.promptColor = this._promptColor, 
            this._text ? i.superSet(ei, this, "text", this._text == this._prompt ? t : this._text) : i.superSet(ei, this, "text", t), 
            this._prompt = ei.langPacks &amp;&amp; ei.langPacks[t] ? ei.langPacks[t] : t;
        }), s(0, a, "promptColor", function() {
            return this._promptColor;
        }, function(t) {
            this._promptColor = t, this._content || i.superSet(ei, this, "color", t);
        }), s(0, a, "type", function() {
            return this._type;
        }, function(t) {
            this._getTextStyle().asPassword = "password" === t, this._type = t;
        }), e.__init__ = function() {
            if (e._createInputElement(), Dt.onMobile) {
                var t = !1;
                (Dt.onMiniGame || Dt.onBDMiniGame || Dt.onQGMiniGame || Dt.onKGMiniGame) &amp;&amp; (t = !0), 
                Mt.canvas.addEventListener(e.IOS_IFRAME ? t ? "touchend" : "click" : "touchend", e._popupInputMethod);
            }
        }, e._popupInputMethod = function(t) {
            laya.display.Input.isInputting &amp;&amp; laya.display.Input.inputElement.focus();
        }, e._createInputElement = function() {
            e._initInput(e.area = Dt.createElement("textarea")), e._initInput(e.input = Dt.createElement("input")), 
            (e.inputContainer = Dt.createElement("div")).style.position = "absolute", e.inputContainer.style.zIndex = 1e5, 
            Dt.container.appendChild(e.inputContainer), e.inputContainer.setPos = function(t, i) {
                e.inputContainer.style.left = t + "px", e.inputContainer.style.top = i + "px";
            };
        }, e._initInput = function(t) {
            var i = t.style;
            i.cssText = "position:absolute;overflow:hidden;resize:none;transform-origin:0 0;-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-o-transform-origin:0 0;", 
            i.resize = "none", i.backgroundColor = "transparent", i.border = "none", i.outline = "none", 
            i.zIndex = 1, t.addEventListener("input", e._processInputting), t.addEventListener("mousemove", e._stopEvent), 
            t.addEventListener("mousedown", e._stopEvent), t.addEventListener("touchmove", e._stopEvent), 
            t.setFontFace = function(e) {
                t.style.fontFamily = e;
            }, Mt.isConchApp || (t.setColor = function(e) {
                t.style.color = e;
            }, t.setFontSize = function(e) {
                t.style.fontSize = e + "px";
            });
        }, e._processInputting = function(t) {
            var e = laya.display.Input.inputElement.target;
            if (e) {
                var i = laya.display.Input.inputElement.value;
                e._restrictPattern &amp;&amp; (i = i.replace(/\u2006|\x27/g, ""), e._restrictPattern.test(i) &amp;&amp; (i = i.replace(e._restrictPattern, ""), 
                laya.display.Input.inputElement.value = i)), e._text = i, e.event("input");
            }
        }, e._stopEvent = function(t) {
            "touchmove" == t.type &amp;&amp; t.preventDefault(), t.stopPropagation &amp;&amp; t.stopPropagation();
        }, e.TYPE_TEXT = "text", e.TYPE_PASSWORD = "password", e.TYPE_EMAIL = "email", e.TYPE_URL = "url", 
        e.TYPE_NUMBER = "number", e.TYPE_RANGE = "range", e.TYPE_DATE = "date", e.TYPE_MONTH = "month", 
        e.TYPE_WEEK = "week", e.TYPE_TIME = "time", e.TYPE_DATE_TIME = "datetime", e.TYPE_DATE_TIME_LOCAL = "datetime-local", 
        e.TYPE_SEARCH = "search", e.input = null, e.area = null, e.inputElement = null, 
        e.inputContainer = null, e.confirmButton = null, e.promptStyleDOM = null, e.inputHeight = 45, 
        e.isInputting = !1, e.stageMatrix = null, n(e, [ "IOS_IFRAME", function() {
            return this.IOS_IFRAME = Dt.onIOS &amp;&amp; Dt.window.top != Dt.window.self;
        } ]), e;
    }(ei), ui = (function(t) {
        function e() {
            this._frames = null, this._url = null, e.__super.call(this), this._setControlNode(this);
        }
        r(e, "laya.display.Animation", t);
        var n = e.prototype;
        n.destroy = function(t) {
            void 0 === t &amp;&amp; (t = !0), this.stop(), laya.display.Sprite.prototype.destroy.call(this, t), 
            this._frames = null, this._labels = null;
        }, n.play = function(e, i, n) {
            void 0 === e &amp;&amp; (e = 0), void 0 === i &amp;&amp; (i = !0), void 0 === n &amp;&amp; (n = ""), n &amp;&amp; this._setFramesFromCache(n, !0), 
            t.prototype.play.call(this, e, i, n);
        }, n._setFramesFromCache = function(t, i) {
            if (void 0 === i &amp;&amp; (i = !1), this._url &amp;&amp; (t = this._url + "#" + t), t &amp;&amp; e.framesMap[t]) {
                var n = e.framesMap[t];
                return n instanceof Array ? (this._frames = e.framesMap[t], this._count = this._frames.length) : (n.nodeRoot &amp;&amp; (e.framesMap[t] = di.parseAnimationByData(n), 
                n = e.framesMap[t]), this._frames = n.frames, this._count = this._frames.length, 
                this._frameRateChanged || (this._interval = n.interval), this._labels = this._copyLabels(n.labels)), 
                !0;
            }
            return i &amp;&amp; console.log("ani not found:", t), !1;
        }, n._copyLabels = function(t) {
            if (!t) return null;
            var e;
            e = {};
            var i;
            for (i in t) e[i] = ie.copyArray([], t[i]);
            return e;
        }, n._frameLoop = function() {
            this._visible &amp;&amp; this._style.alpha &gt; .01 &amp;&amp; this._frames &amp;&amp; t.prototype._frameLoop.call(this);
        }, n._displayToIndex = function(t) {
            this._frames &amp;&amp; (this.graphics = this._frames[t]);
        }, n.clear = function() {
            return t.prototype.clear.call(this), this.stop(), this.graphics = null, this._frames = null, 
            this._labels = null, this;
        }, n.loadImages = function(t, i) {
            return void 0 === i &amp;&amp; (i = ""), this._url = "", this._setFramesFromCache(i) || (this.frames = e.framesMap[i] ? e.framesMap[i] : e.createFrames(t, i)), 
            this;
        }, n.loadAtlas = function(t, n, r) {
            function s(i) {
                t === i &amp;&amp; (a.frames = e.framesMap[r] ? e.framesMap[r] : e.createFrames(t, r), n &amp;&amp; n.run());
            }
            void 0 === r &amp;&amp; (r = ""), this._url = "";
            var a = this;
            return a._setFramesFromCache(r) || (De.getAtlas(t) ? s(t) : i.loader.load(t, g.create(null, s, [ t ]), null, "atlas")), 
            this;
        }, n.loadAnimation = function(t, e, n) {
            return this._url = t, this._actionName || (this._actionName = ""), this._setFramesFromCache(this._actionName) ? (this._setFramesFromCache(this._actionName, !0), 
            this.index = 0, e &amp;&amp; e.run()) : !n || De.getAtlas(n) ? this._loadAnimationData(t, e, n) : i.loader.load(n, g.create(this, this._loadAnimationData, [ t, e, n ]), null, "atlas"), 
            this;
        }, n._loadAnimationData = function(t, n, r) {
            function s(i) {
                if (De.getRes(i)) {
                    if (t === i) {
                        var r;
                        if (e.framesMap[t + "#"]) o._setFramesFromCache(a._actionName, !0), a.index = 0, 
                        a._resumePlay(); else {
                            var s = di.parseAnimationData(De.getRes(t));
                            if (!s) return;
                            var h, l = s.animationList, u = 0, c = l.length;
                            for (u = 0; u &lt; c; u++) r = l[u], e.framesMap[t + "#" + r.name] = r, h || (h = r);
                            h &amp;&amp; (e.framesMap[t + "#"] = h, o._setFramesFromCache(a._actionName, !0), a.index = 0), 
                            a._resumePlay();
                        }
                        n &amp;&amp; n.run();
                    }
                    De.clearRes(t);
                } else e.framesMap[t + "#"] &amp;&amp; (o._setFramesFromCache(a._actionName, !0), a.index = 0, 
                a._resumePlay(), n &amp;&amp; n.run());
            }
            var a = this;
            if (!r || De.getAtlas(r)) {
                var o = this;
                De.getRes(t) ? s(t) : i.loader.load(t, g.create(null, s, [ t ]), null, "json");
            } else console.warn("atlas load fail:" + r);
        }, s(0, n, "frames", function() {
            return this._frames;
        }, function(t) {
            this._frames = t, t &amp;&amp; (this._count = t.length, this._actionName &amp;&amp; this._setFramesFromCache(this._actionName, !0), 
            this.index = this._index);
        }), s(0, n, "autoPlay", null, function(t) {
            t ? this.play() : this.stop();
        }), s(0, n, "source", null, function(t) {
            t.indexOf(".ani") &gt; -1 ? this.loadAnimation(t) : t.indexOf(".json") &gt; -1 || t.indexOf("als") &gt; -1 || t.indexOf("atlas") &gt; -1 ? this.loadAtlas(t) : this.loadImages(t.split(","));
        }), s(0, n, "autoAnimation", null, function(t) {
            this.play(0, !0, t);
        }), e.createFrames = function(t, i) {
            var n;
            if ("string" == typeof t) {
                var r = De.getAtlas(t);
                if (r &amp;&amp; r.length) {
                    n = [];
                    for (var s = 0, a = r.length; s &lt; a; s++) {
                        var o = new qt();
                        o.drawImage(De.getRes(r[s]), 0, 0), n.push(o);
                    }
                }
            } else if (t instanceof Array) for (n = [], s = 0, a = t.length; s &lt; a; s++) (o = new qt()).loadImage(t[s], 0, 0), 
            n.push(o);
            return i &amp;&amp; (e.framesMap[i] = n), n;
        }, e.clearCache = function(t) {
            var i, n = e.framesMap, r = t + "#";
            for (i in n) i !== t &amp;&amp; 0 !== i.indexOf(r) || delete e.framesMap[i];
        }, e.framesMap = {};
    }(ii), function(t) {
        function e(t, i, n, r, s) {
            this._params2dQuick2 = null, this._shaderValueWidth = 0, this._shaderValueHeight = 0, 
            e.__super.call(this, t, i, n, r, s);
        }
        r(e, "laya.webgl.shader.d2.Shader2X", t);
        var i = e.prototype;
        return i._disposeResource = function() {
            t.prototype._disposeResource.call(this), this._params2dQuick2 = null;
        }, i.upload2dQuick2 = function(t) {
            this.upload(t, this._params2dQuick2 || this._make2dQuick2());
        }, i._make2dQuick2 = function() {
            if (!this._params2dQuick2) {
                this._params2dQuick2 = [];
                for (var t, e = this._params, i = 0, n = e.length; i &lt; n; i++) "size" !== (t = e[i]).name &amp;&amp; this._params2dQuick2.push(t);
            }
            return this._params2dQuick2;
        }, e.create = function(t, i, n, r, s) {
            return new e(t, i, n, r, s);
        }, e;
    }(ni)), ci = function(t) {
        function e() {
            this._targetDic = null, this._animationData = null, this._usedFrames = null, e.__super.call(this), 
            null === e._sortIndexFun &amp;&amp; (e._sortIndexFun = R.sortByKey("index", !1, !0));
        }
        r(e, "laya.display.FrameAnimation", t);
        var i = e.prototype;
        return i._setUp = function(t, e) {
            this._targetDic = t, this._animationData = e, this.interval = 1e3 / e.frameRate, 
            e.parsed ? (this._count = e.count, this._labels = e.labels, this._usedFrames = e.animationNewFrames) : (this._usedFrames = [], 
            this._calculateDatas(), e.parsed = !0, e.labels = this._labels, e.count = this._count, 
            e.animationNewFrames = this._usedFrames);
        }, i.clear = function() {
            return t.prototype.clear.call(this), this._targetDic = null, this._animationData = null, 
            this;
        }, i._displayToIndex = function(t) {
            if (this._animationData) {
                t &lt; 0 &amp;&amp; (t = 0), t &gt; this._count &amp;&amp; (t = this._count);
                var e = this._animationData.nodes, i = 0, n = e.length;
                for (i = 0; i &lt; n; i++) this._displayNodeToFrame(e[i], t);
            }
        }, i._displayNodeToFrame = function(t, e, i) {
            i || (i = this._targetDic);
            var n = i[t.target];
            if (n) {
                var r, s, a, o = t.frames, h = t.keys, l = 0, u = h.length;
                for (l = 0; l &lt; u; l++) a = (s = o[r = h[l]]).length &gt; e ? s[e] : s[s.length - 1], 
                n[r] = a;
                var c, _ = t.funkeys;
                if (0 != (u = _.length)) for (l = 0; l &lt; u; l++) void 0 !== (c = o[r = _[l]])[e] &amp;&amp; n[r] &amp;&amp; n[r].apply(n, c[e]);
            }
        }, i._calculateDatas = function() {
            if (this._animationData) {
                var t, e = this._animationData.nodes, i = 0, n = e.length;
                for (this._count = 0, i = 0; i &lt; n; i++) t = e[i], this._calculateKeyFrames(t);
                this._count += 1;
            }
        }, i._calculateKeyFrames = function(t) {
            var i, n, r = t.keyframes, s = t.target;
            t.frames || (t.frames = {}), t.keys ? t.keys.length = 0 : t.keys = [], t.funkeys ? t.funkeys.length = 0 : t.funkeys = [], 
            t.initValues || (t.initValues = {});
            for (i in r) {
                var a = -1 != i.indexOf("()");
                if (n = r[i], a &amp;&amp; (i = i.substr(0, i.length - 2)), t.frames[i] || (t.frames[i] = []), 
                a) {
                    t.funkeys.push(i);
                    for (var o = t.frames[i], h = 0; h &lt; n.length; h++) {
                        var l = n[h];
                        o[l.index] = l.value, l.index &gt; this._count &amp;&amp; (this._count = l.index);
                    }
                } else this._targetDic &amp;&amp; this._targetDic[s] &amp;&amp; (t.initValues[i] = this._targetDic[s][i]), 
                n.sort(e._sortIndexFun), t.keys.push(i), this._calculateNodePropFrames(n, t.frames[i], i, s);
            }
        }, i.resetNodes = function() {
            if (this._targetDic &amp;&amp; this._animationData) {
                var t, e, i = this._animationData.nodes, n = 0, r = i.length;
                for (n = 0; n &lt; r; n++) if (t = i[n], e = t.initValues) {
                    var s = this._targetDic[t.target];
                    if (s) {
                        var a;
                        for (a in e) s[a] = e[a];
                    }
                }
            }
        }, i._calculateNodePropFrames = function(t, e, i, n) {
            var r = 0, s = t.length - 1;
            for (e.length = t[s].index + 1, r = 0; r &lt; s; r++) this._dealKeyFrame(t[r]), this._calculateFrameValues(t[r], t[r + 1], e);
            0 == s &amp;&amp; (e[0] = t[0].value, this._usedFrames &amp;&amp; (this._usedFrames[t[0].index] = !0)), 
            this._dealKeyFrame(t[r]);
        }, i._dealKeyFrame = function(t) {
            t.label &amp;&amp; "" != t.label &amp;&amp; this.addLabel(t.label, t.index);
        }, i._calculateFrameValues = function(t, e, i) {
            var n, r = 0, s = t.index, a = e.index, o = t.value, h = e.value - t.value, l = a - s, u = this._usedFrames;
            if (a &gt; this._count &amp;&amp; (this._count = a), t.tween) for (null == (n = te[t.tweenMethod]) &amp;&amp; (n = te.linearNone), 
            r = s; r &lt; a; r++) i[r] = n(r - s, o, h, l), u &amp;&amp; (u[r] = !0); else for (r = s; r &lt; a; r++) i[r] = o;
            u &amp;&amp; (u[t.index] = !0, u[e.index] = !0), i[e.index] = e.value;
        }, e._sortIndexFun = null, e;
    }(ii), _i = function(t) {
        function e(t, i, n, r, s) {
            if (void 0 === t &amp;&amp; (t = 0), void 0 === i &amp;&amp; (i = 0), void 0 === n &amp;&amp; (n = 1), void 0 === r &amp;&amp; (r = !0), 
            void 0 === s &amp;&amp; (s = !1), e.__super.call(this, n, r), this._glTextureType = 3553, 
            this._width = t, this._height = i, this._canRead = s, this._setWarpMode(10242, this._wrapModeU), 
            this._setWarpMode(10243, this._wrapModeV), this._setFilterMode(this._filterMode), 
            this._setAnisotropy(this._anisoLevel), this._mipmap) {
                this._mipmapCount = Math.max(Math.ceil(Math.log2(t)) + 1, Math.ceil(Math.log2(2)) + 1);
                for (var a = 0; a &lt; this._mipmapCount; a++) this._setPixels(null, a, Math.max(t &gt;&gt; a, 1), Math.max(i &gt;&gt; a, 1));
                this._setGPUMemory(t * i * 4 * (1 + 1 / 3));
            } else this._mipmapCount = 1, this._setGPUMemory(t * i * 4);
        }
        r(e, "laya.resource.Texture2D", ri);
        var n = e.prototype;
        return n._getFormatByteCount = function() {
            switch (this._format) {
              case 0:
                return 3;

              case 1:
                return 4;

              case 2:
                return 1;

              default:
                throw "Texture2D: unknown format.";
            }
        }, n._setPixels = function(t, e, i, n) {
            var r = Pt.instance, s = this._glTextureType, a = this._getGLFormat();
            nt.bindTexture(r, s, this._glTexture), 0 === this.format ? (r.pixelStorei(3317, 1), 
            r.texImage2D(s, e, a, i, n, 0, a, 5121, t), r.pixelStorei(3317, 4)) : r.texImage2D(s, e, a, i, n, 0, a, 5121, t);
        }, n._calcualatesCompressedDataSize = function(t, e, i) {
            switch (t) {
              case 3:
              case 5:
                return (e + 3 &gt;&gt; 2) * (i + 3 &gt;&gt; 2) * 8;

              case 4:
                return (e + 3 &gt;&gt; 2) * (i + 3 &gt;&gt; 2) * 16;

              case 11:
              case 12:
                return Math.floor((Math.max(e, 8) * Math.max(i, 8) * 4 + 7) / 8);

              case 9:
              case 10:
                return Math.floor((Math.max(e, 16) * Math.max(i, 8) * 2 + 7) / 8);

              default:
                return 0;
            }
        }, n._pharseDDS = function(t) {
            var e = new Int32Array(t, 0, 31);
            if (542327876 != e[0]) throw "Invalid magic number in DDS header";
            if (!(4 &amp; e[20])) throw "Unsupported format, must contain a FourCC code";
            var i = e[21];
            switch (this._format) {
              case 3:
                if (827611204 !== i) throw "the FourCC code is not same with texture format.";
                break;

              case 4:
                if (894720068 !== i) throw "the FourCC code is not same with texture format.";
                break;

              default:
                throw "unknown texture format.";
            }
            var n = 1;
            if (131072 &amp; e[2]) {
                if (n = Math.max(1, e[7]), !this._mipmap) throw "the mipmap is not same with Texture2D.";
            } else if (this._mipmap) throw "the mipmap is not same with Texture2D.";
            var r = e[4], s = e[3];
            this._width = r, this._height = s;
            var a = e[1] + 4;
            this._upLoadCompressedTexImage2D(t, r, s, n, a, 0);
        }, n._pharseKTX = function(t) {
            var e = new Uint8Array(t, 0, 12);
            if (171 != e[0] || 75 != e[1] || 84 != e[2] || 88 != e[3] || 32 != e[4] || 49 != e[5] || 49 != e[6] || 187 != e[7] || 13 != e[8] || 10 != e[9] || 26 != e[10] || 10 != e[11]) throw "Invalid fileIdentifier in KTX header";
            var i = new Int32Array(e.buffer, e.length, 13);
            switch (i[4]) {
              case nt._compressedTextureEtc1.COMPRESSED_RGB_ETC1_WEBGL:
                this._format = 5;
                break;

              default:
                throw "unknown texture format.";
            }
            var n = i[11], r = i[6], s = i[7];
            this._width = r, this._height = s;
            var a = 64 + i[12];
            this._upLoadCompressedTexImage2D(t, r, s, n, a, 4);
        }, n._pharsePVR = function(t) {
            var e = new Int32Array(t, 0, 13);
            if (55727696 != e[0]) throw "Invalid magic number in PVR header";
            switch (e[2]) {
              case 0:
                this._format = 9;
                break;

              case 2:
                this._format = 11;
                break;

              case 1:
                this._format = 10;
                break;

              case 3:
                this._format = 12;
                break;

              default:
                throw "Texture2D:unknown PVR format.";
            }
            var i = e[11], n = e[7], r = e[6];
            this._width = n, this._height = r;
            var s = e[12] + 52;
            this._upLoadCompressedTexImage2D(t, n, r, i, s, 0);
        }, n._upLoadCompressedTexImage2D = function(t, e, i, n, r, s) {
            var a = Pt.instance, o = this._glTextureType;
            nt.bindTexture(a, o, this._glTexture);
            for (var h = this._getGLFormat(), l = r, u = 0; u &lt; n; u++) {
                l += s;
                var c = this._calcualatesCompressedDataSize(this._format, e, i), _ = new Uint8Array(t, l, c);
                a.compressedTexImage2D(o, u, h, e, i, 0, _), e = Math.max(e &gt;&gt; 1, 1), i = Math.max(i &gt;&gt; 1, 1), 
                l += c;
            }
            var f = l;
            this._setGPUMemory(f), this._readyed = !0, this._activeResource();
        }, n.loadImageSource = function(t, e) {
            void 0 === e &amp;&amp; (e = !1);
            var i = t.width, n = t.height;
            this._width = i, this._height = n, this._isPot(i) &amp;&amp; this._isPot(n) || (this._mipmap = !1), 
            this._setWarpMode(10242, this._wrapModeU), this._setWarpMode(10243, this._wrapModeV), 
            this._setFilterMode(this._filterMode);
            var r = Pt.instance;
            nt.bindTexture(r, this._glTextureType, this._glTexture);
            var s = this._getGLFormat();
            Mt.isConchApp ? t instanceof laya.resource.HTMLCanvas ? r.texImage2D(this._glTextureType, 0, 6408, 6408, 5121, t) : (t.setPremultiplyAlpha(e), 
            r.texImage2D(this._glTextureType, 0, 6408, 6408, 5121, t)) : (e &amp;&amp; r.pixelStorei(37441, !0), 
            r.texImage2D(this._glTextureType, 0, s, s, 5121, t), e &amp;&amp; r.pixelStorei(37441, !1)), 
            this._mipmap ? (r.generateMipmap(this._glTextureType), this._setGPUMemory(i * n * 4 * (1 + 1 / 3))) : this._setGPUMemory(i * n * 4), 
            this._canRead &amp;&amp; (Mt.isConchApp ? this._pixels = new Uint8Array(t._nativeObj.getImageData(0, 0, i, n)) : (Dt.canvas.size(i, n), 
            Dt.canvas.clear(), Dt.context.drawImage(t, 0, 0, i, n), this._pixels = new Uint8Array(Dt.context.getImageData(0, 0, i, n).data.buffer))), 
            this._readyed = !0, this._activeResource();
        }, n.setPixels = function(t, e) {
            if (void 0 === e &amp;&amp; (e = 0), !t) throw "Texture2D:pixels can't be null.";
            var i = Math.max(this._width &gt;&gt; e, 1), n = Math.max(this._height &gt;&gt; e, 1), r = i * n * this._getFormatByteCount();
            if (t.length &lt; r) throw "Texture2D:pixels length should at least " + r + ".";
            this._setPixels(t, e, i, n), this._canRead &amp;&amp; (this._pixels = t), this._readyed = !0, 
            this._activeResource();
        }, n.setSubPixels = function(t, e, i, n, r, s) {
            if (void 0 === s &amp;&amp; (s = 0), !r) throw "Texture2D:pixels can't be null.";
            var a = Pt.instance, o = this._glTextureType;
            nt.bindTexture(a, o, this._glTexture);
            var h = this._getGLFormat();
            0 === this._format ? (a.pixelStorei(3317, 1), a.texSubImage2D(o, s, t, e, i, n, h, 5121, r), 
            a.pixelStorei(3317, 4)) : a.texSubImage2D(o, s, t, e, i, n, h, 5121, r), this._readyed = !0, 
            this._activeResource();
        }, n.setCompressData = function(t) {
            switch (this._format) {
              case 3:
              case 4:
                this._pharseDDS(t);
                break;

              case 5:
                this._pharseKTX(t);
                break;

              case 9:
              case 10:
              case 11:
              case 12:
                this._pharsePVR(t);
                break;

              default:
                throw "Texture2D:unkonwn format.";
            }
        }, n._recoverResource = function() {}, n.getPixels = function() {
            if (this._canRead) return this._pixels;
            throw new Error("Texture2D: must set texture canRead is true.");
        }, s(0, n, "mipmapCount", function() {
            return this._mipmapCount;
        }), s(0, n, "defaulteTexture", function() {
            return laya.resource.Texture2D.grayTexture;
        }), e.__init__ = function() {
            var t = new Uint8Array(3);
            t[0] = 128, t[1] = 128, t[2] = 128, (e.grayTexture = new e(1, 1, 0, !1, !1)).setPixels(t), 
            e.grayTexture.lock = !0, t[0] = 255, t[1] = 255, t[2] = 255, (e.whiteTexture = new e(1, 1, 0, !1, !1)).setPixels(t), 
            e.whiteTexture.lock = !0, t[0] = 0, t[1] = 0, t[2] = 0, (e.blackTexture = new e(1, 1, 0, !1, !1)).setPixels(t), 
            e.blackTexture.lock = !0;
        }, e._parse = function(t, i, n) {
            var r = n ? new e(n[0], n[1], n[2], n[3], n[4]) : new e(0, 0);
            switch (i &amp;&amp; (r.wrapModeU = i.wrapModeU, r.wrapModeV = i.wrapModeV, r.filterMode = i.filterMode, 
            r.anisoLevel = i.anisoLevel), r._format) {
              case 0:
              case 1:
                r.loadImageSource(t);
                break;

              case 3:
              case 4:
              case 5:
              case 9:
              case 10:
              case 11:
              case 12:
                r.setCompressData(t);
                break;

              default:
                throw "Texture2D:unkonwn format.";
            }
            return r;
        }, e.load = function(t, e) {
            i.loader.create(t, e, null, "TEXTURE2D");
        }, e.grayTexture = null, e.whiteTexture = null, e.blackTexture = null, e;
    }(), fi = function(t) {
        function e(t, i, n, r) {
            this._mgrKey = 0, void 0 === n &amp;&amp; (n = 0), void 0 === r &amp;&amp; (r = 0), e.__super.call(this, n, !1), 
            this._glTextureType = 3553, this._width = t, this._height = i, this._depthStencilFormat = r, 
            this._create(t, i), this.lock = !0;
        }
        r(e, "laya.resource.RenderTexture2D", ri);
        var i = e.prototype;
        return i.getIsReady = function() {
            return !0;
        }, i._create = function(t, e) {
            var i = Pt.instance;
            this._frameBuffer = i.createFramebuffer(), nt.bindTexture(i, this._glTextureType, this._glTexture);
            var n = this._getGLFormat();
            if (i.texImage2D(this._glTextureType, 0, n, t, e, 0, n, 5121, null), this._setGPUMemory(t * e * 4), 
            i.bindFramebuffer(36160, this._frameBuffer), i.framebufferTexture2D(36160, 36064, 3553, this._glTexture, 0), 
            3 !== this._depthStencilFormat) switch (this._depthStencilBuffer = i.createRenderbuffer(), 
            i.bindRenderbuffer(36161, this._depthStencilBuffer), this._depthStencilFormat) {
              case 0:
                i.renderbufferStorage(36161, 33189, t, e), i.framebufferRenderbuffer(36160, 36096, 36161, this._depthStencilBuffer);
                break;

              case 1:
                i.renderbufferStorage(36161, 36168, t, e), i.framebufferRenderbuffer(36160, 36128, 36161, this._depthStencilBuffer);
                break;

              case 2:
                i.renderbufferStorage(36161, 34041, t, e), i.framebufferRenderbuffer(36160, 33306, 36161, this._depthStencilBuffer);
            }
            i.bindFramebuffer(36160, null), i.bindRenderbuffer(36161, null), this._setWarpMode(10242, this._wrapModeU), 
            this._setWarpMode(10243, this._wrapModeV), this._setFilterMode(this._filterMode), 
            this._setAnisotropy(this._anisoLevel), this._readyed = !0, this._activeResource();
        }, i.generateMipmap = function() {
            this._isPot(this.width) &amp;&amp; this._isPot(this.height) ? (this._mipmap = !0, Pt.instance.generateMipmap(this._glTextureType), 
            this._setFilterMode(this._filterMode), this._setGPUMemory(this.width * this.height * 4 * (1 + 1 / 3))) : (this._mipmap = !1, 
            this._setGPUMemory(this.width * this.height * 4));
        }, i.start = function() {
            var t = Pt.instance;
            Pt.instance.bindFramebuffer(36160, this._frameBuffer), this._lastRT = e._currentActive, 
            e._currentActive = this, this._readyed = !0, t.viewport(0, 0, this._width, this._height), 
            this._lastWidth = dt.width, this._lastHeight = dt.height, dt.width = this._width, 
            dt.height = this._height, Ke.activeShader = null;
        }, i.end = function() {
            Pt.instance.bindFramebuffer(36160, null), e._currentActive = null, this._readyed = !0;
        }, i.restore = function() {
            var t = Pt.instance;
            this._lastRT != e._currentActive &amp;&amp; (Pt.instance.bindFramebuffer(36160, this._lastRT ? this._lastRT._frameBuffer : null), 
            e._currentActive = this._lastRT), this._readyed = !0, t.viewport(0, 0, this._lastWidth, this._lastHeight), 
            dt.width = this._lastWidth, dt.height = this._lastHeight, Ke.activeShader = null;
        }, i.clear = function(t, e, i, n) {
            void 0 === t &amp;&amp; (t = 0), void 0 === e &amp;&amp; (e = 0), void 0 === i &amp;&amp; (i = 0), void 0 === n &amp;&amp; (n = 1);
            var r = Pt.instance;
            r.clearColor(t, e, i, n);
            var s = 16384;
            switch (this._depthStencilFormat) {
              case 33189:
                s |= 256;
                break;

              case 36168:
                s |= 1024;
                break;

              case 34041:
                s |= 256, s |= 1024;
            }
            r.clear(s);
        }, i.getData = function(t, e, i, n) {
            if (Mt.isConchApp &amp;&amp; 2 == conchConfig.threadMode) throw "native 2 thread mode use getDataAsync";
            var r = Pt.instance;
            if (r.bindFramebuffer(36160, this._frameBuffer), 36053 !== r.checkFramebufferStatus(36160)) return r.bindFramebuffer(36160, null), 
            null;
            var s = new Uint8Array(this._width * this._height * 4), a = this._getGLFormat();
            return r.readPixels(t, e, i, n, a, 5121, s), r.bindFramebuffer(36160, null), s;
        }, i.getDataAsync = function(t, e, i, n, r) {
            var s = Pt.instance;
            s.bindFramebuffer(36160, this._frameBuffer), s.readPixelsAsync(t, e, i, n, 6408, 5121, function(t) {
                r(new Uint8Array(t));
            }), s.bindFramebuffer(36160, null);
        }, i.recycle = function() {}, i._disposeResource = function() {
            if (this._frameBuffer) {
                var t = Pt.instance;
                t.deleteTexture(this._glTexture), t.deleteFramebuffer(this._frameBuffer), t.deleteRenderbuffer(this._depthStencilBuffer), 
                this._glTexture = null, this._frameBuffer = null, this._depthStencilBuffer = null, 
                this._setGPUMemory(0);
            }
        }, s(0, i, "depthStencilFormat", function() {
            return this._depthStencilFormat;
        }), s(0, i, "defaulteTexture", function() {
            return _i.grayTexture;
        }), s(0, i, "sourceWidth", function() {
            return this._width;
        }), s(0, i, "sourceHeight", function() {
            return this._height;
        }), s(0, i, "offsetX", function() {
            return 0;
        }), s(0, i, "offsetY", function() {
            return 0;
        }), s(1, e, "currentActive", function() {
            return e._currentActive;
        }, laya.resource.BaseTexture._$SET_currentActive), e.pushRT = function() {
            e.rtStack.push({
                rt: e._currentActive,
                w: dt.width,
                h: dt.height
            });
        }, e.popRT = function() {
            var t = Pt.instance, i = e.rtStack.pop();
            i &amp;&amp; (e._currentActive != i.rt &amp;&amp; (Pt.instance.bindFramebuffer(36160, i.rt ? i.rt._frameBuffer : null), 
            e._currentActive = i.rt), t.viewport(0, 0, i.w, i.h), dt.width = i.w, dt.height = i.h);
        }, e._currentActive = null, e.rtStack = [], n(e, [ "defuv", function() {
            return this.defuv = [ 0, 0, 1, 0, 1, 1, 0, 1 ];
        }, "flipyuv", function() {
            return this.flipyuv = [ 0, 1, 1, 1, 1, 0, 0, 0 ];
        } ]), e;
    }(), di = function(t) {
        function e() {
            this.animationList = null, this.animationDic = null, this._nodeList = null, this._nodeDefaultProps = null, 
            this._gList = null, this._nodeIDAniDic = {}, this._rootNode = null, this._nodeGDic = null, 
            e.__super.call(this);
        }
        var i;
        r(e, "laya.utils.GraphicAnimation", t);
        var s = e.prototype;
        return s._parseNodeList = function(t) {
            this._nodeList || (this._nodeList = []), this._nodeDefaultProps[t.compId] = t.props, 
            t.compId &amp;&amp; this._nodeList.push(t.compId);
            var e = t.child;
            if (e) {
                var i = 0, n = e.length;
                for (i = 0; i &lt; n; i++) this._parseNodeList(e[i]);
            }
        }, s._calGraphicData = function(t) {
            if (this._setUp(null, t), this._createGraphicData(), this._nodeIDAniDic) {
                var e;
                for (e in this._nodeIDAniDic) this._nodeIDAniDic[e] = null;
            }
        }, s._createGraphicData = function() {
            var t = [], e = 0, i = this.count, n = this._usedFrames;
            n || (n = []);
            var r;
            for (e = 0; e &lt; i; e++) !n[e] &amp;&amp; r || (r = this._createFrameGraphic(e)), t.push(r);
            this._gList = t;
        }, s._createFrameGraphic = function(t) {
            var i = new qt();
            return e._rootMatrix || (e._rootMatrix = new st()), this._updateNodeGraphic(this._rootNode, t, e._rootMatrix, i), 
            i;
        }, s._updateNodeGraphic = function(t, e, i, n, r) {
            void 0 === r &amp;&amp; (r = 1);
            var s;
            (s = this._nodeGDic[t.compId] = this._getNodeGraphicData(t.compId, e, this._nodeGDic[t.compId])).resultTransform || (s.resultTransform = new st());
            var a;
            a = s.resultTransform, st.mul(s.transform, i, a);
            var o, h = s.alpha * r;
            if (!(h &lt; .01)) {
                s.skin &amp;&amp; (o = this._getTextureByUrl(s.skin)) &amp;&amp; (a._checkTransform() ? (n.drawTexture(o, 0, 0, s.width, s.height, a, h), 
                s.resultTransform = null) : n.drawTexture(o, a.tx, a.ty, s.width, s.height, null, h));
                var l = t.child;
                if (l) {
                    var u = 0, c = 0;
                    for (c = l.length, u = 0; u &lt; c; u++) this._updateNodeGraphic(l[u], e, a, n, h);
                }
            }
        }, s._updateNoChilds = function(t, e) {
            if (t.skin) {
                var i = this._getTextureByUrl(t.skin);
                if (i) {
                    var n = t.transform;
                    n._checkTransform(), n._bTransform ? e.drawTexture(i, 0, 0, t.width, t.height, n.clone(), t.alpha) : e.drawTexture(i, n.tx, n.ty, t.width, t.height, null, t.alpha);
                }
            }
        }, s._updateNodeGraphic2 = function(t, e, i) {
            var n;
            if (n = this._nodeGDic[t.compId] = this._getNodeGraphicData(t.compId, e, this._nodeGDic[t.compId]), 
            t.child) {
                var r = n.transform;
                r._checkTransform();
                var s = !1, a = !1;
                a = (s = !r._bTransform) &amp;&amp; (0 != r.tx || 0 != r.ty);
                var o = !1;
                (o = r._bTransform || 1 != n.alpha) &amp;&amp; i.save(), 1 != n.alpha &amp;&amp; i.alpha(n.alpha), 
                s ? a &amp;&amp; i.translate(r.tx, r.ty) : i.transform(r.clone());
                var h, l = t.child;
                if (n.skin &amp;&amp; (h = this._getTextureByUrl(n.skin)) &amp;&amp; i.drawImage(h, 0, 0, n.width, n.height), 
                l) {
                    var u = 0, c = 0;
                    for (c = l.length, u = 0; u &lt; c; u++) this._updateNodeGraphic2(l[u], e, i);
                }
                o ? i.restore() : s ? a &amp;&amp; i.translate(-r.tx, -r.ty) : i.transform(r.clone().invert());
            } else this._updateNoChilds(n, i);
        }, s._calculateKeyFrames = function(e) {
            t.prototype._calculateKeyFrames.call(this, e), this._nodeIDAniDic[e.target] = e;
        }, s.getNodeDataByID = function(t) {
            return this._nodeIDAniDic[t];
        }, s._getParams = function(t, i, n, r) {
            var s = e._temParam;
            s.length = i.length;
            var a = 0, o = i.length;
            for (a = 0; a &lt; o; a++) s[a] = this._getObjVar(t, i[a][0], n, i[a][1], r);
            return s;
        }, s._getObjVar = function(t, e, i, n, r) {
            if (t.hasOwnProperty(e)) {
                var s = t[e];
                return i &gt;= s.length &amp;&amp; (i = s.length - 1), t[e][i];
            }
            return r.hasOwnProperty(e) ? r[e] : n;
        }, s._getNodeGraphicData = function(t, n, r) {
            r || (r = new i()), r.transform ? r.transform.identity() : r.transform = new st();
            var s = this.getNodeDataByID(t);
            if (!s) return r;
            var a = s.frames, o = this._getParams(a, e._drawTextureCmd, n, this._nodeDefaultProps[t]), h = o[0], l = NaN, u = NaN, c = o[5], _ = o[6], f = o[13], d = o[14], p = o[7], m = o[8], g = o[9], v = o[11], y = o[12];
            l = o[3], u = o[4], 0 != l &amp;&amp; 0 != u || (h = null), -1 == l &amp;&amp; (l = 0), -1 == u &amp;&amp; (u = 0);
            var x;
            r.skin = h, r.width = l, r.height = u, h &amp;&amp; ((x = this._getTextureByUrl(h)) ? (l || (l = x.sourceWidth), 
            u || (u = x.sourceHeight)) : console.warn("lost skin:", h, ",you may load pics first")), 
            r.alpha = o[10];
            var T = r.transform;
            0 != f &amp;&amp; (c = f * l), 0 != d &amp;&amp; (_ = d * u), 0 == c &amp;&amp; 0 == _ || T.translate(-c, -_);
            var b = null;
            if (g || 1 !== p || 1 !== m || v || y) {
                (b = e._tempMt).identity(), b._bTransform = !0;
                var w = .0174532922222222 * (g - v), C = .0174532922222222 * (g + y), A = Math.cos(C), E = Math.sin(C), S = Math.sin(w), M = Math.cos(w);
                b.a = p * A, b.b = p * E, b.c = -m * S, b.d = m * M, b.tx = b.ty = 0;
            }
            return b &amp;&amp; (T = st.mul(T, b, T)), T.translate(o[1], o[2]), r;
        }, s._getTextureByUrl = function(t) {
            return De.getRes(t);
        }, s.setAniData = function(t, i) {
            if (t.animations) {
                this._nodeDefaultProps = {}, this._nodeGDic = {}, this._nodeList &amp;&amp; (this._nodeList.length = 0), 
                this._rootNode = t, this._parseNodeList(t);
                var n, r = {}, s = [], a = t.animations, o = 0, h = a.length;
                for (o = 0; o &lt; h; o++) if (n = a[o], this._labels = null, (!i || i == n.name) &amp;&amp; n) {
                    try {
                        this._calGraphicData(n);
                    } catch (t) {
                        console.warn("parse animation fail:" + n.name + ",empty animation created"), this._gList = [];
                    }
                    var l = {};
                    l.interval = 1e3 / n.frameRate, l.frames = this._gList, l.labels = this._labels, 
                    l.name = n.name, s.push(l), r[n.name] = l;
                }
                this.animationList = s, this.animationDic = r;
            }
            e._temParam.length = 0;
        }, s.parseByData = function(t) {
            var e, i;
            e = t.nodeRoot, i = t.aniO, delete t.nodeRoot, delete t.aniO, this._nodeDefaultProps = {}, 
            this._nodeGDic = {}, this._nodeList &amp;&amp; (this._nodeList.length = 0), this._rootNode = e, 
            this._parseNodeList(e), this._labels = null;
            try {
                this._calGraphicData(i);
            } catch (t) {
                console.warn("parse animation fail:" + i.name + ",empty animation created"), this._gList = [];
            }
            var n = t;
            return n.interval = 1e3 / i.frameRate, n.frames = this._gList, n.labels = this._labels, 
            n.name = i.name, n;
        }, s.setUpAniData = function(t) {
            if (t.animations) {
                var e, i = {}, n = [], r = t.animations, s = 0, a = r.length;
                for (s = 0; s &lt; a; s++) if (e = r[s]) {
                    var o = {};
                    o.name = e.name, o.aniO = e, o.nodeRoot = t, n.push(o), i[e.name] = o;
                }
                this.animationList = n, this.animationDic = i;
            }
        }, s._clear = function() {
            this.animationList = null, this.animationDic = null, this._gList = null, this._nodeGDic = null;
        }, e.parseAnimationByData = function(t) {
            e._I || (e._I = new e());
            var i;
            return i = e._I.parseByData(t), e._I._clear(), i;
        }, e.parseAnimationData = function(t) {
            e._I || (e._I = new e()), e._I.setUpAniData(t);
            var i;
            return i = {}, i.animationList = e._I.animationList, i.animationDic = e._I.animationDic, 
            e._I._clear(), i;
        }, e._temParam = [], e._I = null, e._rootMatrix = null, n(e, [ "_drawTextureCmd", function() {
            return this._drawTextureCmd = [ [ "skin", null ], [ "x", 0 ], [ "y", 0 ], [ "width", -1 ], [ "height", -1 ], [ "pivotX", 0 ], [ "pivotY", 0 ], [ "scaleX", 1 ], [ "scaleY", 1 ], [ "rotation", 0 ], [ "alpha", 1 ], [ "skewX", 0 ], [ "skewY", 0 ], [ "anchorX", 0 ], [ "anchorY", 0 ] ];
        }, "_tempMt", function() {
            return this._tempMt = new st();
        } ]), e.__init$ = function() {
            i = function() {
                function t() {
                    this.skin = null, this.transform = null, this.resultTransform = null, this.width = NaN, 
                    this.height = NaN, this.alpha = 1;
                }
                return r(t, ""), t;
            }();
        }, e;
    }(ci);
    !function(t) {
        function e() {
            this._target = null, this._playEvent = null, this._initData = {}, this._aniKeys = null, 
            this._effectClass = null, e.__super.call(this);
        }
        r(e, "laya.display.EffectAnimation", t);
        var i = e.prototype;
        i._onOtherBegin = function(t) {
            t !== this &amp;&amp; this.stop();
        }, i._addEvent = function() {
            this._target &amp;&amp; this._playEvent &amp;&amp; (this._setControlNode(this._target), this._target.on(this._playEvent, this, this._onPlayAction));
        }, i._onPlayAction = function() {
            this.play(0, !1);
        }, i.play = function(t, e, i) {
            void 0 === t &amp;&amp; (t = 0), void 0 === e &amp;&amp; (e = !0), void 0 === i &amp;&amp; (i = ""), this._target &amp;&amp; (this._target.event("effectbegin", [ this ]), 
            this._recordInitData(), laya.display.AnimationBase.prototype.play.call(this, t, e, i));
        }, i._recordInitData = function() {
            if (this._aniKeys) {
                var t = 0, e = 0;
                e = this._aniKeys.length;
                var i;
                for (t = 0; t &lt; e; t++) i = this._aniKeys[t], this._initData[i] = this._target[i];
            }
        }, i._displayToIndex = function(t) {
            if (this._animationData) {
                t &lt; 0 &amp;&amp; (t = 0), t &gt; this._count &amp;&amp; (t = this._count);
                var e = this._animationData.nodes, i = 0, n = e.length;
                for (n = n &gt; 1 ? 1 : n, i = 0; i &lt; n; i++) this._displayNodeToFrame(e[i], t);
            }
        }, i._displayNodeToFrame = function(t, e, i) {
            if (this._target) {
                var n, r, s, a, o, h, l, u = this._target, c = t.frames, _ = t.keys, f = 0, d = _.length, p = t.secondFrames, m = 0;
                for (f = 0; f &lt; d; f++) r = c[n = _[f]], -1 == (m = p[n]) ? s = this._initData[n] : e &lt; m ? (h = (o = t.keyframes[n])[0]).tween ? (null == (a = te[h.tweenMethod]) &amp;&amp; (a = te.linearNone), 
                l = o[1], s = a(e, this._initData[n], l.value - this._initData[n], l.index)) : s = this._initData[n] : s = r.length &gt; e ? r[e] : r[r.length - 1], 
                u[n] = s;
            }
        }, i._calculateKeyFrames = function(e) {
            t.prototype._calculateKeyFrames.call(this, e);
            var i, n, r = e.keyframes, s = (e.target, {});
            e.secondFrames = s;
            for (i in r) (n = r[i]).length &lt;= 1 ? s[i] = -1 : s[i] = n[1].index;
        }, s(0, i, "target", function() {
            return this._target;
        }, function(t) {
            this._target &amp;&amp; this._target.off("effectbegin", this, this._onOtherBegin), this._target = t, 
            this._target &amp;&amp; this._target.on("effectbegin", this, this._onOtherBegin), this._addEvent();
        }), s(0, i, "playEvent", null, function(t) {
            this._playEvent = t, t &amp;&amp; this._addEvent();
        }), s(0, i, "effectData", null, function(t) {
            if (t) {
                var e = t.animations;
                if (e &amp;&amp; e[0]) {
                    var i = e[0];
                    this._setUp({}, i), i.nodes &amp;&amp; i.nodes[0] &amp;&amp; (this._aniKeys = i.nodes[0].keys);
                }
            }
        }), s(0, i, "effectClass", null, function(t) {
            if (this._effectClass = Rt.getClass(t), this._effectClass) {
                var e = this._effectClass.uiView;
                if (e) {
                    var i = e.animations;
                    if (i &amp;&amp; i[0]) {
                        var n = i[0];
                        this._setUp({}, n), n.nodes &amp;&amp; n.nodes[0] &amp;&amp; (this._aniKeys = n.nodes[0].keys);
                    }
                }
            }
        }), e.EFFECT_BEGIN = "effectbegin";
    }(ci), i.__init([ m, ut, Ne, E, di, pt, Mt, $, J, $t, bt, be, f, Me ]);
}(window, document, Laya), function(t, e, i) {
    i.un, i.uns, i.static;
    var n = i.class;
    i.getset, i.__newvec, new (function() {
        function t() {}
        return n(t, "LayaMain"), t;
    }())();
}(window, document, Laya);</pre></body></html>