www.gusucode.com > 我给老师献花游戏微信朋友圈小游戏源码程序 > 我给老师献花游戏微信朋友圈小游戏源码程序/lsxsh/js/game.min.js

    var b = b || {};
b.p = b.p || {};
b.c = {};
p = window;
p = Object.prototype;
delete window._p;
b.rb = function(a) {
    return document.createElement(a)
};
b.ka = function(a, c, d, e) {
    a.addEventListener(c, d, e)
};
b.Gx = "undefined" !== typeof require && require("fs");
b.wz = function(a, c) {
    if (a) if (a instanceof Array) for (var d = 0,
    e = a.length; d < e && !1 !== c.call(void 0, a[d], d); d++);
    else for (d in a) if (!1 === c.call(void 0, a[d], d)) break
};
b.Ju = function(a) {
    if (!a) return b.log("invalid URL"),
    !1;
    var c = a.indexOf("://");
    if ( - 1 == c) return ! 1;
    c = a.indexOf("/", c + 3);
    return ( - 1 == c ? a: a.substring(0, c)) != location.origin
};
b.async = {
    xw: function(a) {
        var c = this.rz;
        if (!c.ou) {
            var d = c.length,
            e = c.KA,
            f = c.qA,
            g = f.fc,
            h = f.lz,
            k = f.ov,
            f = f.uZ;
            if (a) {
                if (c.ou = a, g) return g.call(h, a)
            } else {
                var m = Array.apply(null, arguments).slice(1),
                n = m.length;
                0 == n ? m = null: 1 == n && (m = m[0]);
                e[this.index] = m;
                c.count--;
                k && k.call(f, m, d - c.count, d);
                0 == c.count && g && g.apply(h, [null, e])
            }
        }
    },
    ix: function() {},
    UW: function(a, c, d) {
        var e = b.async;
        if (void 0 !== d)"function" == typeof c && (c = {
            ov: c
        }),
        c.fc = d || c.fc;
        else if (void 0 !== c)"function" == typeof c && (c = {
            fc: c
        });
        else if (void 0 !== a) c = {};
        else throw "arguments error!";
        var f = (d = a instanceof Array) ? a.length: Object.keys(a).length;
        if (0 == f) c.fc && c.fc.call(c.lz, null);
        else {
            var g = {
                length: f,
                count: f,
                qA: c,
                KA: d ? [] : {}
            };
            b.wz(a,
            function(a, d) {
                if (g.ou) return ! 1;
                var f = c.fc || c.ov ? e.xw.bind({
                    rz: g,
                    index: d
                }) : e.ix;
                a(f, d)
            })
        }
    },
    map: function(a, c, d) {
        var e = this,
        f = arguments.length;
        "function" == typeof c && (c = {
            Nu: c
        });
        if (3 === f) c.fc = d || c.fc;
        else if (2 > f) throw "arguments error!";
        "function" == typeof c && (c = {
            Nu: c
        });
        if (void 0 !== d) c.fc = d || c.fc;
        else if (void 0 === a) throw "arguments error!";
        var g = (f = a instanceof Array) ? a.length: Object.keys(a).length;
        if (0 === g) c.fc && c.fc.call(c.lz, null);
        else {
            var h = {
                length: g,
                count: g,
                qA: c,
                KA: f ? [] : {}
            };
            b.wz(a,
            function(a, d) {
                if (h.ou) return ! 1;
                var f = c.fc ? e.xw.bind({
                    rz: h,
                    index: d
                }) : e.ix;
                c.Nu.call(c.gL, a, d, f)
            })
        }
    }
};
b.path = {
    join: function() {
        for (var a = arguments.length,
        c = "",
        d = 0; d < a; d++) c = (c + ("" == c ? "": "/") + arguments[d]).replace(/(\/|\\\\)$/, "");
        return c
    },
    Hg: function(a) {
        return (a = /(\.[^\.\/\?\\]*)(\?.*)?$/.exec(a)) ? a[1] : null
    },
    YV: function(a) {
        if (a) {
            var c = a.lastIndexOf(".");
            if ( - 1 !== c) return a.substring(0, c)
        }
        return a
    },
    GI: function(a, c) {
        var d = a.indexOf("?");
        0 < d && (a = a.substring(0, d));
        d = /(\/|\\\\)([^(\/|\\\\)]+)$/g.exec(a.replace(/(\/|\\\\)$/, ""));
        if (!d) return null;
        d = d[2];
        return c && a.substring(a.length - c.length).toLowerCase() == c.toLowerCase() ? d.substring(0, d.length - c.length) : d
    },
    dirname: function(a) {
        return a.replace(/((.*)(\/|\\|\\\\))?(.*?\..*$)?/, "$2")
    },
    mz: function(a, c) {
        c = c || "";
        var d = a.indexOf("?"),
        e = "";
        0 < d && (e = a.substring(d), a = a.substring(0, d));
        d = a.lastIndexOf(".");
        return 0 > d ? a + c + e: a.substring(0, d) + c + e
    },
    $o: function(a, c, d) {
        if (0 == c.indexOf(".")) return this.mz(a, c);
        var e = a.indexOf("?"),
        f = "";
        d = d ? this.Hg(a) : "";
        0 < e && (f = a.substring(e), a = a.substring(0, e));
        e = a.lastIndexOf("/");
        return a.substring(0, 0 >= e ? 0 : e + 1) + c + d + f
    }
};
b.D = {
    Kx: {},
    xo: {},
    KG: {},
    $g: {},
    Jp: "",
    CI: "",
    sd: {},
    rp: function() {
        return window.XMLHttpRequest ? new window.XMLHttpRequest: new ActiveXObject("MSXML2.XMLHTTP")
    },
    vx: function(a) {
        var c = a[0],
        d = a[1],
        e = a[2],
        f = ["", null, null];
        if (1 === a.length) f[1] = c instanceof Array ? c: [c];
        else if (2 === a.length)"function" == typeof d ? (f[1] = c instanceof Array ? c: [c], f[2] = d) : (f[0] = c || "", f[1] = d instanceof Array ? d: [d]);
        else if (3 === a.length) f[0] = c || "",
        f[1] = d instanceof Array ? d: [d],
        f[2] = e;
        else throw "arguments error to load js!";
        return f
    },
    uL: function(a, c, d) {
        var e = this,
        f = e.Kx,
        g = e.vx(arguments); - 1 < navigator.userAgent.indexOf("Trident/5") ? e.Px(g[0], g[1], 0, g[2]) : b.async.map(g[1],
        function(a, c, d) {
            a = b.path.join(g[0], a);
            if (f[a]) return d(null);
            e.yw(a, !1, d)
        },
        g[2])
    },
    lA: function(a, c, d) {
        var e = this.PG(),
        f = this.vx(arguments);
        this.uL(f[0], f[1],
        function(a) {
            if (a) throw a;
            e.parentNode.removeChild(e);
            if (f[2]) f[2]()
        })
    },
    yw: function(a, c, d) {
        var e = document,
        f = b.rb("script");
        f.async = c;
        f.src = a;
        this.Kx[a] = !0;
        b.ka(f, "load",
        function() {
            this.removeEventListener("load", arguments.callee, !1);
            d()
        },
        !1);
        b.ka(f, "error",
        function() {
            d("Load " + a + " failed!")
        },
        !1);
        e.body.appendChild(f)
    },
    Px: function(a, c, d, e) {
        if (d >= c.length) e && e();
        else {
            var f = this;
            f.yw(b.path.join(a, c[d]), !1,
            function(g) {
                if (g) return e(g);
                f.Px(a, c, d + 1, e)
            })
        }
    },
    PG: function() {
        var a = document,
        c = a.getElementById("cocos2d_loadJsImg");
        if (!c) {
            c = b.rb("img");
            b.Rx && (c.src = b.Rx);
            a = a.getElementById(b.Va.Jc.id);
            a.style.backgroundColor = "black";
            a.parentNode.appendChild(c);
            var d = getComputedStyle ? getComputedStyle(a) : a.currentStyle;
            d || (d = {
                width: a.width,
                height: a.height
            });
            c.style.left = a.offsetLeft + (parseFloat(d.width) - c.width) / 2 + "px";
            c.style.top = a.offsetTop + (parseFloat(d.height) - c.height) / 2 + "px";
            c.style.position = "absolute"
        }
        return c
    },
    yp: function(a, c) {
        if (b.Gx) require("fs").gX(a,
        function(a, d) {
            a ? c(a) : c(null, d.toString())
        });
        else {
            var d = this.rp(),
            e = "load " + a + " failed!";
            d.open("GET", a, !0);
            /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent) ? (d.setRequestHeader("Accept-Charset", "utf-8"), d.onreadystatechange = function() {
                4 == d.readyState && 200 == d.status ? c(null, d.responseText) : c(e)
            }) : (d.overrideMimeType && d.overrideMimeType("text/plain; charset\x3dutf-8"), d.onload = function() {
                4 == d.readyState && 200 == d.status ? c(null, d.responseText) : c(e)
            });
            d.send(null)
        }
    },
    Qx: function(a) {
        if (b.Gx) return require("fs").hX(a).toString();
        var c = this.rp();
        c.open("GET", a, !1);
        /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent) ? c.setRequestHeader("Accept-Charset", "utf-8") : c.overrideMimeType && c.overrideMimeType("text/plain; charset\x3dutf-8");
        c.send(null);
        return 4 == !c.readyState || 200 != c.status ? null: c.responseText
    },
    mA: function(a, c) {
        this.yp(a,
        function(d, e) {
            try {
                d ? c(d) : c(null, JSON.parse(e))
            } catch(f) {
                throw "load json [" + a + "] failed : " + f;
            }
        })
    },
    uw: function(a) {
        return null != /(\.png)|(\.jpg)|(\.bmp)|(\.jpeg)|(\.gif)/.exec(a)
    },
    Wl: function(a, c, d) {
        var e = !0;
        void 0 !== d ? e = null == c.Ju ? e: c.Ju: void 0 !== c && (d = c);
        var f = new Image;
        e && "file://" != location.origin && (f.crossOrigin = "Anonymous");
        b.ka(f, "load",
        function() {
            this.removeEventListener("load", arguments.callee, !1);
            this.removeEventListener("error", arguments.callee, !1);
            d && d(null, f)
        });
        b.ka(f, "error",
        function() {
            this.removeEventListener("error", arguments.callee, !1);
            d && d("load image failed")
        });
        f.src = a;
        return f
    },
    QG: function(a, c, d) {
        var e = this,
        f = null; (c = a.type) ? (c = "." + c.toLowerCase(), f = a.src ? a.src: a.name + c) : (f = a, c = b.path.Hg(f));
        var g = e.sd[f];
        if (g) return d(null, g);
        g = e.xo[c.toLowerCase()];
		
        if (!g) return b.error("loader for [" + c + "] not exists!"),
        d();
        c = e.HK(g.op ? g.op() : e.Jp, f);
        g.load(c, f, a,
        function(a, c) {
            a ? (b.log(a), e.sd[f] = null, delete e.sd[f], d()) : (e.sd[f] = c, d(null, c))
        })
    },
    HK: function(a, c) {
        var d = this.KG,
        e = b.path;
        if (void 0 !== a && void 0 === c) {
            c = a;
            var f = e.Hg(c),
            f = f ? f.toLowerCase() : "";
            a = (f = this.xo[f]) ? f.op ? f.op() : this.Jp: this.Jp
        }
        c = b.path.join(a || "", c);
        if (c.match(/[\/(\\\\)]lang[\/(\\\\)]/i)) {
            if (d[c]) return d[c];
            e = e.Hg(c) || "";
            c = d[c] = c.substring(0, c.length - e.length) + "_" + b.Aa.language + e
        }
        return c
    },
    load: function(a, c, d) {
        if (void 0 !== d)"function" == typeof c && (c = {
            ov: c
        });
        else if (void 0 !== c)"function" == typeof c && (d = c, c = {});
        else if (void 0 !== a) c = {};
        else throw "arguments error!";
        c.fc = function(a, c) {
            a && b.log(a);
            d && d(c)
        };
        a instanceof Array || (a = [a]);
        c.Nu = this.QG;
        c.gL = this;
        b.async.map(a, c)
    },
    Bx: function(a, c) {
        var d = this.$g,
        e = [],
        f;
        for (f in a) {
            var g = a[f];
            d[f] = g;
            e.push(g)
        }
        this.load(e, c)
    },
    TV: function(a, c) {
        var d = this,
        e = d.Yc(a);
        e ? d.Bx(e.filenames, c) : d.load(a,
        function(a) {
            d.Bx(a[0].filenames, c)
        })
    },
    Mg: function(a, c) {
        if (a && c) {
            if ("string" == typeof a) return this.xo[a.trim().toLowerCase()] = c;
            for (var d = 0,
            e = a.length; d < e; d++) this.xo["." + a[d].trim().toLowerCase()] = c
        }
    },
    Yc: function(a) {
        return this.sd[a] || this.sd[this.$g[a]]
    },
    Pf: function(a) {
        var c = this.sd,
        d = this.$g;
        delete c[a];
        delete c[d[a]];
        delete d[a]
    },
    nX: function() {
        var a = this.sd,
        c = this.$g,
        d;
        for (d in a) delete a[d];
        for (d in c) delete c[d]
    }
}; (function() {
    function a() {
        b.I && b.Va.lg && b.I.dispatchEvent(b.Va.lg);
        b.Va.bl && (window.cancelAnimationFrame(b.Va.bl), b.Va.Ao())
    }
    function c() {
        b.I && b.Va.kg && b.I.dispatchEvent(b.Va.kg)
    }
    var d = window,
    e, f;
    "undefined" !== typeof document.hidden ? (e = "hidden", f = "visibilitychange") : "undefined" !== typeof document.mozHidden ? (e = "mozHidden", f = "mozvisibilitychange") : "undefined" !== typeof document.msHidden ? (e = "msHidden", f = "msvisibilitychange") : "undefined" !== typeof document.webkitHidden && (e = "webkitHidden", f = "webkitvisibilitychange");
    e ? b.ka(document, f,
    function() {
        document[e] ? c() : a()
    },
    !1) : (b.ka(d, "blur", c, !1), b.ka(d, "focus", a, !1)); - 1 < navigator.userAgent.indexOf("MicroMessenger") && (d.onfocus = function() {
        a()
    });
    "onpageshow" in window && "onpagehide" in window && (b.ka(d, "pagehide", c, !1), b.ka(d, "pageshow", a, !1));
    f = d = null
})();
b.log = b.warn = b.error = b.assert = function() {};
b.sz = function(a, c) {
    for (var d = ["webgl", "experimental-webgl", "webkit-3d", "moz-webgl"], e = null, f = 0; f < d.length; ++f) {
        try {
            e = a.getContext(d[f], c)
        } catch(g) {}
        if (e) break
    }
    return e
};
b.BG = function(a, c) {
    b.Ya = 0;
    b.wb = 1;
    b.Aa = {};
    var d = b.Aa;
    d.KC = "en";
    d.oP = "zh";
    d.pP = "fr";
    d.sP = "it";
    d.qP = "de";
    d.zP = "es";
    d.yP = "ru";
    d.uP = "ko";
    d.tP = "ja";
    d.rP = "hu";
    d.xP = "pt";
    d.nP = "ar";
    d.vP = "no";
    d.wP = "pl";
    d.nD = "Windows";
    d.Nv = "iOS";
    d.Ov = "OS X";
    d.lD = "UNIX";
    d.kD = "Linux";
    d.jD = "Android";
    d.mD = "Unknown";
    d.FQ = 0;
    d.AP = 1;
    d.BP = 2;
    d.lO = 3;
    d.jP = 4;
    d.iP = 5;
    d.uO = 6;
    d.DP = 7;
    d.ZO = 8;
    d.gQ = 9;
    d.GQ = 10;
    d.HQ = 11;
    d.PC = 100;
    d.eC = 101;
    d.OB = "wechat";
    d.KB = "androidbrowser";
    d.Zp = "ie";
    d.LB = "qqbrowser";
    d.vv = "mqqbrowser";
    d.MB = "ucbrowser";
    d.wO = "360browser";
    d.xO = "baiduboxapp";
    d.uv = "baidubrowser";
    d.yO = "maxthon";
    d.$p = "opera";
    d.zO = "miuibrowser";
    d.$j = "firefox";
    d.aq = "safari";
    d.Yp = "chrome";
    d.NB = "unknown";
    d.zV = !1;
    var e = [d.uv, d.$p, d.$j, d.Yp, d.aq],
    f = [d.uv, d.$p, d.$j, d.Yp, d.aq, d.MB, d.LB, d.vv, d.Zp],
    g = window,
    h = g.navigator,
    k = document.documentElement,
    m = h.userAgent.toLowerCase();
    d.Kf = -1 != m.indexOf("mobile") || -1 != m.indexOf("android");
    d.platform = d.Kf ? d.PC: d.eC;
    var n = h.language,
    n = (n = n ? n: h.browserLanguage) ? n.split("-")[0] : d.KC;
    d.language = n;
    var n = d.NB,
    r = m.match(/micromessenger|qqbrowser|mqqbrowser|ucbrowser|360browser|baiduboxapp|baidubrowser|maxthon|trident|opera|miuibrowser|firefox/i) || m.match(/chrome|safari/i);
    r && 0 < r.length && (n = r[0].toLowerCase(), "micromessenger" == n ? n = d.OB: "safari" === n && m.match(/android.*applewebkit/) ? n = d.KB: "trident" == n && (n = d.Zp));
    d.Ih = n;
    d.VH = -1 < f.indexOf(d.Ih);
    f = parseInt(a[c.hm]);
    n = b.wb;
    r = b.rb("Canvas");
    b.zl = !0;
    e = -1 == e.indexOf(d.Ih);
    if (1 === f || 0 === f && (d.Kf || e) || "file://" == location.origin) n = b.Ya;
    d.tF = function() {
        var a = document.createElement("canvas");
        a.width = 1;
        a.height = 1;
        a = a.getContext("2d");
        a.fillStyle = "#000";
        a.fillRect(0, 0, 1, 1);
        a.globalCompositeOperation = "multiply";
        a.fillStyle = "#fff";
        a.fillRect(0, 0, 1, 1);
        return 0 === a.getImageData(0, 0, 1, 1).data[0]
    };
    d.wt = d.tF();
    n != b.wb || g.WebGLRenderingContext && b.sz(r, {
        stencil: !0,
        preserveDrawingBuffer: !0
    }) || (0 == f ? n = b.Ya: b.zl = !1);
    if (n == b.Ya) try {
        r.getContext("2d")
    } catch(s) {
        b.zl = !1
    }
    b.da = n;
    try {
        d.Jo = !!new(g.AudioContext || g.webkitAudioContext || g.mozAudioContext)
    } catch(u) {
        d.Jo = !1
    }
    try {
        var t = d.localStorage = g.localStorage;
        t.setItem("storage", "");
        t.removeItem("storage");
        t = null
    } catch(v) {
        "SECURITY_ERR" !== v.name && "QuotaExceededError" !== v.name || b.warn("Warning: localStorage isn't enabled. Please confirm browser cookie or privacy option"),
        d.localStorage = function() {}
    }
    t = d.Zt = {
        canvas: !0
    };
    b.da == b.wb && (t.opengl = !0);
    void 0 !== k.ontouchstart || h.msPointerEnabled ? t.touches = !0 : void 0 !== k.onmouseup && (t.mouse = !0);
    void 0 !== k.onkeyup && (t.keyboard = !0);
    if (g.DeviceMotionEvent || g.DeviceOrientationEvent) t.accelerometer = !0;
    g = m.match(/(iPad|iPhone|iPod)/i) ? !0 : !1;
    m = m.match(/android/i) || h.platform.match(/android/i) ? !0 : !1;
    k = d.mD; - 1 != h.appVersion.indexOf("Win") ? k = d.nD: g ? k = d.Nv: -1 != h.appVersion.indexOf("Mac") ? k = d.Ov: -1 != h.appVersion.indexOf("X11") ? k = d.lD: -1 != h.appVersion.indexOf("Linux") ? k = d.kD: m && (k = d.jD);
    d.Su = k;
    d.DT = function() {};
    d.ES = function() {};
    d.JX = function() {};
    d.CS = function() {
        var a;
        a = "" + ("isMobile : " + this.Kf + "\r\n");
        a += "language : " + this.language + "\r\n";
        a += "browserType : " + this.Ih + "\r\n";
        a += "capabilities : " + JSON.stringify(this.Zt) + "\r\n";
        a += "os : " + this.Su + "\r\n";
        a += "platform : " + this.platform + "\r\n";
        b.log(a)
    }
};
b.PP = 0;
b.QP = 1;
b.NP = 2;
b.OP = 3;
b.Hd = null;
b.l = null;
b.ra = null;
b.PF = null;
b.yo = !1;
b.Fy = !1;
b.Ey = function(a) {
    var c, d;
    if (!b.Fy) {
        b.Fy = !0;
        var e = window,
        f = new Date,
        g = 1E3 / b.Va.Jc[b.Va.Vd.jp];
        e.GA = e.requestAnimationFrame || e.webkitRequestAnimationFrame || e.mozRequestAnimationFrame || e.oRequestAnimationFrame || e.msRequestAnimationFrame ||
        function(a) {
            var c = (new Date).getTime(),
            d = Math.max(0, g - (c - f)),
            e = window.setTimeout(function() {
                a()
            },
            d);
            f = c + d;
            return e
        };
        e.cancelAnimationFrame = window.cancelAnimationFrame || window.cancelRequestAnimationFrame || window.msCancelRequestAnimationFrame || window.mozCancelRequestAnimationFrame || window.oCancelRequestAnimationFrame || window.webkitCancelRequestAnimationFrame || window.msCancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.oCancelAnimationFrame ||
        function(a) {
            clearTimeout(a)
        };
        var h = b.Ca(a) || b.Ca("#" + a),
        k;
        "CANVAS" == h.tagName ? (c = c || h.width, d = d || h.height, k = b.Jh = b.rb("DIV"), a = b.ra = h, a.parentNode.insertBefore(k, a), a.cz(k), k.setAttribute("id", "Cocos2dGameContainer")) : ("DIV" != h.tagName && b.log("Warning: target element is not a DIV or CANVAS"), c = c || h.clientWidth, d = d || h.clientHeight, k = b.Jh = h, a = b.ra = b.Ca(b.rb("CANVAS")), h.appendChild(a));
        a.$y("gameCanvas");
        a.setAttribute("width", c || 480);
        a.setAttribute("height", d || 320);
        a.setAttribute("tabindex", 99);
        a.style.outline = "none";

        h = k.style;
        h.width = (c || 480) + "px";
        h.height = (d || 320) + "px";
        h.margin = "0 auto";
        h.position = "relative";
        h.overflow = "hidden";
        k.top = "100%";
        b.da == b.wb && (b.l = b.HZ = b.sz(a, {
            stencil: !0,
            preserveDrawingBuffer: !0,
            antialias: !b.Aa.Kf,
            alpha: !1
        }));
        b.l ? (e.gl = b.l, b.Hd = new b.oC(b.l), b.yo = !0, b.va.CG(), b.ff.$n()) : (b.l = a.getContext("2d"), b.jR = b.l, b.l.translate(0, a.height), b.Hd = b.Cv ? new b.Cv(b.l) : null);
        b.PF = k;
        b.log(b.oq);
        b.yH();
        b.Aa.Kf && (c = b.rb("style"), c.type = "text/css", document.body.appendChild(c), c.textContent = "body,canvas,div{ -moz-user-select: none;-webkit-user-select: none;-ms-user-select: none;-khtml-user-select: none;-webkit-tap-highlight-color:rgba(0,0,0,0);}");
        b.view = b.mq.Zr();
        b.dA.XL(b.ra);
        b.Qa = b.ha.Zr();
        b.Qa.fv && b.Qa.fv(b.view);
        b.aa = b.Qa.Ql();
        b.OX = new b.Vv;
        b.ML = new b.vD
    }
};
b.SQ = function() {
    if (b.da !== b.wb) throw "This feature supports WebGL render mode only.";
};
b.Fx = !1;
b.yH = function() {
    b.Fx = !1;
    b.ra.oncontextmenu = function() {
        if (!b.Fx) return ! 1
    }
};
b.Va = {
    xv: 0,
    dC: 1,
    MO: 2,
    cC: 3,
    hq: 4,
    yv: 5,
    wv: 6,
    tm: "game_on_hide",
    ek: "game_on_show",
    kg: null,
    lg: null,
    lR: [],
    Vd: {
        nu: "engineDir",
        tS: "dependencies",
        gp: "debugMode",
        oN: "showFPS",
        jp: "frameRate",
        id: "id",
        hm: "renderMode",
        hL: "jsList",
        QI: "classReleaseMode"
    },
    cy: !1,
    Is: !1,
    $a: !0,
    bl: null,
    Jc: null,
    Ru: null,
    pW: null,
    oY: function(a) {
        this.Jc[this.Vd.jp] = a;
        this.bl && window.cancelAnimationFrame(this.bl);
        this.$a = !0;
        this.Ao()
    },
    Ao: function() {
        var a = this,
        c, d = b.Qa;
        d.DM(a.Jc[a.Vd.oN]);
        c = function() {
            a.$a || (d.wL(), a.bl = window.GA(c))
        };
        window.GA(c);
        a.$a = !1
    },
    oM: function(a) {
        function c() {
            a && (d.Jc[d.Vd.id] = a);
            d.cy ? b.zl && (d.uF = setInterval(function() {
                d.Is && (b.Ey(d.Jc[d.Vd.id]), d.Ao(), d.kg = d.kg || new b.kf(d.tm), d.kg.setUserData(d), d.lg = d.lg || new b.kf(d.ek), d.lg.setUserData(d), d.Ru(), clearInterval(d.uF))
            },
            10)) : d.RL(function() {
                b.zl && (b.Ey(d.Jc[d.Vd.id]), d.Ao(), d.kg = d.kg || new b.kf(d.tm), d.kg.setUserData(d), d.lg = d.lg || new b.kf(d.ek), d.lg.setUserData(d), d.Ru())
            })
        }
        var d = this;
        document.body ? c() : b.ka(window, "load",
        function() {
            this.removeEventListener("load", arguments.callee, !1);
            c()
        },
        !1)
    },
    yG: function() {
        function a(a) {
            a[c.nu] = a[c.nu] || "frameworks/cocos2d-html5";
            null == a[c.gp] && (a[c.gp] = 0);
            a[c.jp] = a[c.jp] || 60;
            null == a[c.hm] && (a[c.hm] = 1);
            return a
        }
        var c = this.Vd;
        if (document.ccConfig) this.Jc = a(document.ccConfig);
        else try {
            for (var d = document.getElementsByTagName("script"), e = 0; e < d.length; e++) {
                var f = d[e].getAttribute("cocos");
                if ("" == f || f) break
            }
            var g, h, k;
            if (e < d.length) {
                if (g = d[e].src) k = /(.*)\//.exec(g)[0],
                b.D.Jp = k,
                g = b.path.join(k, "project.json");
                h = b.D.Qx(g)
            }
            h || (h = b.D.Qx("project.json"));
            var m = JSON.parse(h);
            this.Jc = a(m || {})
        } catch(n) {
            b.log("Failed to read or parse project.json"),
            this.Jc = a({})
        }
        b.BG(this.Jc, c)
    },
    IG: {},
    xx: function(a, c, d) {
        var e = this.IG;
        if (e[c]) return null;
        d = d || "";
        var f = [],
        g = a[c];
        if (!g) throw "can not find module [" + c + "]";
        c = b.path;
        for (var h = 0,
        k = g.length; h < k; h++) {
            var m = g[h];
            if (!e[m]) {
                var n = c.Hg(m);
                n ? ".js" == n.toLowerCase() && f.push(c.join(d, m)) : (n = this.xx(a, m, d)) && (f = f.concat(n));
                e[m] = 1
            }
        }
        return f
    },
    RL: function(a) {
        var c = this,
        d = c.Jc,
        e = c.Vd,
        f = d[e.nu],
        g = b.D;
        if (!b.zl) throw "The renderer doesn't support the renderMode " + d[e.hm];
        c.cy = !0;
        var h = d[e.hL] || [];
        b.oa ? g.lA("", h,
        function(d) {
            if (d) throw d;
            c.Is = !0;
            a && a()
        }) : (e = b.path.join(f, "moduleConfig.json"), g.mA(e,
        function(e, g) {
            if (e) throw e;
            var n = d.modules || [],
            r = g.module,
            s = [];
            b.da == b.wb ? n.splice(0, 0, "shaders") : 0 > n.indexOf("core") && n.splice(0, 0, "core");
            for (var u = 0,
            t = n.length; u < t; u++) {
                var v = c.xx(r, n[u], f);
                v && (s = s.concat(v))
            }
            s = s.concat(h);
            b.D.lA(s,
            function(d) {
                if (d) throw d;
                c.Is = !0;
                a && a()
            })
        }))
    }
};
b.Va.yG();
Function.prototype.bind = Function.prototype.bind ||
function(a) {
    var c = this;
    return function() {
        var d = Array.prototype.slice.call(arguments);
        return c.apply(a || null, d)
    }
};
b.c = {
    qv: "cc.ActionManager.addAction(): action must be non-null",
    IB: "cocos2d: removeAction: Target not found",
    pO: "cc.ActionManager.removeActionByTag(): an invalid tag",
    qO: "cc.ActionManager.removeActionByTag(): target must be non-null",
    GB: "cc.ActionManager.getActionByTag(): an invalid tag",
    HB: "cocos2d : getActionByTag(tag \x3d %s): Action not found",
    TI: "cocos2d: **** WARNING **** CC_ENABLE_PROFILERS is defined. Disable it when you finish profiling (from ccConfig.js)",
    UI: "Expected 'data' dict, but not found. Config file: %s",
    VI: "Please load the resource first : %s",
    jC: "cocos2d: Director: Error in gettimeofday",
    kC: "cocos2d: Director: unrecognized projection",
    YO: "cocos2d: Director: unrecognized projection",
    iC: "cocos2d: Director: Error in gettimeofday",
    hC: "running scene should not null",
    Bv: "the scene should not null",
    qj: "element type is wrong!",
    ED: "CCSheduler#scheduleCallback. Callback already scheduled. Updating interval from:%s to %s",
    FD: "cc.scheduler.scheduleCallbackForTarget(): callback_fn should be non-null.",
    GD: "cc.scheduler.scheduleCallbackForTarget(): target should be non-null.",
    CD: "cc.Scheduler.pauseTarget():target should be non-null",
    DD: "cc.Scheduler.resumeTarget():target should be non-null",
    BD: "cc.Scheduler.isTargetPaused():target should be non-null",
    WC: "getZOrder is deprecated. Please use getLocalZOrder instead.",
    gD: "setZOrder is deprecated. Please use setLocalZOrder instead.",
    UC: "RotationX !\x3d RotationY. Don't know which one to return",
    VC: "ScaleX !\x3d ScaleY. Don't know which one to return",
    FP: "An Node can't be added as a child of itself.",
    GP: "child already added. It can't be added again",
    RC: "child must be non-null",
    aD: "removeFromParentAndCleanup is deprecated. Use removeFromParent instead",
    SC: "boundingBox is deprecated. Use getBoundingBox instead",
    ZC: "argument tag is an invalid tag",
    $C: "cocos2d: removeChildByTag(tag \x3d %s): child not found!",
    YC: "removeAllChildrenWithCleanup is deprecated. Use removeAllChildren instead",
    hD: "cc.Node.stopActionBy(): argument tag an invalid tag",
    TC: "cc.Node.getActionByTag(): argument tag is an invalid tag",
    cD: "resumeSchedulerAndActions is deprecated, please use resume instead.",
    XC: "pauseSchedulerAndActions is deprecated, please use pause instead.",
    QC: "Unknown callback function",
    bD: "child must be non-null",
    dD: "cc.Node.runAction(): action must be non-null",
    eD: "callback function must be non-null",
    fD: "interval must be positive",
    HP: "cocos2d: Could not initialize cc.AtlasNode. Invalid Texture.",
    JB: "cc.AtlasNode.updateAtlasValues(): Shall be overridden in subclasses",
    tO: "",
    rv: "cocos2d: Could not initialize cc.AtlasNode. Invalid Texture.",
    YE: "cc._EventListenerKeyboard.checkAvailable(): Invalid EventListenerKeyboard!",
    $E: "cc._EventListenerTouchOneByOne.checkAvailable(): Invalid EventListenerTouchOneByOne!",
    ZE: "cc._EventListenerTouchAllAtOnce.checkAvailable(): Invalid EventListenerTouchAllAtOnce!",
    XE: "cc._EventListenerAcceleration.checkAvailable(): _onAccelerationEvent must be non-nil",
    wC: "Invalid parameter.",
    jn: "Don't call this method if the event is for touch.",
    yJ: "Invalid scene graph priority!",
    zJ: "0 priority is forbidden for fixed priority since it's used for scene graph based priority.",
    DJ: "Invalid listener type!",
    EJ: "Can't set fixed priority with scene graph based listener.",
    AJ: "Invalid parameters.",
    BJ: "listener must be a cc.EventListener object when adding a fixed priority listener",
    CJ: "The listener has been registered, please don't register it again.",
    MC: "parameters should not be ending with null in Javascript",
    NC: "Invalid index in MultiplexLayer switchTo message",
    OC: "Invalid index in MultiplexLayer switchTo message",
    LC: "cc.Layer.addLayer(): layer should be non-null",
    pC: "Resolution not valid",
    qC: "should set resolutionPolicy",
    XK: "The touches is more than MAX_TOUCHES, nUnusedIndex \x3d %s",
    pB: "cc.swap is being modified from original macro, please check usage",
    bp: "WebGL error %s",
    rI: "cocos2d: cc.AnimationCache: No animations were found in provided dictionary.",
    sI: "cc.AnimationCache. Invalid animation format",
    zI: "cc.AnimationCache.addAnimations(): File could not be found",
    tI: "cocos2d: cc.AnimationCache: Animation '%s' found in dictionary without any frames - cannot add to animation cache.",
    uI: "cocos2d: cc.AnimationCache: Animation '%s' refers to frame '%s' which is not currently in the cc.SpriteFrameCache. This frame will not be added to the animation.",
    vI: "cocos2d: cc.AnimationCache: None of the frames for animation '%s' were found in the cc.SpriteFrameCache. Animation is not being added to the Animation Cache.",
    wI: "cocos2d: cc.AnimationCache: An animation in your dictionary refers to a frame which is not in the cc.SpriteFrameCache. Some or all of the frames for the animation '%s' may be missing.",
    xI: "cocos2d: CCAnimationCache: Animation '%s' found in dictionary without any frames - cannot add to animation cache.",
    yI: "cocos2d: cc.AnimationCache: Animation '%s' refers to frame '%s' which is not currently in the cc.SpriteFrameCache. This frame will not be added to the animation.",
    AI: "cc.AnimationCache.addAnimations(): Invalid texture file name",
    cE: "cc.Sprite.reorderChild(): this child is not in children list",
    VD: "cc.Sprite.ignoreAnchorPointForPosition(): it is invalid in cc.Sprite when using SpriteBatchNode",
    fE: "cc.Sprite.setDisplayFrameWithAnimationName(): Frame not found",
    gE: "cc.Sprite.setDisplayFrameWithAnimationName(): Invalid frame index",
    eE: "setDisplayFrame is deprecated, please use setSpriteFrame instead.",
    OD: "cc.Sprite._updateBlendFunc(): _updateBlendFunc doesn't work when the sprite is rendered using a cc.CCSpriteBatchNode",
    XD: "cc.Sprite.initWithSpriteFrame(): spriteFrame should be non-null",
    YD: "cc.Sprite.initWithSpriteFrameName(): spriteFrameName should be non-null",
    ZD: " is null, please check.",
    WD: "cc.Sprite.initWithFile(): filename should be non-null",
    hE: "cc.Sprite.setDisplayFrameWithAnimationName(): animationName must be non-null",
    dE: "cc.Sprite.reorderChild(): child should be non-null",
    PD: "cc.Sprite.addChild(): cc.Sprite only supports cc.Sprites as children when using cc.SpriteBatchNode",
    QD: "cc.Sprite.addChild(): cc.Sprite only supports a sprite using same texture as children when using cc.SpriteBatchNode",
    RD: "cc.Sprite.addChild(): child should be non-null",
    jE: "cc.Sprite.texture setter: Batched sprites should use the same texture as the batchnode",
    cQ: "cc.SpriteBatchNode.updateQuadFromSprite(): cc.SpriteBatchNode only supports cc.Sprites as children",
    aE: "cc.SpriteBatchNode.insertQuadFromSprite(): cc.SpriteBatchNode only supports cc.Sprites as children",
    SD: "cc.SpriteBatchNode.addChild(): cc.SpriteBatchNode only supports cc.Sprites as children",
    TD: "cc.SpriteBatchNode.addChild(): cc.Sprite is not using the same texture",
    $D: "Sprite.initWithTexture(): Argument must be non-nil ",
    iE: "Invalid spriteFrameName",
    kE: "Invalid argument: cc.Sprite.texture setter expects a CCTexture2D.",
    dQ: "cc.SpriteBatchNode.updateQuadFromSprite(): sprite should be non-null",
    bE: "cc.SpriteBatchNode.insertQuadFromSprite(): sprite should be non-null",
    UD: "cc.SpriteBatchNode.addChild(): child should be non-null",
    HD: "cc.SpriteBatchNode.addQuadFromSprite(): SpriteBatchNode only supports cc.Sprites as children",
    JD: "cocos2d: CCSpriteBatchNode: resizing TextureAtlas capacity from %s to %s.",
    KD: "cocos2d: WARNING: Not enough memory to resize the atlas",
    MD: "cc.SpriteBatchNode.addChild(): Child doesn't belong to Sprite",
    LD: "cc.SpriteBatchNode.addChild(): sprite batch node should contain the child",
    ID: "cc.SpriteBatchNode.addQuadFromSprite(): child should be non-null",
    ND: "cc.SpriteBatchNode.addChild():child should be non-null",
    wN: "cocos2d: WARNING: originalWidth/Height not found on the cc.SpriteFrame. AnchorPoint won't work as expected. Regenrate the .plist",
    yN: "cocos2d: WARNING: an alias with name %s already exists",
    vN: "cocos2d: WARNING: Sprite frame: %s has already been added by another source, please fix name conflit",
    BN: "cocos2d: cc.SpriteFrameCahce: Frame %s not found",
    xN: "Please load the resource first : %s",
    zN: "cc.SpriteFrameCache.addSpriteFrames(): plist should be non-null",
    AN: "Argument must be non-nil",
    eq: "cc.SpriteBatchNode.updateQuadFromSprite(): cc.SpriteBatchNode only supports cc.Sprites as children",
    UB: "cc.SpriteBatchNode.insertQuadFromSprite(): cc.SpriteBatchNode only supports cc.Sprites as children",
    QB: "cc.SpriteBatchNode.addChild(): cc.SpriteBatchNode only supports cc.Sprites as children",
    TB: "Sprite.initWithTexture(): Argument must be non-nil ",
    RB: "cc.Sprite.addChild(): child should be non-null",
    WB: "Invalid spriteFrameName",
    XB: "Invalid argument: cc.Sprite texture setter expects a CCTexture2D.",
    YB: "cc.SpriteBatchNode.updateQuadFromSprite(): sprite should be non-null",
    VB: "cc.SpriteBatchNode.insertQuadFromSprite(): sprite should be non-null",
    SB: "cc.SpriteBatchNode.addChild(): child should be non-null",
    BE: "cocos2d: Could not open file: %s",
    bw: "cc.TextureAtlas.insertQuad(): invalid totalQuads",
    CE: "cc.TextureAtlas.initWithTexture():texture should be non-null",
    ME: "cc.TextureAtlas.updateQuad(): quad should be non-null",
    NE: "cc.TextureAtlas.updateQuad(): Invalid index",
    FE: "cc.TextureAtlas.insertQuad(): Invalid index",
    GE: "cc.TextureAtlas.insertQuad(): Invalid index + amount",
    DE: "cc.TextureAtlas.insertQuadFromIndex(): Invalid newIndex",
    EE: "cc.TextureAtlas.insertQuadFromIndex(): Invalid fromIndex",
    KE: "cc.TextureAtlas.removeQuadAtIndex(): Invalid index",
    LE: "cc.TextureAtlas.removeQuadsAtIndex(): index + amount out of bounds",
    HE: "cc.TextureAtlas.moveQuadsFromIndex(): move is out of bounds",
    IE: "cc.TextureAtlas.moveQuadsFromIndex(): Invalid newIndex",
    JE: "cc.TextureAtlas.moveQuadsFromIndex(): Invalid oldIndex",
    IN: "TextureCache:addPVRTCImage does not support on HTML5",
    GN: "TextureCache:addPVRTCImage does not support on HTML5",
    HN: "addPVRImage does not support on HTML5",
    JN: "cocos2d: Couldn't add UIImage in TextureCache",
    LN: "cocos2d: '%s' id\x3d%s %s x %s",
    rB: "cocos2d: '%s' id\x3d HTMLCanvasElement %s x %s",
    MN: "cocos2d: TextureCache dumpDebugInfo: %s textures, HTMLCanvasElement for %s KB (%s MB)",
    KN: "cc.Texture.addUIImage(): image should be non-null",
    sE: "initWithETCFile does not support on HTML5",
    wE: "initWithPVRFile does not support on HTML5",
    yE: "initWithPVRTCData does not support on HTML5",
    oE: "cc.Texture.addImage(): path should be non-null",
    uE: "cocos2d: cc.Texture2D. Can't create Texture. UIImage is nil",
    vE: "cocos2d: WARNING: Image (%s x %s) is bigger than the supported %s x %s",
    AE: "initWithString isn't supported on cocos2d-html5",
    tE: "initWithETCFile does not support on HTML5",
    xE: "initWithPVRFile does not support on HTML5",
    zE: "initWithPVRTCData does not support on HTML5",
    qE: "bitsPerPixelForFormat: %s, cannot give useful result, it's a illegal pixel format",
    nE: "cocos2d: cc.Texture2D: Using RGB565 texture since image has no alpha",
    pE: "cc.Texture.addImage(): path should be non-null",
    rE: "NSInternalInconsistencyException",
    Gb: "Missing file: %s",
    xA: "cc.radiansToDegress() should be called cc.radiansToDegrees()",
    Pq: "Rect width exceeds maximum margin: %s",
    Oq: "Rect height exceeds maximum margin: %s",
    xC: "If program goes here, there should be event in dispatch.",
    yC: "_inDispatch should be 1 here."
};
b.io = function(a) {
    if (b.ra) {
        var c = b.RG,
        d = document;
        if (!c) {
            var e = d.createElement("Div"),
            c = e.style;
            e.setAttribute("id", "logInfoDiv");
            b.ra.parentNode.appendChild(e);
            e.setAttribute("width", "200");
            e.setAttribute("height", b.ra.height);
            c.zIndex = "99999";
            c.position = "absolute";
            c.top = "0";
            c.left = "0";
            c = b.RG = d.createElement("textarea");
            d = c.style;
            c.setAttribute("rows", "20");
            c.setAttribute("cols", "30");
            c.setAttribute("disabled", !0);
            e.appendChild(c);
            d.backgroundColor = "transparent";
            d.borderBottom = "1px solid #cccccc";
            d.borderRightWidth = "0px";
            d.borderLeftWidth = "0px";
            d.borderTopWidth = "0px";
            d.borderTopStyle = "none";
            d.borderRightStyle = "none";
            d.borderLeftStyle = "none";
            d.padding = "0px";
            d.margin = 0
        }
        a = "string" == typeof a ? a: JSON.stringify(a);
        c.value = c.value + a + "\r\n";
        c.scrollTop = c.scrollHeight
    }
};
b.Un = function(a) {
    if ("object" === typeof a) try {
        return JSON.stringify(a)
    } catch(c) {
        return ""
    } else return a
};
console.log && (b.log = function(a) {
    for (var c = 1; c < arguments.length; c++) a = a.replace(/(%s)|(%d)/, b.Un(arguments[c]));
    console.log(a)
},
b.warn = console.warn ?
function(a) {
    for (var c = 1; c < arguments.length; c++) a = a.replace(/(%s)|(%d)/, b.Un(arguments[c]));
    console.warn(a)
}: b.log, b.error = console.error ?
function(a) {
    for (var c = 1; c < arguments.length; c++) a = a.replace(/(%s)|(%d)/, b.Un(arguments[c]));
    console.error(a)
}: b.log, b.assert = function(a, c) {
    if (!a && c) {
        for (var d = 2; d < arguments.length; d++) c = c.replace(/(%s)|(%d)/, b.Un(arguments[d]));
        throw c;
    }
});
var q = b.Va.Jc[b.Va.Vd.gp],
x = b.Va;
console.log && q === x.dC || (b.log = q == x.hq ? b.io.bind(b) : function() {});
q && q != x.xv && q != x.cC && q != x.wv || (b.warn = function() {});
q != x.hq && q != x.yv && console.warn || (b.warn = b.io.bind(b));
q && q != x.xv ? q != x.hq && q != x.yv && q != x.wv && console.error || (b.error = b.io.bind(b), b.assert = function(a, c) {
    if (!a && c) {
        for (var d = 2; d < arguments.length; d++) c = c.replace("%s", arguments[d]);
        b.io(c)
    }
}) : (b.error = function() {},
b.assert = function() {});
b.D.tL = function(a, c) {
    var d = this,
    e = this.rp(),
    f = "load " + a + " failed!";
    e.open("GET", a, !0);
    /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent) ? (e.setRequestHeader("Accept-Charset", "x-user-defined"), e.onreadystatechange = function() {
        if (4 == e.readyState && 200 == e.status) {
            var a = b.vw(e.responseBody);
            c(null, d.Ho(a))
        } else c(f)
    }) : (e.overrideMimeType && e.overrideMimeType("text/plain; charset\x3dx-user-defined"), e.onload = function() {
        4 == e.readyState && 200 == e.status ? c(null, d.Ho(e.responseText)) : c(f)
    });
    e.send(null)
};
b.D.Ho = function(a) {
    if (!a) return null;
    for (var c = new Uint8Array(a.length), d = 0; d < a.length; d++) c[d] = a.charCodeAt(d) & 255;
    return c
};
b.D.UV = function(a) {
    var c = this.rp(),
    d = "load " + a + " failed!";
    c.open("GET", a, !1);
    a = null;
    if (/msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent)) {
        c.setRequestHeader("Accept-Charset", "x-user-defined");
        c.send(null);
        if (200 != c.status) return b.log(d),
        null; (c = b.vw(c.responseBody)) && (a = this.Ho(c))
    } else {
        c.overrideMimeType && c.overrideMimeType("text/plain; charset\x3dx-user-defined");
        c.send(null);
        if (200 != c.status) return b.log(d),
        null;
        a = this.Ho(c.responseText)
    }
    return a
};
var Uint8Array = Uint8Array || Array;
if (/msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent)) {
    var y = b.rb("script");
    y.type = "text/vbscript";
    y.textContent = '\x3c!-- IEBinaryToArray_ByteStr --\x3e\r\nFunction IEBinaryToArray_ByteStr(Binary)\r\n   IEBinaryToArray_ByteStr \x3d CStr(Binary)\r\nEnd Function\r\nFunction IEBinaryToArray_ByteStr_Last(Binary)\r\n   Dim lastIndex\r\n   lastIndex \x3d LenB(Binary)\r\n   if lastIndex mod 2 Then\r\n       IEBinaryToArray_ByteStr_Last \x3d Chr( AscB( MidB( Binary, lastIndex, 1 ) ) )\r\n   Else\r\n       IEBinaryToArray_ByteStr_Last \x3d ""\r\n   End If\r\nEnd Function\r\n';
    document.body.appendChild(y);
    b.vw = function(a) {
        for (var c = {},
        d = 0; 256 > d; d++) for (var e = 0; 256 > e; e++) c[String.fromCharCode(d + 256 * e)] = String.fromCharCode(d) + String.fromCharCode(e);
        d = IEBinaryToArray_ByteStr(a);
        a = IEBinaryToArray_ByteStr_Last(a);
        return d.replace(/[\s\S]/g,
        function(a) {
            return c[a]
        }) + a
    }
};
b = b || {};
b.Rx = "";
b.Ji = "";
b.os = "";
var b = b || {},
B = {
    id: 0 | 998 * Math.random(),
    ZK: 0 | 998 * Math.random(),
    oz: function(a, c, d) {
        a = a.toString();
        var e = a.substring(a.indexOf("(") + 1, a.indexOf(")")),
        e = e.trim();
        for (a = a.substring(a.indexOf("{") + 1, a.lastIndexOf("}")); - 1 != a.indexOf("this._super");) {
            var f = a.indexOf("this._super"),
            g = a.indexOf("(", f),
            h = a.substring(g + 1, a.indexOf(")", g)),
            h = h.trim();
            a = a.substring(0, f) + "ClassManager[" + d + "]." + c + ".call(this" + (h ? ",": "") + a.substring(g + 1)
        }
        return Function(e, a)
    },
    oK: function() {
        return this.id++
    },
    pK: function() {
        return this.ZK++
    }
};
B.oz.LO = B; (function() {
    var a = /\b_super\b/,
    c = b.Va.Jc[b.Va.Vd.QI];
    c && console.log("release Mode");
    b.oa = function() {};
    b.oa.extend = function(d) {
        function e() {
            this.L = B.pK();
            this.ctor && this.ctor.apply(this, arguments)
        }
        var f = this.prototype,
        g = Object.create(f),
        h = B.oK();
        B[h] = f;
        var k = {
            writable: !0,
            enumerable: !1,
            configurable: !0
        };
        g.L = null;
        e.id = h;
        k.value = h;
        Object.defineProperty(g, "__pid", k);
        e.prototype = g;
        k.value = e;
        Object.defineProperty(e.prototype, "constructor", k);
        this.ze && (e.ze = b.d(this.ze));
        this.Ae && (e.Ae = b.d(this.Ae));
        for (var m = 0,
        n = arguments.length; m < n; ++m) {
            var r = arguments[m],
            s;
            for (s in r) {
                var u = "function" === typeof r[s],
                t = "function" === typeof f[s],
                v = a.test(r[s]);
                c && u && t && v ? (k.value = B.oz(r[s], s, h), Object.defineProperty(g, s, k)) : u && t && v ? (k.value = function(a, c) {
                    return function() {
                        var d = this._super;
                        this._super = f[a];
                        var e = c.apply(this, arguments);
                        this._super = d;
                        return e
                    }
                } (s, r[s]), Object.defineProperty(g, s, k)) : u ? (k.value = r[s], Object.defineProperty(g, s, k)) : g[s] = r[s];
                if (u) {
                    var w, A;
                    if (this.ze && this.ze[s]) {
                        var u = this.ze[s],
                        z;
                        for (z in this.Ae) if (this.Ae[z] == u) {
                            A = z;
                            break
                        }
                        b.k(g, u, r[s], r[A] ? r[A] : g[A], s, A)
                    }
                    if (this.Ae && this.Ae[s]) {
                        u = this.Ae[s];
                        for (z in this.ze) if (this.ze[z] == u) {
                            w = z;
                            break
                        }
                        b.k(g, u, r[w] ? r[w] : g[w], r[s], w, s)
                    }
                }
            }
        }
        e.extend = b.oa.extend;
        e.nV = function(a) {
            for (var c in a) g[c] = a[c]
        };
        return e
    }
})();
b.k = function(a, c, d, e, f, g) {
    if (a.__defineGetter__) d && a.__defineGetter__(c, d),
    e && a.__defineSetter__(c, e);
    else if (Object.defineProperty) {
        var h = {
            enumerable: !1,
            configurable: !0
        };
        d && (h.get = d);
        e && (h.set = e);
        Object.defineProperty(a, c, h)
    } else throw Error("browser does not support getters");
    if (!f && !g) for (var h = null != d,
    k = void 0 != e,
    m = Object.getOwnPropertyNames(a), n = 0; n < m.length; n++) {
        var r = m[n];
        if ((a.__lookupGetter__ ? !a.__lookupGetter__(r) : !Object.getOwnPropertyDescriptor(a, r)) && "function" === typeof a[r]) {
            var s = a[r];
            if (h && s === d && (f = r, !k || g)) break;
            if (k && s === e && (g = r, !h || f)) break
        }
    }
    a = a.constructor;
    f && (a.ze || (a.ze = {}), a.ze[f] = c);
    g && (a.Ae || (a.Ae = {}), a.Ae[g] = c)
};
b.d = function(a) {
    var c = a.constructor ? new a.constructor: {},
    d;
    for (d in a) {
        var e = a[d];
        c[d] = "object" != typeof e || !e || e instanceof b.m || e instanceof HTMLElement ? e: b.d(e)
    }
    return c
};
b = b || {};
b.p = b.p || {};
b.TR = function() {};
b.lP = {
    VR: 8,
    sZ: 9,
    iT: 13,
    shift: 16,
    rS: 17,
    alt: 18,
    pause: 19,
    bS: 20,
    escape: 27,
    TW: 33,
    SW: 34,
    end: 35,
    home: 36,
    left: 37,
    vZ: 38,
    right: 39,
    yS: 40,
    qV: 45,
    WO: 46,
    0 : 48,
    1 : 49,
    2 : 50,
    3 : 51,
    4 : 52,
    5 : 53,
    6 : 54,
    7 : 55,
    8 : 56,
    9 : 57,
    a: 65,
    b: 66,
    J: 67,
    P: 68,
    FS: 69,
    lT: 70,
    g: 71,
    kV: 72,
    mV: 73,
    KV: 74,
    LV: 75,
    RV: 76,
    WV: 77,
    Ap: 78,
    oW: 79,
    rW: 80,
    cX: 81,
    r: 82,
    NX: 83,
    rZ: 84,
    R: 85,
    S: 86,
    FZ: 87,
    x: 88,
    y: 89,
    z: 90,
    dW: 96,
    eW: 97,
    fW: 98,
    gW: 99,
    hW: 100,
    iW: 101,
    jW: 102,
    kW: 103,
    lW: 104,
    mW: 105,
    "*": 106,
    "+": 107,
    "-": 109,
    numdel: 110,
    "/": 111,
    mT: 112,
    qT: 113,
    rT: 114,
    sT: 115,
    tT: 116,
    uT: 117,
    vT: 118,
    wT: 119,
    xT: 120,
    nT: 121,
    oT: 122,
    pT: 123,
    nW: 144,
    QX: 145,
    RX: 186,
    ",": 186,
    jT: 187,
    "\x3d": 187,
    ";": 188,
    jS: 188,
    sS: 189,
    ".": 190,
    ZW: 190,
    BT: 191,
    jV: 192,
    "[": 219,
    qW: 219,
    "]": 221,
    gS: 221,
    UR: 220,
    quote: 222,
    dZ: 32
};
b.cP = 0;
b.zC = 1;
b.AC = 2;
b.dP = 3;
b.eP = 4;
b.BC = 5;
b.oU = function(a) {
    return 8 < a.length && 137 == a[0] && 80 == a[1] && 78 == a[2] && 71 == a[3] && 13 == a[4] && 10 == a[5] && 26 == a[6] && 10 == a[7] ? b.zC: 2 < a.length && (73 == a[0] && 73 == a[1] || 77 == a[0] && 77 == a[1] || 255 == a[0] && 216 == a[1]) ? b.AC: b.BC
};
b.oV = function(a, c) {
    function d() {}
    d.prototype = c.prototype;
    a.Rp = c.prototype;
    a.prototype = new d;
    a.prototype.constructor = a
};
b.WR = function(a, c, d) {
    var e = arguments.callee.caller;
    if (e.Rp) return ret = e.Rp.constructor.apply(a, Array.prototype.slice.call(arguments, 1));
    for (var f = Array.prototype.slice.call(arguments, 2), g = !1, h = a.constructor; h; h = h.Rp && h.Rp.constructor) if (h.prototype[c] === e) g = !0;
    else if (g) return h.prototype[c].apply(a, f);
    if (a[c] === e) return a.constructor.prototype[c].apply(a, f);
    throw Error("cc.base called from a method of one name to a method of a different name");
};
b.UP = function(a, c) {
    this.x = a || 0;
    this.y = c || 0
};
function C(a, c) {
    return void 0 == a ? {
        x: 0,
        y: 0
    }: void 0 == c ? {
        x: a.x,
        y: a.y
    }: {
        x: a,
        y: c
    }
}
b.NL = function(a, c) {
    return a && c && a.x === c.x && a.y === c.y
};
b.bQ = function(a, c) {
    this.width = a || 0;
    this.height = c || 0
};
function D(a, c) {
    return void 0 === a ? {
        width: 0,
        height: 0
    }: void 0 === c ? {
        width: a.width,
        height: a.height
    }: {
        width: a,
        height: c
    }
}
b.cZ = function(a, c) {
    return a && c && a.width == c.width && a.height == c.height
};
b.Uv = function(a, c, d, e) {
    this.x = a || 0;
    this.y = c || 0;
    this.width = d || 0;
    this.height = e || 0
};
function E(a, c, d, e) {
    return void 0 === a ? {
        x: 0,
        y: 0,
        width: 0,
        height: 0
    }: void 0 === c ? {
        x: a.x,
        y: a.y,
        width: a.width,
        height: a.height
    }: {
        x: a,
        y: c,
        width: d,
        height: e
    }
}
b.AA = function(a, c) {
    return a && c && a.x === c.x && a.y === c.y && a.width === c.width && a.height === c.height
};
b.Ns = function(a) {
    return a && 0 === a.x && 0 === a.y && 0 === a.width && 0 === a.height
};
b.iX = function(a, c) {
    return a && c ? !(a.x >= c.x || a.y >= c.y || a.x + a.width <= c.x + c.width || a.y + a.height <= c.y + c.height) : !1
};
b.em = function(a) {
    return a.x + a.width
};
b.jX = function(a) {
    return a.x + a.width / 2
};
b.Mj = function(a) {
    return a.x
};
b.fm = function(a) {
    return a.y + a.height
};
b.kX = function(a) {
    return a.y + a.height / 2
};
b.Nj = function(a) {
    return a.y
};
b.zA = function(a, c) {
    return c.x >= b.Mj(a) && c.x <= b.em(a) && c.y >= b.Nj(a) && c.y <= b.fm(a)
};
b.BA = function(a, c) {
    var d = a.y + a.height,
    e = c.x + c.width,
    f = c.y + c.height;
    return ! (a.x + a.width < c.x || e < a.x || d < c.y || f < a.y)
};
b.mX = function(a, c) {
    return ! (a.x + a.width < c.x || c.x + c.width < a.x || a.y + a.height < c.y || c.y + c.height < a.y)
};
b.Ip = function(a, c) {
    var d = E(0, 0, 0, 0);
    d.x = Math.min(a.x, c.x);
    d.y = Math.min(a.y, c.y);
    d.width = Math.max(a.x + a.width, c.x + c.width) - d.x;
    d.height = Math.max(a.y + a.height, c.y + c.height) - d.y;
    return d
};
b.lX = function(a, c) {
    var d = E(Math.max(b.Mj(a), b.Mj(c)), Math.max(b.Nj(a), b.Nj(c)), 0, 0);
    d.width = Math.min(b.em(a), b.em(c)) - b.Mj(d);
    d.height = Math.min(b.fm(a), b.fm(c)) - b.Nj(d);
    return d
};
b.Vv = b.oa.extend({
    Yx: null,
    ks: null,
    ctor: function() {
        window.DOMParser ? (this.ks = !0, this.Yx = new DOMParser) : this.ks = !1
    },
    parse: function(a) {
        return this.Xx(a)
    },
    Xx: function(a) {
        var c;
        this.ks ? c = this.Yx.parseFromString(a, "text/xml") : (c = new ActiveXObject("Microsoft.XMLDOM"), c.async = "false", c.loadXML(a));
        return c
    }
});
b.vD = b.Vv.extend({
    parse: function(a) {
        a = this.Xx(a).documentElement;
        if ("plist" != a.tagName) throw "Not a plist file!";
        for (var c = null,
        d = 0,
        e = a.childNodes.length; d < e && (c = a.childNodes[d], 1 != c.nodeType); d++);
        return this.As(c)
    },
    As: function(a) {
        var c = null,
        d = a.tagName;
        if ("dict" == d) c = this.dH(a);
        else if ("array" == d) c = this.cH(a);
        else if ("string" == d) if (1 == a.childNodes.length) c = a.firstChild.nodeValue;
        else for (c = "", d = 0; d < a.childNodes.length; d++) c += a.childNodes[d].nodeValue;
        else "false" == d ? c = !1 : "true" == d ? c = !0 : "real" == d ? c = parseFloat(a.firstChild.nodeValue) : "integer" == d && (c = parseInt(a.firstChild.nodeValue, 10));
        return c
    },
    cH: function(a) {
        for (var c = [], d = 0, e = a.childNodes.length; d < e; d++) {
            var f = a.childNodes[d];
            1 == f.nodeType && c.push(this.As(f))
        }
        return c
    },
    dH: function(a) {
        for (var c = {},
        d = null,
        e = 0,
        f = a.childNodes.length; e < f; e++) {
            var g = a.childNodes[e];
            1 == g.nodeType && ("key" == g.tagName ? d = g.firstChild.nodeValue: c[d] = this.As(g))
        }
        return c
    }
});
b.ZH = {
    load: function(a, c, d, e) {
        b.D.yp(a, e)
    }
};
b.D.Mg(["txt", "xml", "vsh", "fsh", "atlas"], b.ZH);
b.JG = {
    load: function(a, c, d, e) {
        b.D.mA(a, e)
    }
};
b.D.Mg(["json", "ExportJson"], b.JG);
b.xG = {
    load: function(a, c, d, e) {
        b.D.sd[c] = b.D.Wl(a,
        function(a, d) {
            if (a) return e(a);
            b.va.Fa(c);
            e(null, d)
        })
    }
};
b.D.Mg("png jpg bmp jpeg gif ico".split(" "), b.xG);
b.rH = {
    load: function(a, c, d, e) {
        b.D.sd[c] = b.D.Wl(d.src,
        function(a, d) {
            if (a) return e(a);
            b.va.Fa(c);
            e(null, d)
        })
    }
};
b.D.Mg(["serverImg"], b.rH);
b.gH = {
    load: function(a, c, d, e) {
        b.D.yp(a,
        function(a, c) {
            if (a) return e(a);
            e(null, b.ML.parse(c))
        })
    }
};
b.D.Mg(["plist"], b.gH);
b.NF = {
    lE: {
        ".eot": "embedded-opentype",
        ".ttf": "truetype",
        ".woff": "woff",
        ".svg": "svg"
    },
    Ox: function(a, c, d) {
        var e = document,
        f = b.path,
        g = this.lE,
        h = b.rb("style");
        h.type = "text/css";
        e.body.appendChild(h);
        var k = "@font-face { font-family:" + a + "; src:";
        if (c instanceof Array) for (var m = 0,
        n = c.length; m < n; m++) d = f.Hg(c[m]).toLowerCase(),
        k += "url('" + c[m] + "') format('" + g[d] + "')",
        k += m == n - 1 ? ";": ",";
        else k += "url('" + c + "') format('" + g[d] + "');";
        h.textContent += k + "};";
        c = b.rb("div");
        d = c.style;
        d.fontFamily = a;
        c.innerHTML = ".";
        d.position = "absolute";
        d.left = "-100px";
        d.top = "-100px";
        e.body.appendChild(c)
    },
    load: function(a, c, d, e) {
        c = d.type;
        a = d.name;
        c = d.eZ;
        "string" == typeof d ? (c = b.path.Hg(d), a = b.path.GI(d, c), this.Ox(a, d, c)) : this.Ox(a, c);
        e(null, !0)
    }
};
b.D.Mg(["font", "eot", "ttf", "woff", "svg"], b.NF);
b.PQ = {
    load: function(a, c, d, e) {
        b.D.tL(a, e)
    }
};
window.CocosEngine = b.oq = "Cocos2d-JS v3.0 RC2";
b.vk = 0;
b.jq = C(0, 0);
b.fC = 0.5;
b.JO = 1;
b.Yv = 1;
b.iD = 0;
b.Zv = 0;
b.eQ = 0;
b.fQ = 0;
b.XP = 1;
b.WP = "-hd";
b.TE = 1;
b.Uf = 0;
b.$P = 0;
b.JC = 0;
b.IC = 0;
b.tq = 1;
b.NO = b.oq + "-canvas";
b.rm = 1;
b.Dv = 1;
b.Ca = function(a) {
    var c = this == b ? document: this;
    if (a = a instanceof HTMLElement ? a: c.querySelector(a)) a.find = a.find || b.Ca,
    a.Du = a.Du ||
    function(a) {
        return this.className.match(RegExp("(\\s|^)" + a + "(\\s|$)"))
    },
    a.$y = a.$y ||
    function(a) {
        this.Du(a) || (this.className && (this.className += " "), this.className += a);
        return this
    },
    a.aM = a.aM ||
    function(a) {
        this.Du(a) && (this.className = this.className.replace(a, ""));
        return this
    },
    a.remove = a.remove ||
    function() {
        this.parentNode && this.parentNode.removeChild(this);
        return this
    },
    a.cz = a.cz ||
    function(a) {
        a.appendChild(this);
        return this
    },
    a.SL = a.SL ||
    function(a) {
        a.childNodes[0] ? a.insertBefore(this, a.childNodes[0]) : a.appendChild(this);
        return this
    },
    a.mm = a.mm ||
    function() {
        this.style[b.Ca.PN] = b.Ca.translate(this.position) + b.Ca.rotate(this.rotation) + b.Ca.scale(this.scale) + b.Ca.Sj(this.Sj);
        return this
    },
    a.position = a.position || {
        x: 0,
        y: 0
    },
    a.rotation = a.rotation || 0,
    a.scale = a.scale || {
        x: 1,
        y: 1
    },
    a.Sj = a.Sj || {
        x: 0,
        y: 0
    },
    a.tZ = function(a, c) {
        this.position.x = a;
        this.position.y = c;
        this.mm();
        return this
    },
    a.rotate = function(a) {
        this.rotation = a;
        this.mm();
        return this
    },
    a.resize = function(a, c) {
        this.scale.x = a;
        this.scale.y = c;
        this.mm();
        return this
    },
    a.PY = function(a, c) {
        this.Sj.x = a;
        this.Sj.y = c;
        this.mm();
        return this
    };
    return a
};
switch (b.Aa.Ih) {
case b.Aa.$j:
    b.Ca.dm = "Moz";
    b.Ca.Bj = !0;
    break;
case b.Aa.Yp:
case b.Aa.aq:
    b.Ca.dm = "webkit";
    b.Ca.Bj = !0;
    break;
case b.Aa.$p:
    b.Ca.dm = "O";
    b.Ca.Bj = !1;
    break;
case b.Aa.Zp:
    b.Ca.dm = "ms";
    b.Ca.Bj = !1;
    break;
default:
    b.Ca.dm = "webkit",
    b.Ca.Bj = !0
}
b.Ca.PN = b.Ca.dm + "Transform";
b.Ca.translate = b.Ca.Bj ?
function(a) {
    return "translate3d(" + a.x + "px, " + a.y + "px, 0) "
}: function(a) {
    return "translate(" + a.x + "px, " + a.y + "px) "
};
b.Ca.rotate = b.Ca.Bj ?
function(a) {
    return "rotateZ(" + a + "deg) "
}: function(a) {
    return "rotate(" + a + "deg) "
};
b.Ca.scale = function(a) {
    return "scale(" + a.x + ", " + a.y + ") "
};
b.Ca.Sj = function(a) {
    return "skewX(" + -a.x + "deg) skewY(" + a.y + "deg)"
};
b.bO = function(a) {
    return b.Ca(document.createElement(a))
};
b.Ca.zT = function(a) {
    var c = 0,
    d = 0;
    do c += a.offsetLeft,
    d += a.offsetTop;
    while (a = a.offsetParent);
    return {
        x: c,
        y: d
    }
};
b.hP = -1;
b.PI = Math.PI;
b.aP = parseFloat("3.402823466e+38F");
b.bP = parseFloat("1.175494351e-38F");
b.wD = b.PI / 180;
b.zv = 180 / b.PI;
b.RE = 4294967295;
b.pB = function(a, c, d) {
    if ("object" == typeof d && "undefined" != typeof d.x && "undefined" != typeof d.y) {
        var e = d[a];
        d[a] = d[c];
        d[c] = e
    } else b.log(b.c.pB)
};
b.SV = function(a, c, d) {
    return a + (c - a) * d
};
b.dX = function() {
    return 16777215 * Math.random()
};
b.fX = function() {
    return 2 * (Math.random() - 0.5)
};
b.eX = Math.random;
b.Gg = function(a) {
    return a * b.wD
};
b.wA = function(a) {
    return a * b.zv
};
b.xA = function(a) {
    b.log(b.c.xA);
    return a * b.zv
};
b.Ak = Number.MAX_VALUE - 1;
b.kc = b.iD ? 1 : 770;
b.jc = 771;
b.pA = function(a) {
    a.Jb && (a.Jb.wc(), a.Jb.xd())
};
b.hT = function() {};
b.uS = function() {};
b.Ze = function() {
    b.We += 1
};
b.Nm = 1.192092896E-7;
b.Ka = b.tq ?
function() {
    return b.Qa.bh
}: function() {
    return 1
};
b.PL = function(a) {
    var c = b.Ka();
    return C(a.x * c, a.y * c)
};
b.OL = function(a) {
    var c = b.Ka();
    return C(a.x / c, a.y / c)
};
b.Ds = function(a, c) {
    var d = b.Ka();
    c.x = a.x / d;
    c.y = a.y / d
};
b.rN = function(a) {
    var c = b.Ka();
    return D(a.width * c, a.height * c)
};
b.qN = function(a) {
    var c = b.Ka();
    return D(a.width / c, a.height / c)
};
b.Iy = function(a, c) {
    var d = b.Ka();
    c.width = a.width / d;
    c.height = a.height / d
};
b.Hp = b.tq ?
function(a) {
    var c = b.Ka();
    return E(a.x / c, a.y / c, a.width / c, a.height / c)
}: function(a) {
    return a
};
b.gm = b.tq ?
function(a) {
    var c = b.Ka();
    return E(a.x * c, a.y * c, a.width * c, a.height * c)
}: function(a) {
    return a
};
b.ONE = 1;
b.ZERO = 0;
b.SRC_ALPHA = 770;
b.SRC_ALPHA_SATURATE = 776;
b.SRC_COLOR = 768;
b.DST_ALPHA = 772;
b.DST_COLOR = 774;
b.ONE_MINUS_SRC_ALPHA = 771;
b.ONE_MINUS_SRC_COLOR = 769;
b.ONE_MINUS_DST_ALPHA = 773;
b.DST_COLOR = 775;
b.ONE_MINUS_DST_COLOR = 775;
b.ONE_MINUS_CONSTANT_ALPHA = 32772;
b.ONE_MINUS_CONSTANT_COLOR = 32770;
b.bp = function() {
    if (b.hm == b.wb) {
        var a = b.l.getError();
        a && b.log(b.c.bp, a)
    }
};
b.RO = 0;
b.PO = 1;
b.SO = 2;
b.QO = 3;
b.OO = 2;
b.DQ = 0;
b.Lc = 1;
b.cr = 2;
b.dr = 4;
b.gn = b.Lc | b.cr | b.dr;
b.gP = 0;
b.lc = 0;
b.Ck = 1;
b.Dk = 2;
b.EQ = 3;
b.sQ = 0;
b.oQ = 1;
b.qQ = 2;
b.AQ = 3;
b.yQ = 4;
b.lQ = 5;
b.uQ = 6;
b.wQ = 7;
b.nQ = 8;
b.Wq = "ShaderPositionTextureColor";
b.ZP = "ShaderPositionTextureColorAlphaTest";
b.Wv = "ShaderPositionColor";
b.Xv = "ShaderPositionTexture";
b.zD = "ShaderPositionTexture_uColor";
b.yD = "ShaderPositionTextureA8Color";
b.AD = "ShaderPosition_uColor";
b.xD = "ShaderPositionLengthTextureColor";
b.tQ = "CC_PMatrix";
b.pQ = "CC_MVMatrix";
b.rQ = "CC_MVPMatrix";
b.BQ = "CC_Time";
b.zQ = "CC_SinTime";
b.mQ = "CC_CosTime";
b.vQ = "CC_Random01";
b.xQ = "CC_Texture0";
b.kQ = "CC_alpha_value";
b.mO = "a_color";
b.nO = "a_position";
b.oO = "a_texCoord";
b.kP = 32;
b.KO = 3233828865;
b.IQ = 3233828866;
b.EP = 8801;
b.YP = 8802;
b.UO = 8803;
b = b || {};
b.p = b.p || {};
b.p.gr = function() {
    b.color = function(a, d, e, f, g, h) {
        return void 0 === a ? new b.ad(0, 0, 0, 255, g, h) : "string" === typeof a ? (a = b.Uz(a), new b.ad(a.r, a.g, a.b, a.a)) : "object" === typeof a ? new b.ad(a.r, a.g, a.b, a.a, a.Xo, a.offset) : new b.ad(a, d, e, f, g, h)
    };
    b.ad = function(a, d, e, f, g, h) {
        this.Bb = g || new ArrayBuffer(b.ad.BYTES_PER_ELEMENT);
        this.Na = h || 0;
        g = this.Bb;
        h = this.Na;
        var k = Uint8Array.BYTES_PER_ELEMENT;
        this.Ms = new Uint8Array(g, h, 1);
        this.Ur = new Uint8Array(g, h + k, 1);
        this.vr = new Uint8Array(g, h + 2 * k, 1);
        this.pr = new Uint8Array(g, h + 3 * k, 1);
        this.Ms[0] = a || 0;
        this.Ur[0] = d || 0;
        this.vr[0] = e || 0;
        this.pr[0] = f || 255
    };
    b.ad.BYTES_PER_ELEMENT = 4;
    var a = b.ad.prototype;
    a.lG = function() {
        return this.Ms[0]
    };
    a.DH = function(a) {
        this.Ms[0] = 0 > a ? 0 : a
    };
    a.bG = function() {
        return this.Ur[0]
    };
    a.AH = function(a) {
        this.Ur[0] = 0 > a ? 0 : a
    };
    a.VF = function() {
        return this.vr[0]
    };
    a.tH = function(a) {
        this.vr[0] = 0 > a ? 0 : a
    };
    a.RF = function() {
        return this.pr[0]
    };
    a.sH = function(a) {
        this.pr[0] = 0 > a ? 0 : a
    };
    b.k(a, "r", a.lG, a.DH);
    b.k(a, "g", a.bG, a.AH);
    b.k(a, "b", a.VF, a.tH);
    b.k(a, "a", a.RF, a.sH);
    b.Sa = function(a, d, e, f) {
        this.Bb = e || new ArrayBuffer(b.Sa.BYTES_PER_ELEMENT);
        this.Na = f || 0;
        this.Bh = new Float32Array(this.Bb, this.Na, 1);
        this.Ch = new Float32Array(this.Bb, this.Na + 4, 1);
        this.Bh[0] = a || 0;
        this.Ch[0] = d || 0
    };
    b.Sa.BYTES_PER_ELEMENT = 8;
    Object.defineProperties(b.Sa.prototype, {
        x: {
            get: function() {
                return this.Bh[0]
            },
            set: function(a) {
                this.Bh[0] = a
            },
            enumerable: !0
        },
        y: {
            get: function() {
                return this.Ch[0]
            },
            set: function(a) {
                this.Ch[0] = a
            },
            enumerable: !0
        }
    });
    b.Yd = function(a, d, e, f, g) {
        this.Bb = f || new ArrayBuffer(b.Yd.BYTES_PER_ELEMENT);
        this.Na = g || 0;
        f = this.Bb;
        g = this.Na;
        this.Bh = new Float32Array(f, g, 1);
        this.Bh[0] = a || 0;
        this.Ch = new Float32Array(f, g + Float32Array.BYTES_PER_ELEMENT, 1);
        this.Ch[0] = d || 0;
        this.Rt = new Float32Array(f, g + 2 * Float32Array.BYTES_PER_ELEMENT, 1);
        this.Rt[0] = e || 0
    };
    b.Yd.BYTES_PER_ELEMENT = 12;
    Object.defineProperties(b.Yd.prototype, {
        x: {
            get: function() {
                return this.Bh[0]
            },
            set: function(a) {
                this.Bh[0] = a
            },
            enumerable: !0
        },
        y: {
            get: function() {
                return this.Ch[0]
            },
            set: function(a) {
                this.Ch[0] = a
            },
            enumerable: !0
        },
        z: {
            get: function() {
                return this.Rt[0]
            },
            set: function(a) {
                this.Rt[0] = a
            },
            enumerable: !0
        }
    });
    b.Xf = function(a, d, e, f) {
        this.Bb = e || new ArrayBuffer(b.Xf.BYTES_PER_ELEMENT);
        this.Na = f || 0;
        this.Gt = new Float32Array(this.Bb, this.Na, 1);
        this.Kt = new Float32Array(this.Bb, this.Na + 4, 1);
        this.Gt[0] = a || 0;
        this.Kt[0] = d || 0
    };
    b.Xf.BYTES_PER_ELEMENT = 8;
    Object.defineProperties(b.Xf.prototype, {
        R: {
            get: function() {
                return this.Gt[0]
            },
            set: function(a) {
                this.Gt[0] = a
            },
            enumerable: !0
        },
        S: {
            get: function() {
                return this.Kt[0]
            },
            set: function(a) {
                this.Kt[0] = a
            },
            enumerable: !0
        }
    });
    b.Nq = function(a, d, e, f, g, h) {
        this.Bb = g || new ArrayBuffer(b.Nq.BYTES_PER_ELEMENT);
        this.Na = h || 0;
        g = this.Bb;
        h = b.Sa.BYTES_PER_ELEMENT;
        this.kj = a ? new b.Sa(a.x, a.y, g, 0) : new b.Sa(0, 0, g, 0);
        this.nj = d ? new b.Sa(d.x, d.y, g, h) : new b.Sa(0, 0, g, h);
        this.pi = e ? new b.Sa(e.x, e.y, g, 2 * h) : new b.Sa(0, 0, g, 2 * h);
        this.ri = f ? new b.Sa(f.x, f.y, g, 3 * h) : new b.Sa(0, 0, g, 3 * h)
    };
    b.Nq.BYTES_PER_ELEMENT = 32;
    b.VP = function(a, d, e, f) {
        this.wa = a || new b.Yd(0, 0, 0);
        this.xa = d || new b.Yd(0, 0, 0);
        this.ya = e || new b.Yd(0, 0, 0);
        this.za = f || new b.Yd(0, 0, 0)
    };
    Object.defineProperties(b.Nq.prototype, {
        ya: {
            get: function() {
                return this.kj
            },
            set: function(a) {
                this.kj.x = a.x;
                this.kj.y = a.y
            },
            enumerable: !0
        },
        za: {
            get: function() {
                return this.nj
            },
            set: function(a) {
                this.nj.x = a.x;
                this.nj.y = a.y
            },
            enumerable: !0
        },
        wa: {
            get: function() {
                return this.pi
            },
            set: function(a) {
                this.pi.x = a.x;
                this.pi.y = a.y
            },
            enumerable: !0
        },
        xa: {
            get: function() {
                return this.ri
            },
            set: function(a) {
                this.ri.x = a.x;
                this.ri.y = a.y
            },
            enumerable: !0
        }
    });
    b.Ed = function(a, d, e, f, g) {
        this.Bb = f || new ArrayBuffer(b.Ed.BYTES_PER_ELEMENT);
        this.Na = g || 0;
        f = this.Bb;
        g = this.Na;
        var h = b.Yd.BYTES_PER_ELEMENT;
        this.pj = a ? new b.Yd(a.x, a.y, a.z, f, g) : new b.Yd(0, 0, 0, f, g);
        this.Qk = d ? b.color(d.r, d.g, d.b, d.a, f, g + h) : b.color(0, 0, 0, 0, f, g + h);
        this.th = e ? new b.Xf(e.R, e.S, f, g + h + b.ad.BYTES_PER_ELEMENT) : new b.Xf(0, 0, f, g + h + b.ad.BYTES_PER_ELEMENT)
    };
    b.Ed.BYTES_PER_ELEMENT = 24;
    Object.defineProperties(b.Ed.prototype, {
        e: {
            get: function() {
                return this.pj
            },
            set: function(a) {
                var d = this.pj;
                d.x = a.x;
                d.y = a.y;
                d.z = a.z
            },
            enumerable: !0
        },
        j: {
            get: function() {
                return this.Qk
            },
            set: function(a) {
                var d = this.Qk;
                d.r = a.r;
                d.g = a.g;
                d.b = a.b;
                d.a = a.a
            },
            enumerable: !0
        },
        f: {
            get: function() {
                return this.th
            },
            set: function(a) {
                this.th.R = a.R;
                this.th.S = a.S
            },
            enumerable: !0
        }
    });
    b.Xa = function(a, d, e, f, g, h) {
        this.Bb = g || new ArrayBuffer(b.Xa.BYTES_PER_ELEMENT);
        this.Na = h || 0;
        g = this.Bb;
        h = this.Na;
        var k = b.Ed.BYTES_PER_ELEMENT;
        this.kj = a ? new b.Ed(a.e, a.j, a.f, g, h) : new b.Ed(null, null, null, g, h);
        this.pi = d ? new b.Ed(d.e, d.j, d.f, g, h + k) : new b.Ed(null, null, null, g, h + k);
        this.nj = e ? new b.Ed(e.e, e.j, e.f, g, h + 2 * k) : new b.Ed(null, null, null, g, h + 2 * k);
        this.ri = f ? new b.Ed(f.e, f.j, f.f, g, h + 3 * k) : new b.Ed(null, null, null, g, h + 3 * k)
    };
    b.Xa.BYTES_PER_ELEMENT = 96;
    Object.defineProperties(b.Xa.prototype, {
        ya: {
            get: function() {
                return this.kj
            },
            set: function(a) {
                var d = this.kj;
                d.e = a.e;
                d.j = a.j;
                d.f = a.f
            },
            enumerable: !0
        },
        wa: {
            get: function() {
                return this.pi
            },
            set: function(a) {
                var d = this.pi;
                d.e = a.e;
                d.j = a.j;
                d.f = a.f
            },
            enumerable: !0
        },
        za: {
            get: function() {
                return this.nj
            },
            set: function(a) {
                var d = this.nj;
                d.e = a.e;
                d.j = a.j;
                d.f = a.f
            },
            enumerable: !0
        },
        xa: {
            get: function() {
                return this.ri
            },
            set: function(a) {
                var d = this.ri;
                d.e = a.e;
                d.j = a.j;
                d.f = a.f
            },
            enumerable: !0
        },
        Xo: {
            get: function() {
                return this.Bb
            },
            enumerable: !0
        }
    });
    b.UE = function() {
        return new b.Xa
    };
    b.ew = function(a) {
        if (!a) return b.UE();
        var d = a.ya,
        e = a.wa,
        f = a.za;
        a = a.xa;
        return {
            ya: {
                e: {
                    x: d.e.x,
                    y: d.e.y,
                    z: d.e.z
                },
                j: {
                    r: d.j.r,
                    g: d.j.g,
                    b: d.j.b,
                    a: d.j.a
                },
                f: {
                    R: d.f.R,
                    S: d.f.S
                }
            },
            wa: {
                e: {
                    x: e.e.x,
                    y: e.e.y,
                    z: e.e.z
                },
                j: {
                    r: e.j.r,
                    g: e.j.g,
                    b: e.j.b,
                    a: e.j.a
                },
                f: {
                    R: e.f.R,
                    S: e.f.S
                }
            },
            za: {
                e: {
                    x: f.e.x,
                    y: f.e.y,
                    z: f.e.z
                },
                j: {
                    r: f.j.r,
                    g: f.j.g,
                    b: f.j.b,
                    a: f.j.a
                },
                f: {
                    R: f.f.R,
                    S: f.f.S
                }
            },
            xa: {
                e: {
                    x: a.e.x,
                    y: a.e.y,
                    z: a.e.z
                },
                j: {
                    r: a.j.r,
                    g: a.j.g,
                    b: a.j.b,
                    a: a.j.a
                },
                f: {
                    R: a.f.R,
                    S: a.f.S
                }
            }
        }
    };
    b.CQ = function(a) {
        if (!a) return [];
        for (var d = [], e = 0; e < a.length; e++) d.push(b.ew(a[e]));
        return d
    };
    b.Xd = function(a, d, e, f, g) {
        this.Bb = f || new ArrayBuffer(b.Xd.BYTES_PER_ELEMENT);
        this.Na = g || 0;
        f = this.Bb;
        g = this.Na;
        var h = b.Sa.BYTES_PER_ELEMENT;
        this.pj = a ? new b.Sa(a.x, a.y, f, g) : new b.Sa(0, 0, f, g);
        this.Qk = d ? b.color(d.r, d.g, d.b, d.a, f, g + h) : b.color(0, 0, 0, 0, f, g + h);
        this.th = e ? new b.Xf(e.R, e.S, f, g + h + b.ad.BYTES_PER_ELEMENT) : new b.Xf(0, 0, f, g + h + b.ad.BYTES_PER_ELEMENT)
    };
    b.Xd.BYTES_PER_ELEMENT = 20;
    Object.defineProperties(b.Xd.prototype, {
        e: {
            get: function() {
                return this.pj
            },
            set: function(a) {
                this.pj.x = a.x;
                this.pj.y = a.y
            },
            enumerable: !0
        },
        j: {
            get: function() {
                return this.Qk
            },
            set: function(a) {
                var d = this.Qk;
                d.r = a.r;
                d.g = a.g;
                d.b = a.b;
                d.a = a.a
            },
            enumerable: !0
        },
        f: {
            get: function() {
                return this.th
            },
            set: function(a) {
                this.th.R = a.R;
                this.th.S = a.S
            },
            enumerable: !0
        }
    });
    b.Ra = function(a, d, e, f, g) {
        this.Bb = f || new ArrayBuffer(b.Ra.BYTES_PER_ELEMENT);
        this.Na = g || 0;
        f = this.Bb;
        g = this.Na;
        var h = b.Xd.BYTES_PER_ELEMENT;
        this.jw = a ? new b.Xd(a.e, a.j, a.f, f, g) : new b.Xd(null, null, null, f, g);
        this.qw = d ? new b.Xd(d.e, d.j, d.f, f, g + h) : new b.Xd(null, null, null, f, g + h);
        this.tw = e ? new b.Xd(e.e, e.j, e.f, f, g + 2 * h) : new b.Xd(null, null, null, f, g + 2 * h)
    };
    b.Ra.BYTES_PER_ELEMENT = 60;
    Object.defineProperties(b.Ra.prototype, {
        a: {
            get: function() {
                return this.jw
            },
            set: function(a) {
                var d = this.jw;
                d.e = a.e;
                d.j = a.j;
                d.f = a.f
            },
            enumerable: !0
        },
        b: {
            get: function() {
                return this.qw
            },
            set: function(a) {
                var d = this.qw;
                d.e = a.e;
                d.j = a.j;
                d.f = a.f
            },
            enumerable: !0
        },
        J: {
            get: function() {
                return this.tw
            },
            set: function(a) {
                var d = this.tw;
                d.e = a.e;
                d.j = a.j;
                d.f = a.f
            },
            enumerable: !0
        }
    })
};
b.p.Gq = function() {
    var a = b.color;
    a.vG = function() {
        return a(255, 255, 255)
    };
    a.wG = function() {
        return a(255, 255, 0)
    };
    a.XF = function() {
        return a(0, 0, 255)
    };
    a.dG = function() {
        return a(0, 255, 0)
    };
    a.mG = function() {
        return a(255, 0, 0)
    };
    a.gG = function() {
        return a(255, 0, 255)
    };
    a.WF = function() {
        return a(0, 0, 0)
    };
    a.kG = function() {
        return a(255, 127, 0)
    };
    a.cG = function() {
        return a(166, 166, 166)
    };
    b.k(a, "WHITE", a.vG);
    b.k(a, "YELLOW", a.wG);
    b.k(a, "BLUE", a.XF);
    b.k(a, "GREEN", a.dG);
    b.k(a, "RED", a.mG);
    b.k(a, "MAGENTA", a.gG);
    b.k(a, "BLACK", a.WF);
    b.k(a, "ORANGE", a.kG);
    b.k(a, "GRAY", a.cG);
    b.cb.CF = function() {
        return new b.cb(b.ONE, b.ZERO)
    };
    b.cb.kF = function() {
        return new b.cb(b.ONE, b.ONE_MINUS_SRC_ALPHA)
    };
    b.cb.jF = function() {
        return new b.cb(b.SRC_ALPHA, b.ONE_MINUS_SRC_ALPHA)
    };
    b.cb.iF = function() {
        return new b.cb(b.SRC_ALPHA, b.ONE)
    };
    b.k(b.cb, "DISABLE", b.cb.CF);
    b.k(b.cb, "ALPHA_PREMULTIPLIED", b.cb.kF);
    b.k(b.cb, "ALPHA_NON_PREMULTIPLIED", b.cb.jF);
    b.k(b.cb, "ADDITIVE", b.cb.iF)
};
b.ad = function(a, c, d, e) {
    this.r = a || 0;
    this.g = c || 0;
    this.b = d || 0;
    this.a = e || 255
};
b.color = function(a, c, d, e) {
    return void 0 === a ? {
        r: 0,
        g: 0,
        b: 0,
        a: 255
    }: "string" === typeof a ? b.Uz(a) : "object" === typeof a ? {
        r: a.r,
        g: a.g,
        b: a.b,
        a: a.a || 255
    }: {
        r: a,
        g: c,
        b: d,
        a: e || 255
    }
};
b.hS = function(a, c) {
    return a.r === c.r && a.g === c.g && a.b === c.b
};
b.FB = function() {
    this.timestamp = this.z = this.y = this.x = 0
};
b.Sa = function(a, c) {
    this.x = a || 0;
    this.y = c || 0
};
b.Yd = function(a, c, d) {
    this.x = a || 0;
    this.y = c || 0;
    this.z = d || 0
};
b.Xf = function(a, c) {
    this.R = a || 0;
    this.S = c || 0
};
b.cb = function(a, c) {
    this.src = a;
    this.Y = c
};
b.XR = function() {
    return new b.cb(b.ONE, b.ZERO)
};
b.Uz = function(a) {
    a = a.replace(/^#?/, "0x");
    a = parseInt(a);
    return b.color(a >> 16, (a >> 8) % 256, a % 256)
};
b.iS = function(a) {
    var c = a.r.toString(16),
    d = a.g.toString(16),
    e = a.b.toString(16);
    return "#" + (16 > a.r ? "0" + c: c) + (16 > a.g ? "0" + d: d) + (16 > a.b ? "0" + e: e)
};
b.cn = 0;
b.Yg = 1;
b.$v = 2;
b.Ek = 0;
b.VE = 1;
b.fw = 2;
b.KQ = b.oa.extend({
    Ui: null,
    Gl: null,
    or: 0,
    ctor: function() {
        this.Ui = {};
        this.Gl = {};
        this.or = 2 << (0 | 10 * Math.random())
    },
    dF: function() {
        this.or++;
        return "key_" + this.or
    },
    AY: function(a, c) {
        if (null != c) {
            var d = this.dF();
            this.Ui[d] = c;
            this.Gl[d] = a
        }
    },
    CL: function(a) {
        if (null == a) return null;
        var c = this.Ui,
        d;
        for (d in c) if (c[d] === a) return this.Gl[d];
        return null
    },
    CZ: function(a) {
        return this.CL(a)
    },
    cM: function(a) {
        if (null != a) {
            var c = this.Ui,
            d;
            for (d in c) if (c[d] === a) {
                delete this.Gl[d];
                delete c[d];
                break
            }
        }
    },
    BX: function(a) {
        if (null != a) for (var c = 0; c < a.length; c++) this.cM(a[c])
    },
    pI: function() {
        var a = [],
        c = this.Ui,
        d;
        for (d in c) a.push(c[d]);
        return a
    },
    tX: function() {
        this.Ui = {};
        this.Gl = {}
    },
    count: function() {
        return this.pI().length
    }
});
b.Fv = function() {
    this.fontName = "Arial";
    this.fontSize = 12;
    this.textAlign = b.Yg;
    this.verticalAlign = b.Ek;
    this.fillStyle = b.color(255, 255, 255, 255);
    this.boundingHeight = this.boundingWidth = 0;
    this.lv = !1;
    this.strokeStyle = b.color(255, 255, 255, 255);
    this.lineWidth = 1;
    this.kB = !1;
    this.shadowBlur = this.shadowOffsetY = this.shadowOffsetX = 0;
    this.shadowOpacity = 1
};
b.da === b.wb && (b.assert("function" === typeof b.p.gr, b.c.Gb, "CCTypesWebGL.js"), b.p.gr(), delete b.p.gr);
b.assert("function" === typeof b.p.Gq, b.c.Gb, "CCTypesPropertyDefine.js");
b.p.Gq();
delete b.p.Gq;
b.hQ = [];
b.iQ = {};
b.mq = b.oa.extend({
    VQ: null,
    oc: null,
    Ai: null,
    tg: null,
    sc: null,
    Ve: null,
    Ts: !1,
    ur: !0,
    dh: 1,
    Mt: "",
    Qs: null,
    O: 1,
    Ux: 1,
    ma: 1,
    Vx: 1,
    Oi: 0,
    ts: 5,
    he: null,
    ry: null,
    vy: null,
    uy: null,
    sy: null,
    ty: null,
    al: !1,
    QQ: !1,
    zR: null,
    zx: null,
    Ax: null,
    vR: !1,
    Er: null,
    og: null,
    Sr: 1,
    kn: !1,
    Ex: !0,
    ctor: function() {
        var a = document,
        c = b.Rf,
        d = b.Cd;
        this.og = b.Jh.parentNode === a.body ? a.documentElement: b.Jh.parentNode;
        this.oc = D(0, 0);
        this.fs();
        var a = b.ra.width,
        e = b.ra.height;
        this.Ai = D(a, e);
        this.tg = D(a, e);
        this.sc = E(0, 0, a, e);
        this.Ve = E(0, 0, a, e);
        this.Er = {
            left: 0,
            top: 0
        };
        this.Mt = "Cocos2dHTML5";
        a = b.Aa;
        this.vJ(a.Su == a.Nv || a.Su == a.Ov);
        b.di && b.di.ga(this.Ve);
        this.ry = new b.yc(c.sm, d.pq);
        this.vy = new b.yc(c.tD, d.SHOW_ALL);
        this.uy = new b.yc(c.sm, d.zq);
        this.sy = new b.yc(c.sm, d.Mm);
        this.ty = new b.yc(c.sm, d.qq);
        this.zx = b.ra;
        this.Ax = b.l
    },
    Rs: function() {
        var a = this.tg.width,
        c = this.tg.height;
        this.Qs && (this.fs(), this.Qs.call());
        0 < a && this.Lp(a, c, this.he)
    },
    fM: function(a) {
        a ? this.kn || (this.kn = !0, a = this.Rs.bind(this), b.ka(window, "resize", a, !1)) : this.kn && (this.kn = !0, a = this.Rs.bind(this), window.removeEventListener("resize", a, !1))
    },
    MY: function(a) {
        if ("function" == typeof a || null == a) this.Qs = a
    },
    fs: function() {
        var a = this.oc;
        a.width = this.og.clientWidth;
        a.height = this.og.clientHeight
    },
    LQ: function() {
        var a = this.tg.width,
        c = this.tg.height;
        0 < a && this.Lp(a, c, this.he)
    },
    MH: function() {
        if (this.Ex) {
            var a = {
                "user-scalable": "no",
                "maximum-scale": "1.0",
                "initial-scale": "1.0"
            },
            c = document.getElementsByName("viewport"),
            d;
            0 == c.length ? (c = b.rb("meta"), c.name = "viewport", c.content = "", document.head.appendChild(c)) : c = c[0];
            if (b.Aa.Kf && b.Aa.Ih == b.Aa.$j) c.content = "initial-scale:1";
            else {
                d = c.content;
                for (var e in a) RegExp(e).test(d) || (d += ("" == d ? "": ",") + e + "\x3d" + a[e]);
                c.content = d
            }
        }
    },
    By: function() {
        var a = b.Ka();
        this.ma = this.O = a
    },
    oy: function() {
        this.O = this.Ux;
        this.ma = this.Vx
    },
    MQ: function() {},
    WK: function() {
        this.al = !0
    },
    lI: function(a) {
        this.Ex = a
    },
    vJ: function(a) {
        this.Ts = a ? !0 : !1
    },
    EV: function() {
        return this.Ts
    },
    gT: function(a) {
        this.ur = a ? !0 : !1
    },
    tV: function() {
        return this.ur
    },
    end: function() {},
    BV: function() {
        return null != this.zx && null != this.Ax
    },
    qY: function(a) {
        this.Sr = a;
        b.Qa.Op(b.Qa.kh)
    },
    oZ: function() {},
    uY: function() {},
    bY: function(a, c) {
        this.Er = {
            left: a,
            top: c
        }
    },
    RT: function() {
        return this.Er
    },
    iU: function() {
        return D(this.oc.width, this.oc.height)
    },
    pY: function(a, c) {
        this.oc.width = a;
        this.oc.height = c;
        this.og.style.width = a + "px";
        this.og.style.height = c + "px";
        this.Rs();
        b.Qa.Op(b.Qa.kh)
    },
    cS: function() {},
    Pl: function() {
        return D(this.Ve.width, this.Ve.height)
    },
    Au: function() {
        return C(this.Ve.x, this.Ve.y)
    },
    $R: function() {
        return ! 0
    },
    KU: function() {
        return this.he
    },
    XM: function(a) {
        if (a instanceof b.yc) this.he = a;
        else {
            var c = b.yc;
            a === c.pq && (this.he = this.ry);
            a === c.SHOW_ALL && (this.he = this.vy);
            a === c.zq && (this.he = this.uy);
            a === c.Mm && (this.he = this.sy);
            a === c.qq && (this.he = this.ty)
        }
    },
    Lp: function(a, c, d) {
        if (isNaN(a) || 0 == a || isNaN(c) || 0 == c) b.log(b.c.pC);
        else {
            this.XM(d);
            var e = this.he;
            if (e) {
                e.Wh(this);
                var f = this.oc.width,
                g = this.oc.height;
                b.Aa.Kf && this.MH(this.oc.width, this.oc.height);
                this.fs();
                if (d != this.he || a != this.tg.width || c != this.tg.height || f != this.oc.width || g != this.oc.height) this.Ai = D(a, c),
                this.tg = D(a, c),
                a = e.apply(this, this.Ai),
                a.scale && 2 == a.scale.length && (this.O = a.scale[0], this.ma = a.scale[1]),
                a.viewport && (a = this.sc = a.viewport, c = this.Ve, c.width = b.ra.width / this.O, c.height = b.ra.height / this.ma, c.x = -a.x / this.O, c.y = -a.y / this.ma),
                a = b.Qa,
                b.aa.width = a.ab.width = this.Ve.width,
                b.aa.height = a.ab.height = this.Ve.height,
                e.Vh(this),
                b.da == b.wb && (a.yi(), a.ZA()),
                this.Ux = this.O,
                this.Vx = this.ma,
                b.gC && b.gC.oR(),
                b.di && b.di.ga(this.Ve)
            } else b.log(b.c.qC)
        }
    },
    su: function() {
        return D(this.Ai.width, this.Ai.height)
    },
    lN: function(a, c, d, e) {
        var f = this.Sr,
        g = this.O,
        h = this.ma;
        b.l.viewport(a * g * f + this.sc.x * f, c * h * f + this.sc.y * f, d * g * f, e * h * f)
    },
    OY: function(a, c, d, e) {
        var f = this.Sr,
        g = this.O,
        h = this.ma;
        b.l.scissor(a * g * f + this.sc.x * f, c * h * f + this.sc.y * f, d * g * f, e * h * f)
    },
    GV: function() {
        var a = b.l;
        return a.isEnabled(a.SCISSOR_TEST)
    },
    OU: function() {
        var a = b.l,
        c = this.O,
        d = this.ma,
        a = a.getParameter(a.SCISSOR_BOX);
        return E((a[0] - this.sc.x) / c, (a[1] - this.sc.y) / d, a[2] / c, a[3] / d)
    },
    $Y: function(a) {
        null != a && 0 < a.length && (this.Mt = a)
    },
    eV: function() {
        return this.Mt
    },
    fV: function() {
        return this.sc
    },
    Lz: function() {
        return this.O
    },
    Mz: function() {
        return this.ma
    },
    ZT: function() {
        return this.dh
    },
    cu: function(a, c, d) {
        return {
            x: this.dh * (a - d.left),
            y: this.dh * (d.top + d.height - c)
        }
    },
    xF: function(a, c) {
        var d = this.sc;
        a.x = (this.dh * (a.x - c.left) - d.x) / this.O;
        a.y = (this.dh * (c.top + c.height - a.y) - d.y) / this.ma
    },
    Cn: function(a) {
        for (var c = this.sc,
        d = this.O,
        e = this.ma,
        f, g, h, k = 0; k < a.length; k++) f = a[k],
        g = f.Qb,
        h = f.Qe,
        f.et((g.x - c.x) / d, (g.y - c.y) / e),
        f.bj((h.x - c.x) / d, (h.y - c.y) / e)
    }
});
b.mq.Zr = function() {
    this.ao || (this.ao = this.ao || new b.mq, this.ao.WK());
    return this.ao
};
b.Rf = b.oa.extend({
    Wh: function() {},
    apply: function() {},
    Vh: function() {},
    it: function(a, c, d) {
        var e = a.og;
        b.view.ur && b.Aa.Kf && e == document.documentElement && b.screen.EI(e);
        var e = b.ra,
        f = b.Jh;
        f.style.width = e.style.width = c + "px";
        f.style.height = e.style.height = d + "px";
        f = a.dh = 1;
        a.Ts && (f = a.dh = window.devicePixelRatio || 1);
        e.width = c * f;
        e.height = d * f;
        a = document.body;
        var g;
        a && (g = a.style) && (g.paddingTop = g.paddingTop || "0px", g.paddingRight = g.paddingRight || "0px", g.paddingBottom = g.paddingBottom || "0px", g.paddingLeft = g.paddingLeft || "0px", g.borderTop = g.borderTop || "0px", g.borderRight = g.borderRight || "0px", g.borderBottom = g.borderBottom || "0px", g.borderLeft = g.borderLeft || "0px", g.marginTop = g.marginTop || "0px", g.marginRight = g.marginRight || "0px", g.marginBottom = g.marginBottom || "0px", g.marginLeft = g.marginLeft || "0px")
    },
    px: function() {
        document.body.insertBefore(b.Jh, document.body.firstChild);
        var a = document.body.style;
        a.width = window.innerWidth + "px";
        a.height = window.innerHeight + "px";
        a.overflow = "hidden";
        a = b.Jh.style;
        a.position = "fixed";
        a.left = a.top = "0px";
        document.body.scrollTop = 0
    }
});
b.Cd = b.oa.extend({
    Ss: {
        scale: [1, 1],
        viewport: null
    },
    Nk: function(a, c, d, e, f, g) {
        2 > Math.abs(a - d) && (d = a);
        2 > Math.abs(c - e) && (e = c);
        a = E(Math.round((a - d) / 2), Math.round((c - e) / 2), d, e);
        b.da == b.Ya && b.l.translate(a.x, a.y + e);
        this.Ss.scale = [f, g];
        this.Ss.viewport = a;
        return this.Ss
    },
    Wh: function() {},
    apply: function() {
        return {
            scale: [1, 1]
        }
    },
    Vh: function() {}
}); (function() {
    var a = b.Rf.extend({
        apply: function(a) {
            this.it(a, a.oc.width, a.oc.height)
        }
    }),
    c = b.Rf.extend({
        apply: function(a, c) {
            var d = a.oc.width,
            e = a.oc.height,
            f = b.Jh.style,
            r = c.width,
            s = c.height,
            u = d / r,
            t = e / s,
            v, w;
            u < t ? (v = d, w = s * u) : (v = r * t, w = e);
            r = Math.round((d - v) / 2);
            w = Math.round((e - w) / 2);
            this.it(a, d - 2 * r, e - 2 * w);
            f.marginLeft = r + "px";
            f.marginRight = r + "px";
            f.marginTop = w + "px";
            f.marginBottom = w + "px"
        }
    });
    a.extend({
        Wh: function(a) {
            this._super(a);
            a.og = document.documentElement
        },
        apply: function(a) {
            this._super(a);
            this.px()
        }
    });
    c.extend({
        Wh: function(a) {
            this._super(a);
            a.og = document.documentElement
        },
        apply: function(a, c) {
            this._super(a, c);
            this.px()
        }
    });
    var d = b.Rf.extend({
        apply: function(a) {
            this.it(a, b.ra.width, b.ra.height)
        }
    });
    b.Rf.sm = new a;
    b.Rf.tD = new c;
    b.Rf.RP = new d;
    var a = b.Cd.extend({
        apply: function(a, c) {
            var d = b.ra.width,
            e = b.ra.height;
            return this.Nk(d, e, d, e, d / c.width, e / c.height)
        }
    }),
    c = b.Cd.extend({
        apply: function(a, c) {
            var d = b.ra.width,
            e = b.ra.height,
            f = c.width,
            r = c.height,
            s = d / f,
            u = e / r,
            t = 0,
            v, w;
            s < u ? (t = s, v = d, w = r * t) : (t = u, v = f * t, w = e);
            return this.Nk(d, e, v, w, t, t)
        }
    }),
    d = b.Cd.extend({
        apply: function(a, c) {
            var d = b.ra.width,
            e = b.ra.height,
            f = c.width,
            r = c.height,
            s = d / f,
            u = e / r,
            t, v, w;
            s < u ? (t = u, v = f * t, w = e) : (t = s, v = d, w = r * t);
            return this.Nk(d, e, v, w, t, t)
        }
    }),
    e = b.Cd.extend({
        apply: function(a, c) {
            var d = b.ra.width,
            e = b.ra.height,
            f = e / c.height;
            return this.Nk(d, e, d, e, f, f)
        },
        Vh: function(a) {
            b.Qa.ab = a.Pl()
        }
    }),
    f = b.Cd.extend({
        apply: function(a, c) {
            var d = b.ra.width,
            e = b.ra.height,
            f = d / c.width;
            return this.Nk(d, e, d, e, f, f)
        },
        Vh: function(a) {
            b.Qa.ab = a.Pl()
        }
    });
    b.Cd.pq = new a;
    b.Cd.SHOW_ALL = new c;
    b.Cd.zq = new d;
    b.Cd.Mm = new e;
    b.Cd.qq = new f
})();
b.yc = b.oa.extend({
    An: null,
    Bn: null,
    ctor: function(a, c) {
        this.BM(a);
        this.CM(c)
    },
    Wh: function(a) {
        this.An.Wh(a);
        this.Bn.Wh(a)
    },
    apply: function(a, c) {
        this.An.apply(a, c);
        return this.Bn.apply(a, c)
    },
    Vh: function(a) {
        this.An.Vh(a);
        this.Bn.Vh(a)
    },
    BM: function(a) {
        a instanceof b.Rf && (this.An = a)
    },
    CM: function(a) {
        a instanceof b.Cd && (this.Bn = a)
    }
});
b.yc.pq = 0;
b.yc.zq = 1;
b.yc.SHOW_ALL = 2;
b.yc.Mm = 3;
b.yc.qq = 4;
b.yc.SE = 5;
b.screen = {
    Lo: !1,
    Gs: null,
    Et: "",
    ng: null,
    LF: [["requestFullscreen", "exitFullscreen", "fullscreenchange", "fullscreenEnabled", "fullscreenElement"], ["requestFullScreen", "exitFullScreen", "fullScreenchange", "fullScreenEnabled", "fullScreenElement"], ["webkitRequestFullScreen", "webkitCancelFullScreen", "webkitfullscreenchange", "webkitIsFullScreen", "webkitCurrentFullScreenElement"], ["mozRequestFullScreen", "mozCancelFullScreen", "mozfullscreenchange", "mozFullScreen", "mozFullScreenElement"], ["msRequestFullscreen", "msExitFullscreen", "MSFullscreenChange", "msFullscreenEnabled", "msFullscreenElement"]],
    ga: function() {
        this.ng = {};
        var a, c, d = this.LF,
        e;
        a = 0;
        for (l = d.length; a < l; a++) if ((c = d[a]) && c[1] in document) {
            a = 0;
            for (e = c.length; a < e; a++) this.ng[d[0][a]] = c[a];
            break
        }
        this.Lo = void 0 != this.ng.requestFullscreen;
        this.Et = "ontouchstart" in window ? "touchstart": "mousedown"
    },
    fullScreen: function() {
        return this.Lo && document[this.ng.fullscreenEnabled]
    },
    HA: function(a, c) {
        if (this.Lo) {
            a = a || document.documentElement;
            a[this.ng.requestFullscreen]();
            if (c) {
                var d = this.ng.CT;
                this.Gs && document.removeEventListener(d, this.Gs);
                this.Gs = c;
                b.ka(document, d, c, !1)
            }
            return a[this.ng.requestFullscreen]()
        }
    },
    kT: function() {
        return this.Lo ? document[this.ng.exitFullscreen]() : !0
    },
    EI: function(a, c) {
        function d() {
            f.HA(a, c);
            e.removeEventListener(f.Et, d)
        }
        a = a || document.body;
        var e = b.ra || a,
        f = this;
        this.HA(a, c);
        b.ka(e, this.Et, d)
    }
};
b.screen.ga();
b.di = {
    tB: C(0, 0),
    uB: C(0, 0),
    top: C(0, 0),
    Wt: C(0, 0),
    iz: C(0, 0),
    bottom: C(0, 0),
    Zo: C(0, 0),
    left: C(0, 0),
    right: C(0, 0),
    width: 0,
    height: 0,
    ga: function(a) {
        var c = this.width = a.width,
        d = this.height = a.height,
        e = a.x;
        a = a.y;
        var f = a + d,
        g = e + c;
        this.tB.x = e;
        this.tB.y = f;
        this.uB.x = g;
        this.uB.y = f;
        this.top.x = e + c / 2;
        this.top.y = f;
        this.Wt.x = e;
        this.Wt.y = a;
        this.iz.x = g;
        this.iz.y = a;
        this.bottom.x = e + c / 2;
        this.bottom.y = a;
        this.Zo.x = e + c / 2;
        this.Zo.y = a + d / 2;
        this.left.x = e;
        this.left.y = a + d / 2;
        this.right.x = g;
        this.right.y = a + d / 2
    }
};
b.OE = -90;
b.PE = 90;
b.QE = 180;
b.jQ = 0;
b.dA = {
    Wi: !1,
    Ix: !1,
    ay: C(0, 0),
    iH: C(0, 0),
    by: [],
    Hs: 0,
    Ag: [],
    Ft: {},
    Oi: 0,
    ts: 5,
    mn: !1,
    nn: 1 / 30,
    lw: 1,
    Zg: 0,
    qr: null,
    ln: null,
    tG: function() {
        for (var a = this.Oi,
        c = 0; c < this.ts; c++) {
            if (! (a & 1)) return this.Oi |= 1 << c,
            c;
            a >>= 1
        }
        return - 1
    },
    pH: function(a) {
        0 > a || a >= this.ts || (a = ~ (1 << a), this.Oi &= a)
    },
    pg: null,
    Bu: function(a) {
        for (var c, d, e, f = [], g = this.Ft, h = 0, k = a.length; h < k; h++) c = a[h],
        e = c.ce,
        d = g[e],
        null == d && (d = this.tG(), -1 == d ? b.log(b.c.XK, d) : (c = this.Ag[d] = c, g[e] = d, f.push(c)));
        0 < f.length && (this.pg.Cn(f), a = new b.Dd(f), a.jg = b.Dd.ii.Xp, b.I.dispatchEvent(a))
    },
    Cu: function(a) {
        for (var c, d, e = [], f = this.Ag, g = 0, h = a.length; g < h; g++) c = a[g],
        d = c.ce,
        d = this.Ft[d],
        null != d && f[d] && (f[d].et(c.Qb), f[d].bj(c.Qe), e.push(f[d]));
        0 < e.length && (this.pg.Cn(e), a = new b.Dd(e), a.jg = b.Dd.ii.yq, b.I.dispatchEvent(a))
    },
    sp: function(a) {
        a = this.Nz(a);
        0 < a.length && (this.pg.Cn(a), a = new b.Dd(a), a.jg = b.Dd.ii.nq, b.I.dispatchEvent(a))
    },
    Tz: function(a) {
        a = this.Nz(a);
        0 < a.length && (this.pg.Cn(a), a = new b.Dd(a), a.jg = b.Dd.ii.dq, b.I.dispatchEvent(a))
    },
    Nz: function(a) {
        for (var c, d, e, f = [], g = this.Ag, h = this.Ft, k = 0, m = a.length; k < m; k++) c = a[k],
        e = c.ce,
        d = h[e],
        null != d && g[d] && (g[d].et(c.Qb), g[d].bj(c.Qe), f.push(g[d]), this.pH(d), delete h[e]);
        return f
    },
    oe: function(a) {
        var c = document.documentElement,
        d = window,
        e = null,
        e = "function" === typeof a.getBoundingClientRect ? a.getBoundingClientRect() : a instanceof HTMLCanvasElement ? {
            left: 0,
            top: 0,
            width: a.width,
            height: a.height
        }: {
            left: 0,
            top: 0,
            width: parseInt(a.style.width),
            height: parseInt(a.style.height)
        };
        return {
            left: e.left + d.pageXOffset - c.clientLeft,
            top: e.top + d.pageYOffset - c.clientTop,
            width: e.width,
            height: e.height
        }
    },
    uK: function(a) {
        for (var c = null,
        d = this.by,
        e = a.ce,
        f = d.length - 1; 0 <= f; f--) if (d[f].ce == e) {
            c = d[f];
            break
        }
        c || (c = a);
        return c
    },
    WM: function(a) {
        for (var c = !1,
        d = this.by,
        e = a.ce,
        f = d.length - 1; 0 <= f; f--) if (d[f].ce == e) {
            d[f] = a;
            c = !0;
            break
        }
        c || (50 >= d.length ? d.push(a) : (d[this.Hs] = a, this.Hs = (this.Hs + 1) % 50))
    },
    Ol: function(a, c, d) {
        var e = this.ay;
        a = this.pg.cu(a, c, d);
        c = new b.ar(a.x, a.y);
        c.bj(e.x, e.y);
        e.x = a.x;
        e.y = a.y;
        return c
    },
    vj: function(a, c, d) {
        var e = this.iH;
        this.pg.xF(a, c);
        c = new b.tb(d);
        c.MM(a.x, a.y);
        c.CH(e.x, e.y);
        e.x = a.x;
        e.y = a.y;
        return c
    },
    yj: function(a, c) {
        if (null != a.pageX) return {
            x: a.pageX,
            y: a.pageY
        };
        c.left -= document.body.scrollLeft;
        c.top -= document.body.scrollTop;
        return {
            x: a.clientX,
            y: a.clientY
        }
    },
    qp: function(a, c) {
        for (var d = [], e = this.pg, f, g, h = this.ay, k = a.changedTouches.length, m = 0; m < k; m++) if (f = a.changedTouches[m]) {
            var n;
            n = b.Aa.$j === b.Aa.Ih ? e.cu(f.pageX, f.pageY, c) : e.cu(f.clientX, f.clientY, c);
            null != f.identifier ? (f = new b.ar(n.x, n.y, f.identifier), g = this.uK(f).Oh(), f.bj(g.x, g.y), this.WM(f)) : (f = new b.ar(n.x, n.y), f.bj(h.x, h.y));
            h.x = n.x;
            h.y = n.y;
            d.push(f)
        }
        return d
    },
    XL: function(a) {
        if (!this.Ix) {
            var c = this.pg = b.view,
            d = this,
            e = "touches" in b.Aa.Zt;
            "mouse" in b.Aa.Zt && (b.ka(window, "mousedown",
            function() {
                d.Wi = !0
            },
            !1), b.ka(window, "mouseup",
            function(c) {
                var f = d.Wi;
                d.Wi = !1;
                if (f) {
                    var f = d.oe(a),
                    g = d.yj(c, f);
                    b.zA(new b.Uv(f.left, f.top, f.width, f.height), g) || (e || d.sp([d.Ol(g.x, g.y, f)]), f = d.vj(g, f, b.tb.br), f.ai(c.button), b.I.dispatchEvent(f))
                }
            },
            !1), b.ka(a, "mousedown",
            function(c) {
                d.Wi = !0;
                var f = d.oe(a),
                g = d.yj(c, f);
                e || d.Bu([d.Ol(g.x, g.y, f)]);
                f = d.vj(g, f, b.tb.Av);
                f.ai(c.button);
                b.I.dispatchEvent(f);
                c.stopPropagation();
                c.preventDefault();
                a.focus()
            },
            !1), b.ka(a, "mouseup",
            function(c) {
                d.Wi = !1;
                var f = d.oe(a),
                g = d.yj(c, f);
                e || d.sp([d.Ol(g.x, g.y, f)]);
                f = d.vj(g, f, b.tb.br);
                f.ai(c.button);
                b.I.dispatchEvent(f);
                c.stopPropagation();
                c.preventDefault()
            },
            !1), b.ka(a, "mousemove",
            function(c) {
                var f = d.oe(a),
                g = d.yj(c, f);
                e || d.Cu([d.Ol(g.x, g.y, f)]);
                f = d.vj(g, f, b.tb.Lv);
                d.Wi ? f.ai(c.button) : f.ai(null);
                b.I.dispatchEvent(f);
                c.stopPropagation();
                c.preventDefault()
            },
            !1), b.ka(a, "mousewheel",
            function(c) {
                var e = d.oe(a),
                f = d.yj(c, e),
                e = d.vj(f, e, b.tb.Vq);
                e.ai(c.button);
                e.fB(0, c.wheelDelta);
                b.I.dispatchEvent(e);
                c.stopPropagation();
                c.preventDefault()
            },
            !1), b.ka(a, "DOMMouseScroll",
            function(c) {
                var e = d.oe(a),
                f = d.yj(c, e),
                e = d.vj(f, e, b.tb.Vq);
                e.ai(c.button);
                e.fB(0, -120 * c.detail);
                b.I.dispatchEvent(e);
                c.stopPropagation();
                c.preventDefault()
            },
            !1));
            if (window.navigator.msPointerEnabled) {
                var f = {
                    MSPointerDown: d.Bu,
                    MSPointerMove: d.Cu,
                    MSPointerUp: d.sp,
                    MSPointerCancel: d.Tz
                },
                g;
                for (g in f)(function(c, e) {
                    b.ka(a, c,
                    function(c) {
                        var f = d.oe(a);
                        f.left -= document.documentElement.scrollLeft;
                        f.top -= document.documentElement.scrollTop;
                        e.call(d, [d.Ol(c.clientX, c.clientY, f)]);
                        c.stopPropagation()
                    },
                    !1)
                })(g, f[g])
            }
            e && (b.ka(a, "touchstart",
            function(c) {
                if (c.changedTouches) {
                    var e = d.oe(a);
                    e.left -= document.body.scrollLeft;
                    e.top -= document.body.scrollTop;
                    d.Bu(d.qp(c, e));
                    c.stopPropagation();
                    c.preventDefault();
                    a.focus()
                }
            },
            !1), b.ka(a, "touchmove",
            function(c) {
                if (c.changedTouches) {
                    var e = d.oe(a);
                    e.left -= document.body.scrollLeft;
                    e.top -= document.body.scrollTop;
                    d.Cu(d.qp(c, e));
                    c.stopPropagation();
                    c.preventDefault()
                }
            },
            !1), b.ka(a, "touchend",
            function(c) {
                if (c.changedTouches) {
                    var e = d.oe(a);
                    e.left -= document.body.scrollLeft;
                    e.top -= document.body.scrollTop;
                    d.sp(d.qp(c, e));
                    c.stopPropagation();
                    c.preventDefault()
                }
            },
            !1), b.ka(a, "touchcancel",
            function(e) {
                if (e.changedTouches) {
                    var f = d.oe(a);
                    f.left -= document.body.scrollLeft;
                    f.top -= document.body.scrollTop;
                    c.Tz(d.qp(e, f));
                    e.stopPropagation();
                    e.preventDefault()
                }
            },
            !1));
            this.ky();
            this.jy();
            this.Ix = !0
        }
    },
    ky: function() {},
    jy: function() {},
    update: function(a) {
        this.Zg > this.nn && (this.Zg -= this.nn, b.I.dispatchEvent(new b.vC(this.qr)));
        this.Zg += a
    }
};
var p = b.dA;
p.SX = function(a) {
    this.mn !== a && (this.mn = a, a = b.Qa.Ig(), this.mn ? (this.Zg = 0, a.bv(this)) : (this.Zg = 0, a.nm(this)))
};
p.TX = function(a) {
    this.nn !== a && (this.nn = a)
};
p.ky = function() {
    b.ka(b.ra, "keydown",
    function(a) {
        b.I.dispatchEvent(new b.Ev(a.keyCode, !0));
        a.stopPropagation();
        a.preventDefault()
    },
    !1);
    b.ka(b.ra, "keyup",
    function(a) {
        b.I.dispatchEvent(new b.Ev(a.keyCode, !1));
        a.stopPropagation();
        a.preventDefault()
    },
    !1)
};
p.jy = function() {
    var a = window;
    this.qr = new b.FB;
    this.ln = a.DeviceMotionEvent || a.DeviceOrientationEvent;
    b.Aa.Ih == b.Aa.vv && (this.ln = window.DeviceOrientationEvent);
    b.ka(a, this.ln == a.DeviceMotionEvent ? "devicemotion": "deviceorientation", this.bJ.bind(this), !1)
};
p.bJ = function(a) {
    var c = window;
    if (this.mn) {
        var d = this.qr;
        if (this.ln == window.DeviceMotionEvent) {
            var e = a.accelerationIncludingGravity;
            d.x = this.lw * e.x * 0.1;
            d.y = this.lw * e.y * 0.1;
            d.z = 0.1 * e.z
        } else d.x = a.gamma / 90 * 0.981,
        d.y = 0.981 * -(a.beta / 90),
        d.z = a.alpha / 90 * 0.981;
        d.timestamp = a.timeStamp || Date.now();
        a = d.x;
        c.orientation === b.PE ? (d.x = -d.y, d.y = a) : c.orientation === b.OE ? (d.x = d.y, d.y = -a) : c.orientation === b.QE && (d.x = -d.x, d.y = -d.y)
    }
};
delete p;
b.sO = function(a, c, d, e, f, g) {
    this.a = a;
    this.b = c;
    this.J = d;
    this.P = e;
    this.Z = f;
    this.$ = g
};
b.MR = function(a, c, d, e, f, g) {
    return {
        a: a,
        b: c,
        J: d,
        P: e,
        Z: f,
        $: g
    }
};
b.vA = function(a, c) {
    return {
        x: c.a * a.x + c.J * a.y + c.Z,
        y: c.b * a.x + c.P * a.y + c.$
    }
};
b.vg = function(a, c, d) {
    return {
        x: d.a * a + d.J * c + d.Z,
        y: d.b * a + d.P * c + d.$
    }
};
b.bZ = function(a, c) {
    return {
        width: c.a * a.width + c.J * a.height,
        height: c.b * a.width + c.P * a.height
    }
};
b.NR = function() {
    return {
        a: 1,
        b: 0,
        J: 0,
        P: 1,
        Z: 0,
        $: 0
    }
};
b.LR = function() {
    return {
        a: 1,
        b: 0,
        J: 0,
        P: 1,
        Z: 0,
        $: 0
    }
};
b.Xu = function(a, c) {
    var d = b.Nj(a),
    e = b.Mj(a),
    f = b.em(a),
    g = b.fm(a),
    h = b.vg(e, d, c),
    d = b.vg(f, d, c),
    e = b.vg(e, g, c),
    k = b.vg(f, g, c),
    f = Math.min(h.x, d.x, e.x, k.x),
    g = Math.max(h.x, d.x, e.x, k.x),
    m = Math.min(h.y, d.y, e.y, k.y),
    h = Math.max(h.y, d.y, e.y, k.y);
    return E(f, m, g - f, h - m)
};
b.jH = function(a, c) {
    var d = b.Nj(a),
    e = b.Mj(a),
    f = b.em(a),
    g = b.fm(a),
    h = b.vg(e, d, c),
    d = b.vg(f, d, c),
    e = b.vg(e, g, c),
    k = b.vg(f, g, c),
    f = Math.min(h.x, d.x, e.x, k.x),
    g = Math.max(h.x, d.x, e.x, k.x),
    m = Math.min(h.y, d.y, e.y, k.y),
    h = Math.max(h.y, d.y, e.y, k.y);
    a.x = f;
    a.y = m;
    a.width = g - f;
    a.height = h - m;
    return a
};
b.mI = function(a, c, d) {
    return {
        a: a.a,
        b: a.b,
        J: a.J,
        P: a.P,
        Z: a.Z + a.a * c + a.J * d,
        $: a.$ + a.b * c + a.P * d
    }
};
b.PR = function(a, c, d) {
    return {
        a: a.a * c,
        b: a.b * c,
        J: a.J * d,
        P: a.P * d,
        Z: a.Z,
        $: a.$
    }
};
b.OR = function(a, c) {
    var d = Math.sin(c),
    e = Math.cos(c);
    return {
        a: a.a * e + a.J * d,
        b: a.b * e + a.P * d,
        J: a.J * e - a.a * d,
        P: a.P * e - a.b * d,
        Z: a.Z,
        $: a.$
    }
};
b.Eh = function(a, c) {
    return {
        a: a.a * c.a + a.b * c.J,
        b: a.a * c.b + a.b * c.P,
        J: a.J * c.a + a.P * c.J,
        P: a.J * c.b + a.P * c.P,
        Z: a.Z * c.a + a.$ * c.J + c.Z,
        $: a.Z * c.b + a.$ * c.P + c.$
    }
};
b.KR = function(a, c) {
    return a.a === c.a && a.b === c.b && a.J === c.J && a.P === c.P && a.Z === c.Z && a.$ === c.$
};
b.az = function(a) {
    var c = 1 / (a.a * a.P - a.b * a.J);
    return {
        a: c * a.P,
        b: -c * a.b,
        J: -c * a.J,
        P: c * a.a,
        Z: c * (a.J * a.$ - a.P * a.Z),
        $: c * (a.b * a.Z - a.a * a.$)
    }
};
b.Sv = parseFloat("1.192092896e-07F");
b.Uu = function(a) {
    return C( - a.x, -a.y)
};
b.Jj = function(a, c) {
    return C(a.x + c.x, a.y + c.y)
};
b.uc = function(a, c) {
    return C(a.x - c.x, a.y - c.y)
};
b.Kg = function(a, c) {
    return C(a.x * c, a.y * c)
};
b.tA = function(a, c) {
    return b.Kg(b.Jj(a, c), 0.5)
};
b.Kj = function(a, c) {
    return a.x * c.x + a.y * c.y
};
b.EL = function(a, c) {
    return a.x * c.y - a.y * c.x
};
b.Gp = function(a) {
    return C( - a.y, a.x)
};
b.JW = function(a) {
    return C(a.y, -a.x)
};
b.IW = function(a, c) {
    return b.Kg(c, b.Kj(a, c) / b.Kj(c, c))
};
b.KW = function(a, c) {
    return C(a.x * c.x - a.y * c.y, a.x * c.y + a.y * c.x)
};
b.QW = function(a, c) {
    return C(a.x * c.x + a.y * c.y, a.y * c.x - a.x * c.y)
};
b.rA = function(a) {
    return b.Kj(a, a)
};
b.zW = function(a, c) {
    return b.rA(b.uc(a, c))
};
b.Tu = function(a) {
    return Math.sqrt(b.rA(a))
};
b.yW = function(a, c) {
    return b.Tu(b.uc(a, c))
};
b.Td = function(a) {
    return b.Kg(a, 1 / b.Tu(a))
};
b.AW = function(a) {
    return C(Math.cos(a), Math.sin(a))
};
b.PW = function(a) {
    return Math.atan2(a.y, a.x)
};
b.cp = function(a, c, d) {
    if (c > d) {
        var e = c;
        c = d;
        d = e
    }
    return a < c ? c: a < d ? a: d
};
b.vW = function(a, c, d) {
    return C(b.cp(a.x, c.x, d.x), b.cp(a.y, c.y, d.y))
};
b.BW = function(a) {
    return C(a.width, a.height)
};
b.xW = function(a, c) {
    return C(c(a.x), c(a.y))
};
b.GW = function(a, c, d) {
    return b.Jj(b.Kg(a, 1 - d), b.Kg(c, d))
};
b.DW = function(a, c, d) {
    return a.x - d <= c.x && c.x <= a.x + d && a.y - d <= c.y && c.y <= a.y + d ? !0 : !1
};
b.wW = function(a, c) {
    return C(a.x * c.x, a.y * c.y)
};
b.uW = function(a, c) {
    var d = b.Td(a),
    e = b.Td(c),
    d = Math.atan2(d.x * e.y - d.y * e.x, b.Kj(d, e));
    return Math.abs(d) < b.Sv ? 0 : d
};
b.tW = function(a, c) {
    var d = Math.acos(b.Kj(b.Td(a), b.Td(c)));
    return Math.abs(d) < b.Sv ? 0 : d
};
b.LW = function(a, c, d) {
    a = b.uc(a, c);
    var e = Math.cos(d);
    d = Math.sin(d);
    var f = a.x;
    a.x = f * e - a.y * d + c.x;
    a.y = f * d + a.y * e + c.y;
    return a
};
b.sA = function(a, c, d, e, f) {
    if (a.x == c.x && a.y == c.y || d.x == e.x && d.y == e.y) return ! 1;
    var g = c.x - a.x;
    c = c.y - a.y;
    var h = e.x - d.x;
    e = e.y - d.y;
    var k = a.x - d.x;
    a = a.y - d.y;
    d = e * g - h * c;
    f.x = h * a - e * k;
    f.y = g * a - c * k;
    if (0 == d) return 0 == f.x || 0 == f.y ? !0 : !1;
    f.x /= d;
    f.y /= d;
    return ! 0
};
b.NW = function(a, c, d, e) {
    var f = C(0, 0);
    return b.sA(a, c, d, e, f) && 0 <= f.x && 1 >= f.x && 0 <= f.y && 1 >= f.y ? !0 : !1
};
b.FW = function(a, c, d, e) {
    var f = C(0, 0);
    return b.sA(a, c, d, e, f) ? (d = C(0, 0), d.x = a.x + f.x * (c.x - a.x), d.y = a.y + f.x * (c.y - a.y), d) : C(0, 0)
};
b.MW = function(a, c) {
    return null != a && null != c ? a.x == c.x && a.y == c.y: !1
};
b.RW = function(a) {
    a.x = 0;
    a.y = 0
};
b.EW = function(a, c) {
    a.x = c.x;
    a.y = c.y
};
b.FL = function(a, c) {
    a.x *= c;
    a.y *= c
};
b.OW = function(a, c) {
    a.x -= c.x;
    a.y -= c.y
};
b.sW = function(a, c) {
    a.x += c.x;
    a.y += c.y
};
b.HW = function(a) {
    b.FL(a, 1 / Math.sqrt(a.x * a.x + a.y * a.y))
};
b.DZ = function(a, c, d, e, f) {
    f += e;
    if (! (1 >= f)) {
        c *= 0.5;
        for (var g, h = f - 1,
        k = e; k < f; k++) {
            g = 2 * k;
            var m = C(a[2 * k], a[2 * k + 1]),
            n;
            if (0 === k) n = b.Gp(b.Td(b.uc(m, C(a[2 * (k + 1)], a[2 * (k + 1) + 1]))));
            else if (k === h) n = b.Gp(b.Td(b.uc(C(a[2 * (k - 1)], a[2 * (k - 1) + 1]), m)));
            else {
                n = C(a[2 * (k - 1)], a[2 * (k - 1) + 1]);
                var r = C(a[2 * (k + 1)], a[2 * (k + 1) + 1]),
                s = b.Td(b.uc(r, m)),
                u = b.Td(b.uc(n, m)),
                t = Math.acos(b.Kj(s, u));
                n = t < b.Gg(70) ? b.Gp(b.Td(b.tA(s, u))) : t < b.Gg(170) ? b.Td(b.tA(s, u)) : b.Gp(b.Td(b.uc(r, n)))
            }
            n = b.Kg(n, c);
            d[2 * g] = m.x + n.x;
            d[2 * g + 1] = m.y + n.y;
            d[2 * (g + 1)] = m.x - n.x;
            d[2 * (g + 1) + 1] = m.y - n.y
        }
        for (k = 0 == e ? 0 : e - 1; k < h; k++) g = 2 * k,
        a = g + 2,
        c = new b.Sa(d[2 * g], d[2 * g + 1]),
        f = new b.Sa(d[2 * (g + 1)], d[2 * (g + 1) + 1]),
        g = new b.Sa(d[2 * a], d[2 * a]),
        e = new b.Sa(d[2 * (a + 1)], d[2 * (a + 1) + 1]),
        c = !b.UN(c.x, c.y, e.x, e.y, f.x, f.y, g.x, g.y),
        !c.Ul && (0 > c.value || 1 < c.value) && (c.Ul = !0),
        c.Ul && (d[2 * a] = e.x, d[2 * a + 1] = e.y, d[2 * (a + 1)] = g.x, d[2 * (a + 1) + 1] = g.y)
    }
};
b.UN = function(a, c, d, e, f, g, h, k) {
    if (a == d && c == e || f == h && g == k) return {
        Ul: !1,
        value: 0
    };
    d -= a;
    e -= c;
    f -= a;
    g -= c;
    h -= a;
    k -= c;
    a = Math.sqrt(d * d + e * e);
    d /= a;
    e /= a;
    c = f * d + g * e;
    g = g * d - f * e;
    f = c;
    c = h * d + k * e;
    k = k * d - h * e;
    h = c;
    return g == k ? {
        Ul: !1,
        value: 0
    }: {
        Ul: !0,
        value: (h + (f - h) * k / (k - g)) / a
    }
};
b.EZ = function(a) {
    for (var c = 0,
    d = a.length; c < d; c++) {
        var e = a[(c + 1) % d];
        if (0 < b.EL(b.uc(e, a[c]), b.uc(a[(c + 2) % d], e))) return ! 1
    }
    return ! 0
};
b.IO = function(a, c) {
    c[2] = c[3] = c[6] = c[7] = c[8] = c[9] = c[11] = c[14] = 0;
    c[10] = c[15] = 1;
    c[0] = a.a;
    c[4] = a.J;
    c[12] = a.Z;
    c[1] = a.b;
    c[5] = a.P;
    c[13] = a.$
};
b.fP = function(a, c) {
    c.a = a[0];
    c.J = a[4];
    c.Z = a[12];
    c.b = a[1];
    c.P = a[5];
    c.$ = a[13]
};
b.ar = b.oa.extend({
    Qb: null,
    Qe: null,
    ce: 0,
    Ny: !1,
    wl: null,
    ctor: function(a, c, d) {
        this.Qb = C(a || 0, c || 0);
        this.ce = d || 0
    },
    Oh: function() {
        return {
            x: this.Qb.x,
            y: this.Qb.y
        }
    },
    kK: function() {
        return this.Qb.x
    },
    lK: function() {
        return this.Qb.y
    },
    FU: function() {
        return {
            x: this.Qe.x,
            y: this.Qe.y
        }
    },
    SU: function() {
        return {
            x: this.wl.x,
            y: this.wl.y
        }
    },
    WJ: function() {
        return b.uc(this.Qb, this.Qe)
    },
    jK: function() {
        return {
            x: this.Qb.x,
            y: this.Qb.y
        }
    },
    GU: function() {
        return {
            x: this.Qe.x,
            y: this.Qe.y
        }
    },
    TU: function() {
        return {
            x: this.wl.x,
            y: this.wl.y
        }
    },
    mU: function() {
        return this.ce
    },
    nU: function() {
        return this.ce
    },
    VY: function(a, c, d) {
        this.Qe = this.Qb;
        this.Qb = C(c || 0, d || 0);
        this.ce = a;
        this.Ny || (this.wl = C(this.Qb), this.Ny = !0)
    },
    et: function(a, c) {
        void 0 === c ? (this.Qb.x = a.x, this.Qb.y = a.y) : (this.Qb.x = a, this.Qb.y = c)
    },
    bj: function(a, c) {
        this.Qe = void 0 === c ? C(a.x, a.y) : C(a || 0, c || 0)
    }
});
b.eb = b.oa.extend({
    Bg: 0,
    ih: !1,
    Cc: null,
    Zs: function(a) {
        this.Cc = a
    },
    ctor: function(a) {
        this.Bg = a
    },
    FK: function() {
        return this.Bg
    },
    stopPropagation: function() {
        this.ih = !0
    },
    IV: function() {
        return this.ih
    },
    ST: function() {
        return this.Cc
    }
});
b.eb.dn = 0;
b.eb.ji = 1;
b.eb.ei = 2;
b.eb.ki = 3;
b.eb.ak = 4;
b.kf = b.eb.extend({
    Qr: null,
    Yy: null,
    ctor: function(a) {
        b.eb.prototype.ctor.call(this, b.eb.ak);
        this.Qr = a
    },
    setUserData: function(a) {
        this.Yy = a
    },
    getUserData: function() {
        return this.Yy
    },
    dU: function() {
        return this.Qr
    }
});
b.tb = b.eb.extend({
    lx: 0,
    sw: 0,
    me: 0,
    Hc: 0,
    Js: 0,
    Ks: 0,
    xy: 0,
    yy: 0,
    ctor: function(a) {
        b.eb.prototype.ctor.call(this, b.eb.ki);
        this.lx = a
    },
    fB: function(a, c) {
        this.xy = a;
        this.yy = c
    },
    PU: function() {
        return this.xy
    },
    QU: function() {
        return this.yy
    },
    MM: function(a, c) {
        this.me = a;
        this.Hc = c
    },
    Oh: function() {
        return {
            x: this.me,
            y: this.Hc
        }
    },
    jK: function() {
        return {
            x: this.me,
            y: b.view.Ai.height - this.Hc
        }
    },
    CH: function(a, c) {
        this.Js = a;
        this.Ks = c
    },
    WJ: function() {
        return {
            x: this.me - this.Js,
            y: this.Hc - this.Ks
        }
    },
    XT: function() {
        return this.me - this.Js
    },
    YT: function() {
        return this.Hc - this.Ks
    },
    ai: function(a) {
        this.sw = a
    },
    KT: function() {
        return this.sw
    },
    kK: function() {
        return this.me
    },
    lK: function() {
        return this.Hc
    }
});
b.tb.NONE = 0;
b.tb.Av = 1;
b.tb.br = 2;
b.tb.Lv = 3;
b.tb.Vq = 4;
b.tb.FO = 0;
b.tb.HO = 2;
b.tb.GO = 1;
b.tb.AO = 3;
b.tb.BO = 4;
b.tb.CO = 5;
b.tb.DO = 6;
b.tb.EO = 7;
b.Dd = b.eb.extend({
    jg: 0,
    Ag: null,
    ctor: function(a) {
        b.eb.prototype.ctor.call(this, b.eb.dn);
        this.Ag = a || []
    },
    cU: function() {
        return this.jg
    },
    $U: function() {
        return this.Ag
    },
    sR: function(a) {
        this.jg = a
    },
    uR: function(a) {
        this.Ag = a
    }
});
b.Dd.CP = 5;
b.Dd.ii = {
    Xp: 0,
    yq: 1,
    nq: 2,
    dq: 3
};
b.G = b.oa.extend({
    ws: null,
    Bg: 0,
    Me: null,
    pd: !1,
    mg: 0,
    Sc: null,
    $a: !1,
    Ri: !0,
    ctor: function(a, c, d) {
        this.ws = d;
        this.Bg = a || 0;
        this.Me = c || ""
    },
    dt: function(a) {
        this.$a = a
    },
    gR: function() {
        return this.$a
    },
    sl: function(a) {
        this.pd = a
    },
    HG: function() {
        return this.pd
    },
    eR: function() {
        return this.Bg
    },
    bR: function() {
        return this.Me
    },
    $s: function(a) {
        this.mg = a
    },
    aR: function() {
        return this.mg
    },
    tl: function(a) {
        this.Sc = a
    },
    cR: function() {
        return this.Sc
    },
    Eg: function() {
        return null != this.ws
    },
    d: function() {
        return null
    },
    Mp: function(a) {
        this.Ri = a
    },
    isEnabled: function() {
        return this.Ri
    },
    Zu: function() {},
    Pf: function() {}
});
b.G.SE = 0;
b.G.li = 1;
b.G.en = 2;
b.G.ji = 3;
b.G.ki = 4;
b.G.ei = 5;
b.G.ak = 6;
b.Fk = b.G.extend({
    ll: null,
    ctor: function(a, c) {
        this.ll = c;
        var d = this;
        b.G.prototype.ctor.call(this, b.G.ak, a,
        function(a) {
            null != d.ll && d.ll(a)
        })
    },
    Eg: function() {
        return b.G.prototype.Eg.call(this) && null != this.ll
    },
    d: function() {
        return new b.Fk(this.Me, this.ll)
    }
});
b.Fk.create = function(a, c) {
    return new b.Fk(a, c)
};
b.ag = b.G.extend({
    Cp: null,
    Fp: null,
    Dp: null,
    Ep: null,
    ctor: function() {
        var a = this;
        b.G.prototype.ctor.call(this, b.G.ki, b.ag.fb,
        function(c) {
            var d = b.tb;
            switch (c.lx) {
            case d.Av:
                a.Cp && a.Cp(c);
                break;
            case d.br:
                a.Fp && a.Fp(c);
                break;
            case d.Lv:
                a.Dp && a.Dp(c);
                break;
            case d.Vq:
                a.Ep && a.Ep(c)
            }
        })
    },
    d: function() {
        var a = new b.ag;
        a.Cp = this.Cp;
        a.Fp = this.Fp;
        a.Dp = this.Dp;
        a.Ep = this.Ep;
        return a
    },
    Eg: function() {
        return ! 0
    }
});
b.ag.fb = "__cc_mouse";
b.ag.create = function() {
    return new b.ag
};
b.ye = b.G.extend({
    xi: null,
    Tj: !1,
    cf: null,
    Uh: null,
    Th: null,
    Sh: null,
    ctor: function() {
        b.G.prototype.ctor.call(this, b.G.li, b.ye.fb, null);
        this.xi = []
    },
    QY: function(a) {
        this.Tj = a
    },
    d: function() {
        var a = new b.ye;
        a.cf = this.cf;
        a.Uh = this.Uh;
        a.Th = this.Th;
        a.Sh = this.Sh;
        a.Tj = this.Tj;
        return a
    },
    Eg: function() {
        return this.cf ? !0 : (b.log(b.c.$E), !1)
    }
});
b.ye.fb = "__cc_touch_one_by_one";
b.ye.create = function() {
    return new b.ye
};
b.xe = b.G.extend({
    am: null,
    cm: null,
    Ij: null,
    bm: null,
    ctor: function() {
        b.G.prototype.ctor.call(this, b.G.en, b.xe.fb, null)
    },
    d: function() {
        var a = new b.xe;
        a.am = this.am;
        a.cm = this.cm;
        a.Ij = this.Ij;
        a.bm = this.bm;
        return a
    },
    Eg: function() {
        return null == this.am && null == this.cm && null == this.Ij && null == this.bm ? (b.log(b.c.ZE), !1) : !0
    }
});
b.xe.fb = "__cc_touch_all_at_once";
b.xe.create = function() {
    return new b.xe
};
b.G.create = function(a) {
    b.assert(a && a.event, b.c.wC);
    var c = a.event;
    delete a.event;
    var d = null;
    c === b.G.li ? d = new b.ye: c === b.G.en ? d = new b.xe: c === b.G.ki ? d = new b.ag: c === b.G.ak ? (d = new b.Fk(a.FJ, a.Yt), delete a.FJ, delete a.Yt) : c === b.G.ji ? d = new b.$f: c === b.G.ei && (d = new b.Zf(a.Yt), delete a.Yt);
    for (var e in a) d[e] = a[e];
    return d
};
b.qz = function(a) {
    var c, d = a.length,
    e = Array(d);
    for (c = 0; c < d; c += 1) e[c] = a[c];
    return e
};
b.aF = b.oa.extend({
    ld: null,
    qd: null,
    Sz: 0,
    ctor: function() {
        this.ld = [];
        this.qd = []
    },
    size: function() {
        return this.ld.length + this.qd.length
    },
    empty: function() {
        return 0 === this.ld.length && 0 === this.qd.length
    },
    push: function(a) {
        0 == a.mg ? this.qd.push(a) : this.ld.push(a)
    },
    SI: function() {
        this.qd.length = 0
    },
    RI: function() {
        this.ld.length = 0
    },
    clear: function() {
        this.qd.length = 0;
        this.ld.length = 0
    },
    fU: function() {
        return this.ld
    },
    NU: function() {
        return this.qd
    }
});
b.jn = function(a) {
    var c = b.eb,
    d = a.Bg;
    if (d === c.ei) return b.Zf.fb;
    if (d === c.ak) return a.Qr;
    if (d === c.ji) return b.$f.fb;
    if (d === c.ki) return b.ag.fb;
    d === c.dn && b.log(b.c.jn);
    return ""
};
b.I = {
    kq: 0,
    qm: 1,
    dk: 2,
    TO: 3,
    Jd: {},
    pl: {},
    Oe: {},
    mo: {},
    yx: {},
    lj: [],
    Rk: [],
    gh: 0,
    Ri: !1,
    Sx: 0,
    GG: [b.Va.tm, b.Va.ek],
    Bo: function(a) {
        null != this.Oe[a.L] && this.Rk.push(a);
        a = a.s;
        for (var c = 0,
        d = a.length; c < d; c++) this.Bo(a[c])
    },
    Lj: function(a, c) {
        var d = this.Oe[a.L],
        e,
        f;
        if (d) for (e = 0, f = d.length; e < f; e++) d[e].dt(!0);
        if (!0 === c) for (d = a.s, e = 0, f = d.length; e < f; e++) this.Lj(d[e], !0)
    },
    Qf: function(a, c) {
        var d = this.Oe[a.L],
        e,
        f;
        if (d) for (e = 0, f = d.length; e < f; e++) d[e].dt(!1);
        this.Bo(a);
        if (!0 === c) for (d = a.s, e = 0, f = d.length; e < f; e++) this.Qf(d[e], !0)
    },
    ow: function(a) {
        0 === this.gh ? this.qx(a) : this.lj.push(a)
    },
    qx: function(a) {
        var c = a.Me,
        d = this.Jd[c];
        d || (d = new b.aF, this.Jd[c] = d);
        d.push(a);
        0 == a.mg ? (this.qh(c, this.dk), c = a.Sc, null == c && b.log(b.c.yJ), this.oF(c, a), c.Re && this.Qf(c)) : this.qh(c, this.qm)
    },
    bs: function(a) {
        return this.Jd[a]
    },
    bI: function() {
        if (0 != this.Rk.length) {
            for (var a = this.Rk,
            c, d, e = this.Oe,
            f = 0,
            g = a.length; f < g; f++) if (c = e[a[f].L]) for (var h = 0,
            k = c.length; h < k; h++)(d = c[h]) && this.qh(d.Me, this.dk);
            this.Rk.length = 0
        }
    },
    ly: function(a) {
        if (a) for (var c, d = 0; d < a.length;) c = a[d],
        c.sl(!1),
        null != c.Sc && (this.Ew(c.Sc, c), c.tl(null)),
        0 === this.gh ? b.Wc(a, c) : ++d
    },
    mh: function(a) {
        var c = this.Jd[a];
        if (c) {
            var d = c.ld;
            this.ly(c.qd);
            this.ly(d);
            delete this.pl[a];
            this.gh || (c.clear(), delete this.Jd[a])
        }
        for (var d = this.lj,
        e, c = 0; c < d.length;)(e = d[c]) && e.Me == a ? b.Wc(d, e) : ++c
    },
    lt: function(a) {
        var c = this.kq,
        d = this.pl;
        d[a] && (c = d[a]);
        c != this.kq && (d[a] = this.kq, c & this.qm && this.RH(a), c & this.dk && ((c = b.Qa.Ib) ? this.TH(a, c) : d[a] = this.dk))
    },
    TH: function(a, c) {
        var d = this.bs(a);
        if (d) {
            var e = d.qd;
            e && 0 !== e.length && (this.Sx = 0, this.mo = {},
            this.Nt(c, !0), d.qd.sort(this.QH))
        }
    },
    QH: function(a, c) {
        var d = b.I.mo;
        return d[c.Sc.L] - d[a.Sc.L]
    },
    RH: function(a) {
        if (a = this.Jd[a]) {
            var c = a.ld;
            if (c && 0 !== c.length) {
                c.sort(this.SH);
                for (var d = 0,
                e = c.length; d < e && !(0 <= c[d].mg);)++d;
                a.Sz = d
            }
        }
    },
    SH: function(a, c) {
        return a.mg - c.mg
    },
    xs: function(a) {
        if (a = this.Jd[a]) {
            var c = a.ld,
            d = a.qd,
            e, f;
            if (d) for (e = 0; e < d.length;) f = d[e],
            f.pd ? ++e: b.Wc(d, f);
            if (c) for (e = 0; e < c.length;) f = c[e],
            f.pd ? ++e: b.Wc(c, f);
            d && 0 === d.length && a.SI();
            c && 0 === c.length && a.RI()
        }
    },
    So: function(a) {
        var c = this.gh;
        b.assert(0 < c, b.c.xC);
        a.Bg == b.eb.dn ? (this.xs(b.ye.fb), this.xs(b.xe.fb)) : this.xs(b.jn(a));
        if (! (1 < c)) {
            b.assert(1 == c, b.c.yC);
            a = this.Jd;
            var c = this.pl,
            d;
            for (d in a) a[d].empty() && (delete c[d], delete a[d]);
            d = this.lj;
            if (0 !== d.length) {
                a = 0;
                for (c = d.length; a < c; a++) this.qx(d[a]);
                this.lj.length = 0
            }
        }
    },
    $G: function(a, c) {
        if (!a.HG) return ! 1;
        var d = c.event,
        e = c.QA;
        d.Zs(a.Sc);
        var f = !1,
        g, h = d.jg,
        k = b.Dd.ii;
        h == k.Xp ? a.cf && (f = a.cf(e, d)) && a.pd && a.xi.push(e) : 0 < a.xi.length && -1 != (g = a.xi.indexOf(e)) && (f = !0, h === k.yq && a.Uh ? a.Uh(e, d) : h === k.nq ? (a.Th && a.Th(e, d), a.pd && a.xi.splice(g, 1)) : h === k.dq && (a.Sh && a.Sh(e, d), a.pd && a.xi.splice(g, 1)));
        return d.ih ? (b.I.So(d), !0) : f && a.pd && a.Tj ? (c.zL && c.touches.splice(e, 1), !0) : !1
    },
    FF: function(a) {
        this.lt(b.ye.fb);
        this.lt(b.xe.fb);
        var c = this.bs(b.ye.fb),
        d = this.bs(b.xe.fb);
        if (null != c || null != d) {
            var e = a.Ag,
            f = b.qz(e),
            g = {
                event: a,
                zL: c && d,
                touches: f,
                QA: null
            };
            if (c) for (var h = 0; h < e.length; h++) if (g.QA = e[h], this.Jr(c, this.$G, g), a.ih) return;
            if (d && 0 < f.length && (this.Jr(d, this.aH, {
                event: a,
                touches: f
            }), a.ih)) return;
            this.So(a)
        }
    },
    aH: function(a, c) {
        if (!a.pd) return ! 1;
        var d = b.Dd.ii,
        e = c.event,
        f = c.touches,
        g = e.jg;
        e.Zs(a.Sc);
        g == d.Xp && a.am ? a.am(f, e) : g == d.yq && a.cm ? a.cm(f, e) : g == d.nq && a.Ij ? a.Ij(f, e) : g == d.dq && a.bm && a.bm(f, e);
        return e.ih ? (b.I.So(e), !0) : !1
    },
    oF: function(a, c) {
        var d = this.Oe[a.L];
        d || (d = [], this.Oe[a.L] = d);
        d.push(c)
    },
    Ew: function(a, c) {
        var d = this.Oe[a.L];
        d && (b.Wc(d, c), 0 === d.length && delete this.Oe[a.L])
    },
    Jr: function(a, c, d) {
        var e = !1,
        f = a.ld,
        g = a.qd,
        h = 0,
        k;
        if (f && 0 !== f.length) for (; h < a.Sz; ++h) if (k = f[h], k.isEnabled() && !k.$a && k.pd && c(k, d)) {
            e = !0;
            break
        }
        if (g && !e) for (a = 0; a < g.length; a++) if (k = g[a], k.isEnabled() && !k.$a && k.pd && c(k, d)) {
            e = !0;
            break
        }
        if (f && !e) for (; h < f.length && (k = f[h], !k.isEnabled() || k.$a || !k.pd || !c(k, d)); ++h);
    },
    qh: function(a, c) {
        var d = this.pl;
        d[a] = null == d[a] ? c: c | d[a]
    },
    Nt: function(a, c) {
        var d = a.s,
        e = 0,
        f = d.length,
        g = this.yx,
        h = this.Oe;
        if (0 < f) {
            for (var k; e < f; e++) if ((k = d[e]) && 0 > k.Ia) this.Nt(k, !1);
            else break;
            null != h[a.L] && (g[a.of] || (g[a.of] = []), g[a.of].push(a.L));
            for (; e < f; e++)(k = d[e]) && this.Nt(k, !1)
        } else null != h[a.L] && (g[a.of] || (g[a.of] = []), g[a.of].push(a.L));
        if (c) {
            var d = [],
            m;
            for (m in g) d.push(m);
            d.sort(this.UH);
            m = d.length;
            k = this.mo;
            for (e = 0; e < m; e++) for (f = g[d[e]], h = 0; h < f.length; h++) k[f[h]] = ++this.Sx;
            this.yx = {}
        }
    },
    UH: function(a, c) {
        return a - c
    },
    addListener: function(a, c) {
        b.assert(a && c, b.c.AJ);
        if (! (a instanceof b.G)) b.assert("number" !== typeof c, b.c.BJ),
        a = b.G.create(a);
        else if (a.pd) {
            b.log(b.c.CJ);
            return
        }
        a.Eg() && ("number" == typeof c ? 0 == c ? b.log(b.c.zJ) : (a.tl(null), a.$s(c), a.sl(!0), a.dt(!1), this.ow(a)) : (a.tl(c), a.$s(0), a.sl(!0), this.ow(a)))
    },
    Tt: function(a, c) {
        var d = b.Fk.create(a, c);
        this.addListener(d, 1);
        return d
    },
    removeListener: function(a) {
        if (null != a) {
            var c, d = this.Jd,
            e;
            for (e in d) {
                var f = d[e],
                g = f.ld; (c = this.my(f.qd, a)) ? this.qh(a.Me, this.dk) : (c = this.my(g, a)) && this.qh(a.Me, this.qm);
                f.empty() && (delete this.pl[a.Me], delete d[e]);
                if (c) break
            }
            if (!c) for (c = this.lj, d = 0, e = c.length; d < e; d++) if (f = c[d], f == a) {
                b.Wc(c, f);
                break
            }
        }
    },
    my: function(a, c) {
        if (null == a) return ! 1;
        for (var d = 0,
        e = a.length; d < e; d++) {
            var f = a[d];
            if (f == c) return f.sl(!1),
            null != f.Sc && (this.Ew(f.Sc, f), f.tl(null)),
            0 == this.gh && b.Wc(a, f),
            !0
        }
        return ! 1
    },
    EA: function(a, c) {
        if (a instanceof b.m) {
            delete this.mo[a.L];
            b.Wc(this.Rk, a);
            var d = this.Oe[a.L];
            if (d) {
                for (var e = b.qz(d), d = 0; d < e.length; d++) this.removeListener(e[d]);
                e.length = 0;
                e = this.lj;
                for (d = 0; d < e.length;) {
                    var f = e[d];
                    f.Sc == a ? (f.tl(null), f.sl(!1), e.splice(d, 1)) : ++d
                }
                if (!0 === c) for (e = a.s, d = 0, f = e.length; d < f; d++) this.EA(e[d], !0)
            }
        } else a == b.G.li ? this.mh(b.ye.fb) : a == b.G.en ? this.mh(b.xe.fb) : a == b.G.ki ? this.mh(b.ag.fb) : a == b.G.ei ? this.mh(b.Zf.fb) : a == b.G.ji ? this.mh(b.$f.fb) : b.log(b.c.DJ)
    },
    zX: function(a) {
        this.mh(a)
    },
    sX: function() {
        var a = this.Jd,
        c = this.GG,
        d;
        for (d in a) - 1 === c.indexOf(d) && this.mh(d)
    },
    HY: function(a, c) {
        if (null != a) {
            var d = this.Jd,
            e;
            for (e in d) {
                var f = d[e].ld;
                if (f && -1 != f.indexOf(a)) {
                    null != a.Sc && b.log(b.c.EJ);
                    a.mg !== c && (a.$s(c), this.qh(a.Me, this.qm));
                    break
                }
            }
        }
    },
    Mp: function(a) {
        this.Ri = a
    },
    isEnabled: function() {
        return this.Ri
    },
    dispatchEvent: function(a) {
        if (this.Ri) {
            this.bI();
            this.gh++;
            if (!a || !a.FK) throw "event is undefined";
            if (a.Bg == b.eb.dn) this.FF(a);
            else {
                var c = b.jn(a);
                this.lt(c);
                c = this.Jd[c];
                null != c && this.Jr(c, this.XG, a);
                this.So(a)
            }
            this.gh--
        }
    },
    XG: function(a, c) {
        c.Zs(a.Sc);
        a.ws(c);
        return c.ih
    },
    xS: function(a, c) {
        var d = new b.kf(a);
        d.setUserData(c);
        this.dispatchEvent(d)
    }
};
b.vC = b.eb.extend({
    kw: null,
    ctor: function(a) {
        b.eb.prototype.ctor.call(this, b.eb.ei);
        this.kw = a
    }
});
b.Ev = b.eb.extend({
    ms: 0,
    Hx: !1,
    ctor: function(a, c) {
        b.eb.prototype.ctor.call(this, b.eb.ji);
        this.ms = a;
        this.Hx = c
    }
});
b.Zf = b.G.extend({
    oo: null,
    ctor: function(a) {
        this.oo = a;
        var c = this;
        b.G.prototype.ctor.call(this, b.G.ei, b.Zf.fb,
        function(a) {
            c.oo(a.kw, a)
        })
    },
    Eg: function() {
        b.assert(this.oo, b.c.XE);
        return ! 0
    },
    d: function() {
        return new b.Zf(this.oo)
    }
});
b.Zf.fb = "__cc_acceleration";
b.Zf.create = function(a) {
    return new b.Zf(a)
};
b.$f = b.G.extend({
    Zl: null,
    $l: null,
    ctor: function() {
        var a = this;
        b.G.prototype.ctor.call(this, b.G.ji, b.$f.fb,
        function(c) {
            c.Hx ? a.Zl && a.Zl(c.ms, c) : a.$l && a.$l(c.ms, c)
        })
    },
    d: function() {
        var a = new b.$f;
        a.Zl = this.Zl;
        a.$l = this.$l;
        return a
    },
    Eg: function() {
        return null == this.Zl && null == this.$l ? (b.log(b.c.YE), !1) : !0
    }
});
b.$f.fb = "__cc_keyboard";
b.$f.create = function() {
    return new b.$f
};
b.p.fr = function() {
    var a = b.m.prototype;
    a.Py = null;
    a.st = null;
    a.es = null;
    a.ti = null;
    a.ctor = function() {
        this.gs();
        var a = new b.re;
        a.Sd[2] = a.Sd[3] = a.Sd[6] = a.Sd[7] = a.Sd[8] = a.Sd[9] = a.Sd[11] = a.Sd[14] = 0;
        a.Sd[10] = a.Sd[15] = 1;
        this.Py = a;
        this.es = 0;
        this.st = new b.re
    };
    a.W = function() { ! 1 === this.Ff && (this.Ff = this.bo = !0)
    };
    a.Ba = function() {
        if (this.Gc) {
            var a = b.l,
            d, e = b.ZI;
            e.stack.push(e.top);
            b.MV(this.st, e.top);
            e.top = this.st;
            var f = this.zj;
            f && f.fF && f.HI();
            this.transform();
            var g = this.s;
            if (g && 0 < g.length) {
                var h = g.length;
                this.vc();
                for (d = 0; d < h; d++) if (g[d] && 0 > g[d].Ia) g[d].Ba();
                else break;
                for (this.na(a); d < h; d++) g[d] && g[d].Ba()
            } else this.na(a);
            this.arrivalOrder = 0;
            f && f.fF && f.nI(this);
            e.top = e.stack.pop()
        }
    };
    a.transform = function() {
        var a = this.Py,
        d = b.ZI.top,
        e = this.Yl(),
        f = a.Sd;
        f[0] = e.a;
        f[4] = e.J;
        f[12] = e.Z;
        f[1] = e.b;
        f[5] = e.P;
        f[13] = e.$;
        f[14] = this.Wo;
        b.rL(d, d, a);
        null == this.ti || null != this.zj && this.zj.fA() || (a = this.lb.x, d = this.lb.y, 0 !== a || 0 !== d ? (b.Yv || (a |= 0, d |= 0), b.pL(a, d, 0), this.ti.nA(), b.pL( - a, -d, 0)) : this.ti.nA())
    };
    a.Xe = a.hG
};
b.p.Fq = function() {
    var a = b.m.prototype;
    b.k(a, "x", a.sK, a.UM);
    b.k(a, "y", a.tK, a.VM);
    b.k(a, "width", a.Ie, a.Bf);
    b.k(a, "height", a.fh, a.Af);
    b.k(a, "anchorX", a.TF, a.Ws);
    b.k(a, "anchorY", a.UF, a.Xs);
    b.k(a, "skewX", a.AK, a.aN);
    b.k(a, "skewY", a.BK, a.bN);
    b.k(a, "zIndex", a.iK, a.aB);
    b.k(a, "vertexZ", a.JK, a.jN);
    b.k(a, "rotation", a.xK, a.YM);
    b.k(a, "rotationX", a.yK, a.ZM);
    b.k(a, "rotationY", a.zK, a.$M);
    b.k(a, "scale", a.Kz, a.Og);
    b.k(a, "scaleX", a.Lz, a.Qp);
    b.k(a, "scaleY", a.Mz, a.gv);
    b.k(a, "children", a.SJ);
    b.k(a, "childrenCount", a.TJ);
    b.k(a, "parent", a.getParent, a.bB);
    b.k(a, "visible", a.fL, a.te);
    b.k(a, "running", a.dL);
    b.k(a, "ignoreAnchor", a.bL, a.Gu);
    b.k(a, "actionManager", a.mp, a.RA);
    b.k(a, "scheduler", a.Ig, a.eB);
    b.k(a, "shaderProgram", a.xu, a.hv);
    b.k(a, "glServerState", a.cK, a.KM);
    b.k(a, "opacity", a.wj, a.Ga);
    b.k(a, "opacityModifyRGB", a.Dj, a.Ng);
    b.k(a, "cascadeOpacity", a.hA, a.VA);
    b.k(a, "color", a.Nh, a.V);
    b.k(a, "cascadeColor", a.gA, a.UA)
};
b.Mv = -1;
b.$u = 1;
b.m = b.oa.extend({
    Ia: 0,
    of: 0,
    Wo: 0,
    yf: 0,
    oh: 0,
    O: 1,
    ma: 1,
    ja: null,
    ie: 0,
    je: 0,
    s: null,
    Gc: !0,
    Ab: null,
    lb: null,
    v: null,
    Re: !1,
    Db: null,
    rf: !1,
    tag: b.Mv,
    userData: null,
    userObject: null,
    Ff: !0,
    bo: !0,
    Ce: !0,
    Ok: null,
    wR: null,
    wh: null,
    Dx: null,
    bc: !1,
    Jb: null,
    arrivalOrder: 0,
    Fd: null,
    rd: null,
    YQ: null,
    Cx: !1,
    Ik: !1,
    on: null,
    gg: null,
    ls: !1,
    $i: 0,
    zo: 0,
    Mc: "Node",
    jt: !1,
    Xi: "",
    sa: 255,
    Md: 255,
    Q: null,
    ac: null,
    $d: !1,
    De: !1,
    yR: !1,
    fR: 0,
    gs: function() {
        this.Ab = C(0, 0);
        this.lb = C(0, 0);
        this.v = D(0, 0);
        this.ja = C(0, 0);
        this.s = [];
        this.wh = {
            a: 1,
            b: 0,
            J: 0,
            P: 1,
            Z: 0,
            $: 0
        };
        var a = b.Qa;
        this.Fd = a.mp();
        this.rd = a.Ig();
        this.Cx = !0;
        this.on = {
            a: 1,
            b: 0,
            J: 0,
            P: 1,
            Z: 0,
            $: 0
        };
        b.bC && (this.gg = new b.bC(this));
        this.Md = this.sa = 255;
        this.Q = b.color(255, 255, 255, 255);
        this.ac = b.color(255, 255, 255, 255);
        this.De = this.$d = !1
    },
    ga: function() { ! 1 === this.Cx && this.gs();
        return ! 0
    },
    Gd: function(a, c) {
        if (a && 0 !== a.length) {
            var d, e = a.length,
            f;
            d = b.m.bd;
            switch (c) {
            case d.se:
                for (d = 0; d < e; d++)(f = a[d]) && f.se();
                break;
            case d.vd:
                for (d = 0; d < e; d++)(f = a[d]) && f.vd();
                break;
            case d.Hj:
                for (d = 0; d < e; d++)(f = a[d]) && f.Hj();
                break;
            case d.If:
                for (d = 0; d < e; d++)(f = a[d]) && f.If();
                break;
            case d.$c:
                for (d = 0; d < e; d++)(f = a[d]) && f.$c();
                break;
            case d.Nf:
                for (d = 0; d < e; d++)(f = a[d]) && f.Nf();
                break;
            case d.vc:
                for (d = 0; d < e; d++)(f = a[d]) && f.vc();
                break;
            default:
                b.assert(0, b.c.QC)
            }
        }
    },
    W: null,
    dc: function(a) {
        for (var c in a) this[c] = a[c]
    },
    AK: function() {
        return this.ie
    },
    aN: function(a) {
        this.ie = a;
        this.W()
    },
    BK: function() {
        return this.je
    },
    bN: function(a) {
        this.je = a;
        this.W()
    },
    aB: function(a) {
        this.Ia = a;
        this.Db && this.Db.im(this, a);
        b.I.Bo(this)
    },
    Ay: function(a) {
        this.Ia = a
    },
    iK: function() {
        return this.Ia
    },
    hV: function() {
        b.log(b.c.WC);
        return this.Ia
    },
    aZ: function(a) {
        b.log(b.c.gD);
        this.aB(a)
    },
    sY: function(a) {
        this.of != a && (this.of = a, b.I.Bo(this))
    },
    kU: function() {
        return this.of
    },
    JK: function() {
        return this.Wo
    },
    jN: function(a) {
        this.Wo = a
    },
    xK: function() {
        this.yf !== this.oh && b.log(b.c.UC);
        return this.yf
    },
    YM: function(a) {
        this.yf = this.oh = a;
        this.$i = 0.017453292519943295 * this.yf;
        this.zo = 0.017453292519943295 * this.oh;
        this.W()
    },
    yK: function() {
        return this.yf
    },
    ZM: function(a) {
        this.yf = a;
        this.$i = 0.017453292519943295 * this.yf;
        this.W()
    },
    zK: function() {
        return this.oh
    },
    $M: function(a) {
        this.oh = a;
        this.zo = 0.017453292519943295 * this.oh;
        this.W()
    },
    Kz: function() {
        this.O !== this.ma && b.log(b.c.VC);
        return this.O
    },
    Og: function(a, c) {
        this.O = a;
        this.ma = c || 0 === c ? c: a;
        this.W()
    },
    Lz: function() {
        return this.O
    },
    Qp: function(a) {
        this.O = a;
        this.W()
    },
    Mz: function() {
        return this.ma
    },
    gv: function(a) {
        this.ma = a;
        this.W()
    },
    Ma: function(a, c) {
        var d = this.ja;
        void 0 === c ? (d.x = a.x, d.y = a.y) : (d.x = a, d.y = c);
        this.W()
    },
    EU: function() {
        return C(this.ja)
    },
    sK: function() {
        return this.ja.x
    },
    UM: function(a) {
        this.ja.x = a;
        this.W()
    },
    tK: function() {
        return this.ja.y
    },
    VM: function(a) {
        this.ja.y = a;
        this.W()
    },
    TJ: function() {
        return this.s.length
    },
    SJ: function() {
        return this.s
    },
    fL: function() {
        return this.Gc
    },
    te: function(a) {
        this.Gc != a && (this.Gc = a) && this.W()
    },
    FT: function() {
        return C(this.Ab)
    },
    Qj: function(a, c) {
        var d = this.Ab;
        if (void 0 === c) {
            if (a.x === d.x && a.y === d.y) return;
            d.x = a.x;
            d.y = a.y
        } else {
            if (a === d.x && c === d.y) return;
            d.x = a;
            d.y = c
        }
        var e = this.lb,
        f = this.v;
        e.x = f.width * d.x;
        e.y = f.height * d.y;
        this.W()
    },
    $Q: function() {
        return this.Ab
    },
    zy: function(a) {
        var c = a.x;
        a = a.y;
        this.Ab.x !== c && (this.Ab.x = c, this.lb.x = this.v.width * c);
        this.Ab.y !== a && (this.Ab.y = a, this.lb.y = this.v.height * a);
        this.W()
    },
    TF: function() {
        return this.Ab.x
    },
    Ws: function(a) {
        this.Ab.x !== a && (this.Ab.x = a, this.lb.x = this.v.width * a, this.W())
    },
    UF: function() {
        return this.Ab.y
    },
    Xs: function(a) {
        this.Ab.y !== a && (this.Ab.y = a, this.lb.y = this.v.height * a, this.W())
    },
    qu: function() {
        return C(this.lb)
    },
    Ie: function() {
        return this.v.width
    },
    Bf: function(a) {
        this.v.width = a;
        this.lb.x = a * this.Ab.x;
        this.W()
    },
    fh: function() {
        return this.v.height
    },
    Af: function(a) {
        this.v.height = a;
        this.lb.y = a * this.Ab.y;
        this.W()
    },
    ud: function() {
        return D(this.v)
    },
    wd: function(a, c) {
        var d = this.v;
        if (void 0 === c) {
            if (a.width === d.width && a.height === d.height) return;
            d.width = a.width;
            d.height = a.height
        } else {
            if (a === d.width && c === d.height) return;
            d.width = a;
            d.height = c
        }
        var e = this.lb,
        f = this.Ab;
        e.x = d.width * f.x;
        e.y = d.height * f.y;
        this.W()
    },
    dL: function() {
        return this.Re
    },
    getParent: function() {
        return this.Db
    },
    bB: function(a) {
        this.Db = a
    },
    bL: function() {
        return this.rf
    },
    Gu: function(a) {
        a != this.rf && (this.rf = a, this.W())
    },
    yu: function() {
        return this.tag
    },
    gB: function(a) {
        this.tag = a
    },
    PM: function(a) {
        this.Xi = a
    },
    getName: function() {
        return this.Xi
    },
    getUserData: function() {
        return this.userData
    },
    setUserData: function(a) {
        this.userData = a
    },
    cV: function() {
        return this.userObject
    },
    YY: function(a) {
        this.userObject != a && (this.userObject = a)
    },
    zU: function() {
        return this.arrivalOrder
    },
    RM: function(a) {
        if (NaN == this.arrivalOrder) debugger;
        this.arrivalOrder = a
    },
    mp: function() {
        this.Fd || (this.Fd = b.Qa.mp());
        return this.Fd
    },
    RA: function(a) {
        this.Fd != a && (this.km(), this.Fd = a)
    },
    Ig: function() {
        this.rd || (this.rd = b.Qa.Ig());
        return this.rd
    },
    eB: function(a) {
        this.rd != a && (this.Tp(), this.rd = a)
    },
    YR: function() {
        b.log(b.c.SC);
        return this.RJ()
    },
    RJ: function() {
        return b.jH(E(0, 0, this.v.width, this.v.height), this.Xe())
    },
    If: function() {
        this.km();
        this.Tp();
        b.I.EA(this);
        this.Gd(this.s, b.m.bd.If)
    },
    Od: function(a) {
        var c = this.s;
        if (null != c) for (var d = 0; d < c.length; d++) {
            var e = c[d];
            if (e && e.tag == a) return e
        }
        return null
    },
    PT: function(a) {
        if (!a) return b.log("Invalid name"),
        null;
        for (var c = this.s,
        d = 0,
        e = c.length; d < e; d++) if (c[d].Xi == a) return c[d];
        return null
    },
    N: function(a, c, d) {
        c = void 0 === c ? a.Ia: c;
        var e, f = !1;
        switch (typeof d) {
        case "undefined":
            d = void 0;
            e = a.Xi;
            break;
        case "string":
            e = d;
            d = void 0;
            break;
        case "number":
            f = !0,
            e = ""
        }
        b.assert(a, b.c.RC);
        b.assert(null === a.Db, "child already added. It can't be added again");
        this.kI(a, c, d, e, f)
    },
    kI: function(a, c, d, e, f) {
        this.s || (this.s = []);
        this.DG(a, c);
        f ? a.gB(d) : a.PM(e);
        a.bB(this);
        a.RM(b.$u++);
        this.Re && (a.se(), this.ls && a.Hj());
        this.$d && this.jx();
        this.De && this.kx()
    },
    hc: function(a) {
        this.Db && (null == a && (a = !0), this.Db.removeChild(this, a))
    },
    AX: function(a) {
        b.log(b.c.aD);
        this.hc(a)
    },
    removeChild: function(a, c) {
        0 !== this.s.length && (null == c && (c = !0), -1 < this.s.indexOf(a) && this.BF(a, c), this.W())
    },
    xX: function(a, c) {
        a === b.Mv && b.log(b.c.ZC);
        var d = this.Od(a);
        null == d ? b.log(b.c.$C, a) : this.removeChild(d, c)
    },
    qX: function(a) {
        b.log(b.c.YC);
        this.df(a)
    },
    df: function(a) {
        var c = this.s;
        if (null != c) {
            null == a && (a = !0);
            for (var d = 0; d < c.length; d++) {
                var e = c[d];
                e && (this.Re && (e.Nf(), e.vd()), a && e.If(), e.parent = null)
            }
            this.s.length = 0
        }
    },
    BF: function(a, c) {
        this.Re && (a.Nf(), a.vd());
        c && a.If();
        a.parent = null;
        b.Wc(this.s, a)
    },
    DG: function(a, c) {
        this.bc = !0;
        this.s.push(a);
        a.Ay(c)
    },
    im: function(a, c) {
        b.assert(a, b.c.bD);
        this.bc = !0;
        a.arrivalOrder = b.$u;
        b.$u++;
        a.Ay(c);
        this.W()
    },
    vc: function() {
        if (this.bc) {
            var a = this.s,
            c = a.length,
            d, e, f;
            for (d = 1; d < c; d++) {
                f = a[d];
                for (e = d - 1; 0 <= e;) {
                    if (f.Ia < a[e].Ia) a[e + 1] = a[e];
                    else if (f.Ia === a[e].Ia && f.arrivalOrder < a[e].arrivalOrder) a[e + 1] = a[e];
                    else break;
                    e--
                }
                a[e + 1] = f
            }
            this.bc = !1
        }
    },
    na: function() {},
    vB: function() {
        null != this.Db && (this.Db.vB(), this.Db.transform())
    },
    se: function() {
        this.ls = !1;
        this.Re = !0;
        this.Gd(this.s, b.m.bd.se);
        this.Oj()
    },
    Hj: function() {
        this.ls = !0;
        this.Gd(this.s, b.m.bd.Hj)
    },
    Nf: function() {
        this.Gd(this.s, b.m.bd.Nf)
    },
    vd: function() {
        this.Re = !1;
        this.pause();
        this.Gd(this.s, b.m.bd.vd)
    },
    Kc: function(a) {
        b.assert(a, b.c.dD);
        this.actionManager.jI(a, this, !this.Re);
        return a
    },
    km: function() {
        this.actionManager && this.actionManager.DA(this)
    },
    kv: function(a) {
        this.actionManager.CA(a)
    },
    fZ: function(a) {
        a === b.fi ? b.log(b.c.hD) : this.actionManager.ZL(a, this)
    },
    Bz: function(a) {
        return a === b.fi ? (b.log(b.c.TC), null) : this.actionManager.Bz(a, this)
    },
    wU: function() {
        return this.actionManager.BL(this)
    },
    rM: function() {
        this.sM(0)
    },
    sM: function(a) {
        this.scheduler.bv(this, a, !this.Re)
    },
    AB: function() {
        this.scheduler.nm(this)
    },
    av: function(a, c, d, e) {
        c = c || 0;
        b.assert(a, b.c.eD);
        b.assert(0 <= c, b.c.fD);
        d = null == d ? b.Ak: d;
        this.scheduler.qM(this, a, c, d, e || 0, !this.Re)
    },
    PX: function(a, c) {
        this.av(a, 0, 0, c)
    },
    xB: function(a) {
        a && this.scheduler.zB(this, a)
    },
    Tp: function() {
        this.scheduler.yB(this)
    },
    KX: function() {
        b.log(b.c.cD);
        this.Oj()
    },
    Oj: function() {
        this.scheduler.Qf(this);
        this.actionManager && this.actionManager.Qf(this);
        b.I.Qf(this)
    },
    YW: function() {
        b.log(b.c.XC);
        this.pause()
    },
    pause: function() {
        this.scheduler.Lj(this);
        this.actionManager && this.actionManager.Lj(this);
        b.I.Lj(this)
    },
    UX: function(a) {
        this.on = a;
        this.Ik = this.Ff = !0
    },
    rK: function() {
        this.bo && (this.Dx = b.az(this.Xe()), this.bo = !1);
        return this.Dx
    },
    VW: function() {
        return this.rK()
    },
    vu: function() {
        for (var a = this.Xe(), c = this.Db; null != c; c = c.parent) a = b.Eh(a, c.Xe());
        return a
    },
    Bp: function() {
        return this.vu()
    },
    Rz: function() {
        return b.az(this.vu())
    },
    JZ: function() {
        return this.Rz()
    },
    du: function(a) {
        return b.vA(a, this.Rz())
    },
    pz: function(a) {
        a = a || C(0, 0);
        return b.vA(a, this.vu())
    },
    XI: function(a) {
        return b.uc(this.du(a), this.lb)
    },
    kS: function(a) {
        a = a || C(0, 0);
        return this.pz(b.Jj(a, this.lb))
    },
    TQ: function(a) {
        a = this.pz(a);
        return b.Qa.YI(a)
    },
    lS: function(a) {
        return this.du(a.Oh())
    },
    mS: function(a) {
        a = a.Oh();
        a = b.Qa.WI(a);
        return this.XI(a)
    },
    update: function(a) {
        this.gg && !this.gg.yV() && this.gg.Ba(a)
    },
    $c: function() {
        this.Gd(this.s, b.m.bd.$c)
    },
    Zu: function() {},
    Pf: function() {},
    UJ: function(a) {
        return this.gg.UJ(a)
    },
    BR: function(a) {
        this.gg.add(a)
    },
    yX: function(a) {
        return this.gg.remove(a)
    },
    rX: function() {
        this.gg.oX()
    },
    zj: null,
    ctor: null,
    Ba: null,
    transform: null,
    Yl: function() {
        return this.Xe()
    },
    Xe: null,
    aj: function() {
        if (!1 === this.Ce) {
            this.Ce = !0;
            var a = this.Ok;
            a && a != this && a.aj()
        }
    },
    Ys: function(a) {
        if (this.Ok != a) {
            this.Ok = a;
            for (var c = this.s,
            d = 0,
            e = c.length; d < e; d++) c[d].Ys(a)
        }
    },
    ru: function() {
        this.ti || (this.ti = new b.bk);
        return this.ti
    },
    lU: function() {
        return this.zj
    },
    tY: function(a) {
        this.zj = a
    },
    xu: function() {
        return this.Jb
    },
    hv: function(a) {
        this.Jb = a
    },
    cK: function() {
        return this.es
    },
    KM: function(a) {
        this.es = a
    },
    JT: function() {
        var a = E(0, 0, this.v.width, this.v.height),
        c = this.Bp(),
        a = b.Xu(a, this.Bp());
        if (!this.s) return a;
        for (var d = this.s,
        e = 0; e < d.length; e++) {
            var f = d[e];
            f && f.Gc && (f = f.Zk(c)) && (a = b.Ip(a, f))
        }
        return a
    },
    Zk: function(a) {
        var c = E(0, 0, this.v.width, this.v.height);
        a = null == a ? this.Xe() : b.Eh(this.Xe(), a);
        c = b.Xu(c, a);
        if (!this.s) return c;
        for (var d = this.s,
        e = 0; e < d.length; e++) {
            var f = d[e];
            f && f.Gc && (f = f.Zk(a)) && (c = b.Ip(c, f))
        }
        return c
    },
    hG: function() {
        if (this.Ff) {
            var a = this.ja.x,
            c = this.ja.y,
            d = this.lb.x,
            e = -d,
            f = this.lb.y,
            g = -f,
            h = this.O,
            k = this.ma;
            this.rf && (a += d, c += f);
            var m = 1,
            n = 0,
            r = 1,
            s = 0;
            if (0 !== this.yf || 0 !== this.oh) m = Math.cos( - this.$i),
            n = Math.sin( - this.$i),
            r = Math.cos( - this.zo),
            s = Math.sin( - this.zo);
            var u = this.ie || this.je;
            u || 0 === d && 0 === f || (a += r * e * h + -n * g * k, c += s * e * h + m * g * k);
            var t = this.wh;
            t.a = r * h;
            t.b = s * h;
            t.J = -n * k;
            t.P = m * k;
            t.Z = a;
            t.$ = c;
            u && (t = b.Eh({
                a: 1,
                b: Math.tan(b.Gg(this.je)),
                J: Math.tan(b.Gg(this.ie)),
                P: 1,
                Z: 0,
                $: 0
            },
            t), 0 !== d || 0 !== f) && (t = b.mI(t, e, g));
            this.Ik && (t = b.Eh(t, this.on), this.Ik = !1);
            this.wh = t;
            this.Ff = !1
        }
        return this.wh
    },
    Eb: function() {},
    wj: function() {
        return this.Md
    },
    YJ: function() {
        return this.sa
    },
    Ga: function(a) {
        this.sa = this.Md = a;
        var c = 255,
        d = this.Db;
        d && d.cascadeOpacity && (c = d.sa);
        this.kb(c);
        this.Q.a = this.ac.a = a
    },
    kb: function(a) {
        this.sa = this.Md * a / 255;
        if (this.De) {
            a = this.s;
            for (var c = 0; c < a.length; c++) {
                var d = a[c];
                d && d.kb(this.sa)
            }
        }
    },
    hA: function() {
        return this.De
    },
    VA: function(a) {
        this.De !== a && ((this.De = a) ? this.kx() : this.EF())
    },
    kx: function() {
        var a = 255,
        c = this.Db;
        c && c.cascadeOpacity && (a = c.sa);
        this.kb(a)
    },
    EF: function() {
        this.sa = this.Md;
        for (var a = this.s,
        c = 0; c < a.length; c++) {
            var d = a[c];
            d && d.kb(255)
        }
    },
    Nh: function() {
        var a = this.ac;
        return b.color(a.r, a.g, a.b, a.a)
    },
    pp: function() {
        var a = this.Q;
        return b.color(a.r, a.g, a.b, a.a)
    },
    V: function(a) {
        var c = this.Q,
        d = this.ac;
        c.r = d.r = a.r;
        c.g = d.g = a.g;
        c.b = d.b = a.b;
        a = (a = this.Db) && a.cascadeColor ? a.pp() : b.color.WHITE;
        this.sb(a)
    },
    sb: function(a) {
        var c = this.Q,
        d = this.ac;
        c.r = 0 | d.r * a.r / 255;
        c.g = 0 | d.g * a.g / 255;
        c.b = 0 | d.b * a.b / 255;
        if (this.$d) for (a = this.s, d = 0; d < a.length; d++) {
            var e = a[d];
            e && e.sb(c)
        }
    },
    gA: function() {
        return this.$d
    },
    UA: function(a) {
        this.$d !== a && ((this.$d = a) ? this.jx() : this.DF())
    },
    jx: function() {
        var a;
        a = (a = this.Db) && a.cascadeColor ? a.pp() : b.color.WHITE;
        this.sb(a)
    },
    DF: function() {
        var a = this.Q,
        c = this.ac;
        a.r = c.r;
        a.g = c.g;
        a.b = c.b;
        for (var a = this.s,
        c = b.color.WHITE,
        d = 0; d < a.length; d++) {
            var e = a[d];
            e && e.sb(c)
        }
    },
    Ng: function() {},
    Dj: function() {
        return ! 1
    }
});
b.m.create = function() {
    return new b.m
};
b.m.bd = {
    se: 1,
    vd: 2,
    If: 3,
    Hj: 4,
    $c: 5,
    Nf: 6,
    vc: 7
};
b.da === b.Ya ? (p = b.m.prototype, p.ctor = function() {
    this.gs()
},
p.W = function() {
    this.aj(); ! 1 === this.Ff && (this.Ff = this.bo = !0)
},
p.Ba = function(a) {
    if (this.Gc) {
        a = a || b.l;
        var c, d = this.s,
        e;
        a.save();
        this.transform(a);
        var f = d.length;
        if (0 < f) {
            this.vc();
            for (c = 0; c < f; c++) if (e = d[c], 0 > e.Ia) e.Ba(a);
            else break;
            for (this.na(a); c < f; c++) d[c].Ba(a)
        } else this.na(a);
        this.Ce = !1;
        this.arrivalOrder = 0;
        a.restore()
    }
},
p.transform = function(a) {
    a = a || b.l;
    var c = b.view,
    d = this.Xe();
    a.transform(d.a, d.J, d.b, d.P, d.Z * c.O, -d.$ * c.ma)
},
p.Xe = function() {
    if (this.Ff) {
        var a = this.wh;
        a.Z = this.ja.x;
        a.$ = this.ja.y;
        var c = 1,
        d = 0;
        this.yf && (c = Math.cos(this.$i), d = Math.sin(this.$i));
        a.a = a.P = c;
        a.b = -d;
        a.J = d;
        var e = this.O,
        f = this.ma,
        g = this.lb.x,
        h = this.lb.y,
        k = 1E-6 > e && -1E-6 < e ? 1E-6: e,
        m = 1E-6 > f && -1E-6 < f ? 1E-6: f;
        if (this.ie || this.je) {
            var n = Math.tan( - this.ie * Math.PI / 180),
            r = Math.tan( - this.je * Math.PI / 180);
            Infinity === n && (n = 99999999);
            Infinity === r && (r = 99999999);
            var s = h * n * k,
            u = g * r * m;
            a.a = c + -d * r;
            a.b = c * n + -d;
            a.J = d + c * r;
            a.P = d * n + c;
            a.Z += c * s + -d * u;
            a.$ += d * s + c * u
        }
        if (1 !== e || 1 !== f) a.a *= k,
        a.J *= k,
        a.b *= m,
        a.P *= m;
        a.Z += c * -g * k + -d * h * m;
        a.$ -= d * -g * k + c * h * m;
        this.rf && (a.Z += g, a.$ += h);
        this.Ik && (this.wh = b.Eh(a, this.on), this.Ik = !1);
        this.Ff = !1
    }
    return this.wh
},
p = null) : (b.assert("function" === typeof b.p.fr, b.c.Gb, "BaseNodesWebGL.js"), b.p.fr(), delete b.p.fr);
b.assert("function" === typeof b.p.Fq, b.c.Gb, "BaseNodesPropertyDefine.js");
b.p.Fq();
delete b.p.Fq;
b.m.JP = 0;
b.m.LP = 1;
b.m.KP = 2;
b.m.MP = 3;
b.m.IP = 4;
b.hf = b.m.extend({
    textureAtlas: null,
    quadsToDraw: 0,
    Ti: 0,
    Jx: 0,
    Ke: 0,
    de: 0,
    ah: null,
    Da: !1,
    t: null,
    Yn: !1,
    Mc: "AtlasNode",
    ctor: function(a, c, d, e) {
        b.m.prototype.ctor.call(this);
        this.ah = b.color.WHITE;
        this.t = {
            src: b.kc,
            Y: b.jc
        };
        this.Yn = !1;
        void 0 !== e && this.VK(a, c, d, e)
    },
    Vj: function() {
        b.log(b.c.JB)
    },
    Nh: function() {
        return this.Da ? this.ah: b.m.prototype.Nh.call(this)
    },
    Ng: function(a) {
        var c = this.color;
        this.Da = a;
        this.color = c
    },
    Dj: function() {
        return this.Da
    },
    Ml: function() {
        return this.t
    },
    $h: function(a, c) {
        this.t = void 0 === c ? a: {
            src: a,
            Y: c
        }
    },
    hB: function(a) {
        this.textureAtlas = a
    },
    Oz: function() {
        return this.textureAtlas
    },
    IU: function() {
        return this.quadsToDraw
    },
    JY: function(a) {
        this.quadsToDraw = a
    },
    vh: null,
    mb: null,
    Ht: null,
    Pk: null,
    VK: function(a, c, d, e) {
        if (!a) throw "cc.AtlasNode.initWithTileFile(): title should not be null";
        a = b.va.cc(a);
        return this.ia(a, c, d, e)
    },
    ia: null,
    hs: function(a, c, d, e) {
        this.Ke = c;
        this.de = d;
        this.Da = !0;
        this.mb = a;
        if (!this.mb) return b.log(b.c.rv),
        !1;
        this.vh = this.mb;
        this.wn();
        this.quadsToDraw = e;
        return ! 0
    },
    is: function(a, c, d, e) {
        this.Ke = c;
        this.de = d;
        this.ah = b.color.WHITE;
        this.Da = !0;
        this.t.src = b.kc;
        this.t.Y = b.jc;
        c = this.ac;
        this.Pk = new Float32Array([c.r / 255, c.g / 255, c.b / 255, this.Md / 255]);
        this.textureAtlas = new b.mf;
        this.textureAtlas.ia(a, e);
        if (!this.textureAtlas) return b.log(b.c.rv),
        !1;
        this.yh();
        this.Wy();
        this.wn();
        this.quadsToDraw = e;
        this.shaderProgram = b.ff.Of(b.zD);
        this.Ht = b.l.getUniformLocation(this.shaderProgram.Iz(), "u_color");
        return ! 0
    },
    na: null,
    Lr: function(a) {
        a = a || b.l;
        b.pA(this);
        b.Ph(this.t.src, this.t.Y);
        this.Ht && this.Pk && (a.uniform4fv(this.Ht, this.Pk), this.textureAtlas.vz(this.quadsToDraw))
    },
    V: null,
    wH: function(a) {
        var c = this.ac;
        if (c.r != a.r || c.g != a.g || c.b != a.b) {
            c = b.color(a.r, a.g, a.b);
            this.ah = a;
            if (this.Da) {
                var d = this.sa;
                c.r = c.r * d / 255;
                c.g = c.g * d / 255;
                c.b = c.b * d / 255
            }
            b.m.prototype.V.call(this, a);
            this.fd()
        }
    },
    fd: function() {
        var a = this.La();
        if (a && this.mb) {
            var c = this.mb.la;
            if (c) {
                var d = a.la,
                a = E(0, 0, c.width, c.height);
                d instanceof HTMLCanvasElement ? b.tj(c, this.Q, a, d) : (d = b.tj(c, this.Q, a), a = new b.K, a.Mb(d), a.Fa(), this.Wa(a))
            }
        }
    },
    xH: function(a) {
        var c = b.color(a.r, a.g, a.b);
        this.ah = a;
        var d = this.sa;
        this.Da && (c.r = c.r * d / 255, c.g = c.g * d / 255, c.b = c.b * d / 255);
        b.m.prototype.V.call(this, a);
        a = this.Q;
        this.Pk = new Float32Array([a.r / 255, a.g / 255, a.b / 255, d / 255])
    },
    Ga: function() {},
    bt: function(a) {
        b.m.prototype.Ga.call(this, a);
        this.Da && (this.color = this.ah)
    },
    ct: function(a) {
        b.m.prototype.Ga.call(this, a);
        this.Da ? this.color = this.ah: (a = this.Q, this.Pk = new Float32Array([a.r / 255, a.g / 255, a.b / 255, this.sa / 255]))
    },
    La: null,
    cs: function() {
        return this.vh
    },
    ds: function() {
        return this.textureAtlas.texture
    },
    Wa: null,
    gt: function(a) {
        this.vh = a
    },
    ht: function(a) {
        this.textureAtlas.texture = a;
        this.yh();
        this.Wy()
    },
    wn: null,
    rF: function() {
        var a = this.texture.ud();
        this.Jx = 0 | a.height / this.de;
        this.Ti = 0 | a.width / this.Ke
    },
    sF: function() {
        var a = this.texture,
        c = a.ud();
        this.Yn && (c = a.v);
        this.Jx = 0 | c.height / this.de;
        this.Ti = 0 | c.width / this.Ke
    },
    yh: function() {
        this.textureAtlas.texture.Aj() || (this.t.src = b.SRC_ALPHA, this.t.Y = b.ONE_MINUS_SRC_ALPHA)
    },
    Wy: function() {
        this.Da = this.textureAtlas.texture.Aj()
    },
    at: function(a) {
        this.Yn = a
    }
});
p = b.hf.prototype;
b.da === b.wb ? (p.ia = p.is, p.na = p.Lr, p.V = p.xH, p.Ga = p.ct, p.La = p.ds, p.Wa = p.ht, p.wn = p.sF) : (p.ia = p.hs, p.na = b.m.prototype.na, p.V = p.wH, p.Ga = p.bt, p.La = p.cs, p.Wa = p.gt, p.wn = p.rF, b.Aa.wt || (p.fd = function() {
    var a, c = this.La();
    if (c && this.mb && (a = c.la)) {
        var d = this.mb.la;
        if (c = b.va.zu(d)) d = E(0, 0, d.width, d.height),
        a instanceof HTMLCanvasElement ? b.sj(a, c, this.Q, d, a) : (a = b.sj(a, c, this.Q, d), c = new b.K, c.Mb(a), c.Fa(), this.Wa(c))
    }
}));
b.k(p, "opacity", p.wj, p.Ga);
b.k(p, "color", p.Nh, p.V);
b.k(p, "texture", p.La, p.Wa);
b.hf.create = function(a, c, d, e) {
    return new b.hf(a, c, d, e)
};
b.p.lr = function() {
    b.K = b.oa.extend({
        mR: !0,
        Yi: null,
        wf: 0,
        vf: 0,
        Xi: "",
        v: null,
        af: 0,
        bf: 0,
        Xn: !1,
        Ni: !1,
        shaderProgram: null,
        xb: !1,
        la: null,
        Ah: null,
        url: null,
        qa: null,
        ctor: function() {
            this.v = D(0, 0);
            this.Yi = b.K.tz
        },
        Yu: function() {
            this.Ah && b.l.deleteTexture(this.Ah);
            b.D.Pf(this.url)
        },
        Fz: function() {
            return this.Yi
        },
        Hz: function() {
            return this.wf
        },
        Gz: function() {
            return this.vf
        },
        getName: function() {
            return this.Ah
        },
        ud: function() {
            return D(this.v.width / b.Ka(), this.v.height / b.Ka())
        },
        Ie: function() {
            return this.v.width / b.Ka()
        },
        fh: function() {
            return this.v.height / b.Ka()
        },
        VJ: function() {
            return this.v
        },
        mK: function() {
            return this.af
        },
        NM: function(a) {
            this.af = a
        },
        nK: function() {
            return this.bf
        },
        OM: function(a) {
            this.bf = a
        },
        xu: function() {
            return this.shaderProgram
        },
        hv: function(a) {
            this.shaderProgram = a
        },
        Aj: function() {
            return this.Xn
        },
        NK: function() {
            return this.Ni
        },
        description: function() {
            return "\x3ccc.Texture2D | Name \x3d " + this.Xi + " | Dimensions \x3d " + this.wf + " x " + this.vf + " | Coordinates \x3d (" + this.af + ", " + this.bf + ")\x3e"
        },
        YL: function() {},
        jL: function(a) {
            return a
        },
        Xz: function(a, c, d, e, f) {
            var g = b.K,
            h = b.l,
            k = h.RGBA,
            m = h.UNSIGNED_BYTE,
            n = d * b.K.gw[c] / 8;
            0 === n % 8 ? h.pixelStorei(h.UNPACK_ALIGNMENT, 8) : 0 === n % 4 ? h.pixelStorei(h.UNPACK_ALIGNMENT, 4) : 0 === n % 2 ? h.pixelStorei(h.UNPACK_ALIGNMENT, 2) : h.pixelStorei(h.UNPACK_ALIGNMENT, 1);
            this.Ah = h.createTexture();
            b.qe(this);
            h.texParameteri(h.TEXTURE_2D, h.TEXTURE_MIN_FILTER, h.LINEAR);
            h.texParameteri(h.TEXTURE_2D, h.TEXTURE_MAG_FILTER, h.LINEAR);
            h.texParameteri(h.TEXTURE_2D, h.TEXTURE_WRAP_S, h.CLAMP_TO_EDGE);
            h.texParameteri(h.TEXTURE_2D, h.TEXTURE_WRAP_T, h.CLAMP_TO_EDGE);
            switch (c) {
            case g.zk:
                k = h.RGBA;
                break;
            case g.yk:
                k = h.RGB;
                break;
            case g.Wm:
                m = h.UNSIGNED_SHORT_4_4_4_4;
                break;
            case g.Vm:
                m = h.UNSIGNED_SHORT_5_5_5_1;
                break;
            case g.xk:
                m = h.UNSIGNED_SHORT_5_6_5;
                break;
            case g.Cq:
                k = h.LUMINANCE_ALPHA;
                break;
            case g.Um:
                k = h.ALPHA;
                break;
            case g.Dq:
                k = h.LUMINANCE;
                break;
            default:
                b.assert(0, b.c.rE)
            }
            h.texImage2D(h.TEXTURE_2D, 0, k, d, e, 0, k, m, a);
            this.v.width = f.width;
            this.v.height = f.height;
            this.wf = d;
            this.vf = e;
            this.Yi = c;
            this.af = f.width / d;
            this.bf = f.height / e;
            this.Ni = this.Xn = !1;
            this.shaderProgram = b.ff.Of(b.Xv);
            return this.xb = !0
        },
        dJ: function(a) {
            var c = [0, this.bf, this.af, this.bf, 0, 0, this.af, 0],
            d = this.wf * this.af,
            e = this.vf * this.bf;
            a = [a.x, a.y, 0, d + a.x, a.y, 0, a.x, e + a.y, 0, d + a.x, e + a.y, 0];
            b.tc(b.Lc | b.dr);
            this.Jb.wc();
            this.Jb.iB();
            b.qe(this);
            d = b.l;
            d.vertexAttribPointer(b.lc, 2, d.FLOAT, !1, 0, a);
            d.vertexAttribPointer(b.Dk, 2, d.FLOAT, !1, 0, c);
            d.drawArrays(d.TRIANGLE_STRIP, 0, 4)
        },
        fJ: function(a) {
            var c = [0, this.bf, this.af, this.bf, 0, 0, this.af, 0];
            a = [a.x, a.y, a.x + a.width, a.y, a.x, a.y + a.height, a.x + a.width, a.y + a.height];
            b.tc(b.Lc | b.dr);
            this.Jb.wc();
            this.Jb.iB();
            b.qe(this);
            var d = b.l;
            d.vertexAttribPointer(b.lc, 2, d.FLOAT, !1, 0, a);
            d.vertexAttribPointer(b.Dk, 2, d.FLOAT, !1, 0, c);
            d.drawArrays(d.TRIANGLE_STRIP, 0, 4)
        },
        $z: function(a) {
            if (null == a) return b.log(b.c.uE),
            !1;
            var c = a.LK(),
            d = a.dK(),
            e = b.bu.il;
            if (c > e || d > e) return b.log(b.c.vE, c, d, e, e),
            !1;
            this.xb = !0;
            return this.zG(a, c, d)
        },
        Mb: function(a) {
            a && (this.Ah = b.l.createTexture(), this.la = a)
        },
        fK: function() {
            return this.la
        },
        cL: function() {
            return this.xb
        },
        Fa: function() {
            if (b.yo) {
                if (!this.la) {
                    var a = b.D.Yc(this.url);
                    if (!a) return;
                    this.Mb(a)
                }
                this.la.width && this.la.height && (this.xb = !0, a = b.l, b.qe(this), a.pixelStorei(a.UNPACK_ALIGNMENT, 4), a.texImage2D(a.TEXTURE_2D, 0, a.RGBA, a.RGBA, a.UNSIGNED_BYTE, this.la), a.texParameteri(a.TEXTURE_2D, a.TEXTURE_MIN_FILTER, a.LINEAR), a.texParameteri(a.TEXTURE_2D, a.TEXTURE_MAG_FILTER, a.LINEAR), a.texParameteri(a.TEXTURE_2D, a.TEXTURE_WRAP_S, a.CLAMP_TO_EDGE), a.texParameteri(a.TEXTURE_2D, a.TEXTURE_WRAP_T, a.CLAMP_TO_EDGE), this.shaderProgram = b.ff.Of(b.Xv), b.qe(null), a = this.la.height, this.wf = this.v.width = this.la.width, this.vf = this.v.height = a, this.Yi = b.K.zk, this.bf = this.af = 1, this.Ni = this.Xn = !1, this.Ub())
            }
        },
        Qd: function() {
            b.log(b.c.AE);
            return null
        },
        RK: function() {
            b.log(b.c.tE);
            return ! 1
        },
        SK: function() {
            b.log(b.c.xE);
            return ! 1
        },
        TK: function() {
            b.log(b.c.zE);
            return ! 1
        },
        fN: function(a) {
            var c = b.l;
            b.assert(this.wf == b.Aq(this.wf) && this.vf == b.Aq(this.vf) || a.WN == c.CLAMP_TO_EDGE && a.XN == c.CLAMP_TO_EDGE, "WebGLRenderingContext.CLAMP_TO_EDGE should be used in NPOT textures");
            b.qe(this);
            c.texParameteri(c.TEXTURE_2D, c.TEXTURE_MIN_FILTER, a.$V);
            c.texParameteri(c.TEXTURE_2D, c.TEXTURE_MAG_FILTER, a.XV);
            c.texParameteri(c.TEXTURE_2D, c.TEXTURE_WRAP_S, a.WN);
            c.texParameteri(c.TEXTURE_2D, c.TEXTURE_WRAP_T, a.XN)
        },
        yM: function() {
            var a = b.l;
            b.qe(this);
            this.Ni ? a.texParameteri(a.TEXTURE_2D, a.TEXTURE_MIN_FILTER, a.LINEAR_MIPMAP_NEAREST) : a.texParameteri(a.TEXTURE_2D, a.TEXTURE_MIN_FILTER, a.LINEAR);
            a.texParameteri(a.TEXTURE_2D, a.TEXTURE_MAG_FILTER, a.NEAREST)
        },
        uM: function() {
            var a = b.l;
            b.qe(this);
            this.Ni ? a.texParameteri(a.TEXTURE_2D, a.TEXTURE_MIN_FILTER, a.NEAREST_MIPMAP_NEAREST) : a.texParameteri(a.TEXTURE_2D, a.TEXTURE_MIN_FILTER, a.NEAREST);
            a.texParameteri(a.TEXTURE_2D, a.TEXTURE_MAG_FILTER, a.NEAREST)
        },
        generateMipmap: function() {
            b.assert(this.wf == b.Aq(this.wf) && this.vf == b.Aq(this.vf), "Mimpap texture only works in POT textures");
            b.qe(this);
            b.l.generateMipmap(b.l.TEXTURE_2D);
            this.Ni = !0
        },
        EN: function() {
            return b.K.bF[this.Yi]
        },
        JI: function(a) {
            a = a || this.Yi;
            var c = b.K.gw[a];
            if (null != c) return c;
            b.log(b.c.qE, a);
            return - 1
        },
        zG: function(a, c, d) {
            var e = b.K,
            f = a.getData(),
            g = null,
            g = null,
            h = a.lV(),
            k = D(a.LK(), a.dK()),
            m = e.tz,
            n = a.IT();
            h || (8 <= n ? m = e.yk: (b.log(b.c.nE), m = e.xk));
            var r = c * d;
            if (m == e.xk) if (h) for (f = new Uint16Array(c * d), g = a.getData(), n = 0; n < r; ++n) f[n] = (g[n] >> 0 & 255) >> 3 << 11 | (g[n] >> 8 & 255) >> 2 << 5 | (g[n] >> 16 & 255) >> 3 << 0;
            else for (f = new Uint16Array(c * d), g = a.getData(), n = 0; n < r; ++n) f[n] = (g[n] & 255) >> 3 << 11 | (g[n] & 255) >> 2 << 5 | (g[n] & 255) >> 3 << 0;
            else if (m == e.Wm) for (f = new Uint16Array(c * d), g = a.getData(), n = 0; n < r; ++n) f[n] = (g[n] >> 0 & 255) >> 4 << 12 | (g[n] >> 8 & 255) >> 4 << 8 | (g[n] >> 16 & 255) >> 4 << 4 | (g[n] >> 24 & 255) >> 4 << 0;
            else if (m == e.Vm) for (f = new Uint16Array(c * d), g = a.getData(), n = 0; n < r; ++n) f[n] = (g[n] >> 0 & 255) >> 3 << 11 | (g[n] >> 8 & 255) >> 3 << 6 | (g[n] >> 16 & 255) >> 3 << 1 | (g[n] >> 24 & 255) >> 7 << 0;
            else if (m == e.Um) for (f = new Uint8Array(c * d), g = a.getData(), n = 0; n < r; ++n) f[n] = g >> 24 & 255;
            if (h && m == e.yk) for (g = a.getData(), f = new Uint8Array(c * d * 3), n = 0; n < r; ++n) f[3 * n] = g >> 0 & 255,
            f[3 * n + 1] = g >> 8 & 255,
            f[3 * n + 2] = g >> 16 & 255;
            this.Xz(f, m, c, d, k);
            a.getData();
            this.Xn = a.DV();
            return ! 0
        },
        Vc: function(a, c) {
            this.qa || (this.qa = []);
            this.qa.push({
                ne: a,
                td: c
            })
        },
        bM: function(a) {
            if (this.qa) for (var c = this.qa,
            d = 0; d < c.length; d++) c[d].td == a && c.splice(d, 1)
        },
        Ub: function() {
            if (this.qa) {
                for (var a = this.qa,
                c = 0,
                d = a.length; c < d; c++) {
                    var e = a[c];
                    e.ne.call(e.td, this)
                }
                a.length = 0
            }
        }
    })
};
b.p.mr = function() {
    var a = b.mf.prototype;
    a.Hy = function() {
        var a = b.l;
        this.ed[0] = a.createBuffer();
        this.ed[1] = a.createBuffer();
        this.lh = a.createBuffer();
        this.ko()
    };
    a.ko = function() {
        var a = b.l;
        a.bindBuffer(a.ARRAY_BUFFER, this.lh);
        a.bufferData(a.ARRAY_BUFFER, this.Tc, a.DYNAMIC_DRAW);
        a.bindBuffer(a.ELEMENT_ARRAY_BUFFER, this.ed[1]);
        a.bufferData(a.ELEMENT_ARRAY_BUFFER, this.md, a.STATIC_DRAW)
    };
    a.vz = function(a) {
        var d;
        d = 0;
        if (0 !== a && this.texture && this.texture.xb) {
            var e = b.l;
            b.qe(this.texture);
            b.tc(b.gn);
            e.bindBuffer(e.ARRAY_BUFFER, this.lh);
            this.dirty && e.bufferData(e.ARRAY_BUFFER, this.Tc, e.DYNAMIC_DRAW);
            e.vertexAttribPointer(b.lc, 3, e.FLOAT, !1, 24, 0);
            e.vertexAttribPointer(b.Ck, 4, e.UNSIGNED_BYTE, !0, 24, 12);
            e.vertexAttribPointer(b.Dk, 2, e.FLOAT, !1, 24, 16);
            this.dirty && (this.dirty = !1);
            e.bindBuffer(e.ELEMENT_ARRAY_BUFFER, this.ed[1]);
            b.Zv ? e.drawElements(e.TRIANGLE_STRIP, 6 * a, e.UNSIGNED_SHORT, 6 * d * this.md.BYTES_PER_ELEMENT) : e.drawElements(e.TRIANGLES, 6 * a, e.UNSIGNED_SHORT, 6 * d * this.md.BYTES_PER_ELEMENT);
            b.We++
        }
    }
};
b.p.nr = function() {
    var a = b.va;
    a.Fa = function(a) {
        var d = this.pb;
        b.yo || (d = this.hl);
        var e = d[a];
        e || (e = d[a] = new b.K, e.url = a);
        e.Fa()
    };
    a.cc = function(a, d, e) {
        b.assert(a, b.c.pE);
        var f = this.pb;
        b.yo || (f = this.hl);
        var g = f[a] || f[b.D.$g[a]];
        if (g) return d && d.call(e),
        g;
        b.D.Yc(a) || (b.D.uw(a) ? b.D.load(a,
        function() {
            d && d.call(e)
        }) : b.D.sd[a] = b.D.Wl(a,
        function(e, f) {
            if (e) return d ? d(e) : e;
            b.va.Fa(a);
            d && d(null, f)
        }));
        g = f[a] = new b.K;
        g.url = a;
        return g
    };
    delete a
};
b.p.Lq = function() {
    var a = b.K;
    a.TP = function(a) {
        b.uD = a
    };
    a.zk = 2;
    a.yk = 3;
    a.xk = 4;
    a.Um = 5;
    a.Dq = 6;
    a.Cq = 7;
    a.Wm = 8;
    a.Vm = 7;
    a.Rv = 9;
    a.Qv = 10;
    a.pD = a.zk;
    var c = b.K.bF = {};
    c[a.zk] = "RGBA8888";
    c[a.yk] = "RGB888";
    c[a.xk] = "RGB565";
    c[a.Um] = "A8";
    c[a.Dq] = "I8";
    c[a.Cq] = "AI88";
    c[a.Wm] = "RGBA4444";
    c[a.Vm] = "RGB5A1";
    c[a.Rv] = "PVRTC4";
    c[a.Qv] = "PVRTC2";
    c = b.K.gw = {};
    c[a.zk] = 32;
    c[a.yk] = 24;
    c[a.xk] = 16;
    c[a.Um] = 8;
    c[a.Dq] = 8;
    c[a.Cq] = 16;
    c[a.Wm] = 16;
    c[a.Vm] = 16;
    c[a.Rv] = 4;
    c[a.Qv] = 3;
    c = b.K.prototype;
    b.k(c, "name", c.getName);
    b.k(c, "pixelFormat", c.Fz);
    b.k(c, "pixelsWidth", c.Hz);
    b.k(c, "pixelsHeight", c.Gz);
    b.k(c, "width", c.Ie);
    b.k(c, "height", c.fh);
    a.tz = a.pD
};
b.p.Mq = function() {
    var a = b.mf.prototype;
    b.k(a, "totalQuads", a.Qz);
    b.k(a, "capacity", a.Cz);
    b.k(a, "quads", a.Jz, a.cB)
};
b.fO = 51;
b.iO = 19;
b.kO = 18;
b.hO = 50;
b.eO = 34;
b.cO = 35;
b.dO = 33;
b.gO = 49;
b.jO = 17;
b.uD = !1;
b.da === b.Ya ? b.K = b.oa.extend({
    v: null,
    xb: !1,
    la: null,
    qa: null,
    url: null,
    ctor: function() {
        this.v = D(0, 0);
        this.xb = !1;
        this.la = null
    },
    Hz: function() {
        return this.v.width
    },
    Gz: function() {
        return this.v.height
    },
    ud: function() {
        var a = b.Ka();
        return D(this.v.width / a, this.v.height / a)
    },
    Ie: function() {
        return this.v.width / b.Ka()
    },
    fh: function() {
        return this.v.height / b.Ka()
    },
    VJ: function() {
        return this.v
    },
    Mb: function(a) {
        a && (this.la = a)
    },
    fK: function() {
        return this.la
    },
    cL: function() {
        return this.xb
    },
    Fa: function() {
        if (!this.xb) {
            if (!this.la) {
                var a = b.D.Yc(this.url);
                if (!a) return;
                this.Mb(a)
            }
            this.xb = !0;
            a = this.la;
            this.v.width = a.width;
            this.v.height = a.height;
            this.Ub()
        }
    },
    description: function() {
        return "\x3ccc.Texture2D | width \x3d " + this.v.width + " height " + this.v.height + "\x3e"
    },
    Xz: function() {
        return ! 1
    },
    $z: function() {
        return ! 1
    },
    Qd: function() {
        return ! 1
    },
    Yu: function() {},
    getName: function() {
        return null
    },
    mK: function() {
        return 1
    },
    NM: function() {},
    nK: function() {
        return 1
    },
    OM: function() {},
    Fz: function() {
        return null
    },
    xu: function() {
        return null
    },
    hv: function() {},
    Aj: function() {
        return ! 1
    },
    NK: function() {
        return ! 1
    },
    YL: function() {},
    jL: function(a) {
        return a
    },
    dJ: function() {},
    fJ: function() {},
    RK: function() {
        b.log(b.c.sE);
        return ! 1
    },
    SK: function() {
        b.log(b.c.wE);
        return ! 1
    },
    TK: function() {
        b.log(b.c.yE);
        return ! 1
    },
    fN: function() {},
    yM: function() {},
    uM: function() {},
    generateMipmap: function() {},
    EN: function() {
        return ""
    },
    JI: function() {
        return - 1
    },
    Vc: function(a, c) {
        this.qa || (this.qa = []);
        this.qa.push({
            ne: a,
            td: c
        })
    },
    bM: function(a) {
        if (this.qa) for (var c = this.qa,
        d = 0; d < c.length; d++) c[d].td == a && c.splice(d, 1)
    },
    Ub: function() {
        if (this.qa) {
            for (var a = this.qa,
            c = 0,
            d = a.length; c < d; c++) {
                var e = a[c];
                e.ne.call(e.td, this)
            }
            a.length = 0
        }
    }
}) : (b.assert("function" === typeof b.p.lr, b.c.Gb, "TexturesWebGL.js"), b.p.lr(), delete b.p.lr);
b.assert("function" === typeof b.p.Lq, b.c.Gb, "TexturesPropertyDefine.js");
b.p.Lq();
delete b.p.Lq;
b.va = {
    pb: {},
    Al: {},
    Ct: 0 | 1E3 * Math.random(),
    hl: {},
    CG: function() {
        var a, c = this.hl,
        d = this.pb;
        for (a in c) {
            var e = c[a];
            e.Fa();
            d[a] = e
        }
        this.hl = {}
    },
    FR: function() {
        b.log(b.c.IN)
    },
    CR: function() {
        b.log(b.c.GN)
    },
    description: function() {
        return "\x3cTextureCache | Number of textures \x3d " + this.pb.length + "\x3e"
    },
    lm: function(a) {
        return this.pb[a] || this.pb[b.D.$g[a]]
    },
    gK: function(a) {
        for (var c in this.pb) if (this.pb[c] == a) return c;
        return null
    },
    QF: function() {
        this.Ct++;
        return "_textureKey_" + this.Ct
    },
    zu: function(a) {
        var c = this.gK(a);
        c || (c = a instanceof HTMLImageElement ? a.src: this.QF());
        this.Al[c] || (this.Al[c] = b.rj(a));
        return this.Al[c]
    },
    ER: function() {
        b.log(b.c.HN)
    },
    uX: function() {
        var a = this.pb,
        c;
        for (c in a) a[c] && a[c].Yu();
        this.pb = {}
    },
    HX: function(a) {
        if (a) {
            var c = this.pb,
            d;
            for (d in c) c[d] == a && (c[d].Yu(), delete c[d])
        }
    },
    IX: function(a) {
        null != a && this.pb[a] && delete this.pb[a]
    },
    ZR: function(a, c) {
        if (c instanceof b.K) this.pb[a] = c;
        else {
            var d = new b.K;
            d.Mb(c);
            d.Fa();
            this.pb[a] = d
        }
    },
    JR: function(a, c) {
        b.assert(a, b.c.KN);
        if (c && this.pb[c]) return this.pb[c];
        var d = new b.K;
        d.$z(a);
        null != c && null != d ? this.pb[c] = d: b.log(b.c.JN);
        return d
    },
    DS: function() {
        var a = 0,
        c = 0,
        d = this.pb,
        e;
        for (e in d) {
            var f = d[e];
            a++;
            f.la instanceof HTMLImageElement ? b.log(b.c.LN, e, f.la.src, f.pixelsWidth, f.pixelsHeight) : b.log(b.c.rB, e, f.pixelsWidth, f.pixelsHeight);
            c += f.pixelsWidth * f.pixelsHeight * 4
        }
        d = this.Al;
        for (e in d) {
            var f = d[e],
            g;
            for (g in f) {
                var h = f[g];
                a++;
                b.log(b.c.rB, e, h.width, h.height);
                c += h.width * h.height * 4
            }
        }
        b.log(b.c.MN, a, c / 1024, (c / 1048576).toFixed(2))
    },
    fg: function() {
        this.pb = {};
        this.Al = {};
        this.Ct = 0 | 1E3 * Math.random();
        this.hl = {}
    }
};
b.da === b.Ya ? (p = b.va, p.Fa = function(a) {
    var c = this.pb,
    d = c[a];
    d || (d = c[a] = new b.K, d.url = a);
    d.Fa()
},
p.cc = function(a, c, d) {
    b.assert(a, b.c.oE);
    var e = this.pb,
    f = e[a] || e[b.D.$g[a]];
    if (f) return c && c.call(d),
    f;
    f = e[a] = new b.K;
    f.url = a;
    b.D.Yc(a) ? f.Fa() : b.D.uw(a) ? b.D.load(a,
    function() {
        c && c.call(d)
    }) : b.D.sd[a] = b.D.Wl(a,
    function(d, e) {
        if (d) return c ? c(d) : d;
        b.va.Fa(a);
        c && c(null, e)
    });
    return f
},
p = null) : (b.assert("function" === typeof b.p.nr, b.c.Gb, "TexturesWebGL.js"), b.p.nr(), delete b.p.nr);
b.mf = b.oa.extend({
    dirty: !1,
    texture: null,
    md: null,
    ed: null,
    Bc: 0,
    Ec: null,
    Tc: null,
    lh: null,
    od: null,
    ctor: function(a, c) {
        this.ed = [];
        "string" == typeof a ? this.Tl(a, c) : a instanceof b.K && this.ia(a, c)
    },
    Qz: function() {
        return this.X
    },
    Cz: function() {
        return this.Bc
    },
    La: function() {
        return this.texture
    },
    Wa: function(a) {
        this.texture = a
    },
    XA: function(a) {
        this.dirty = a
    },
    iA: function() {
        return this.dirty
    },
    Jz: function() {
        return this.Ec
    },
    cB: function(a) {
        this.Ec = a
    },
    UQ: function(a, c) {
        if (a) for (var d = 0; d < a.length; d++) this.Co(a[d], c + d)
    },
    Co: function(a, c) {
        var d = this.Ec;
        d[c] ? (d[c].wa = a.wa, d[c].xa = a.xa, d[c].ya = a.ya, d[c].za = a.za) : d[c] = new b.Xa(a.ya, a.wa, a.za, a.xa, this.Tc, c * b.Xa.BYTES_PER_ELEMENT)
    },
    description: function() {
        return "\x3ccc.TextureAtlas | totalQuads \x3d" + this.X + "\x3e"
    },
    Gy: function() {
        if (0 !== this.Bc) for (var a = this.md,
        c = this.Bc,
        d = 0; d < c; d++) b.Zv ? (a[6 * d + 0] = 4 * d + 0, a[6 * d + 1] = 4 * d + 0, a[6 * d + 2] = 4 * d + 2, a[6 * d + 3] = 4 * d + 1, a[6 * d + 4] = 4 * d + 3, a[6 * d + 5] = 4 * d + 3) : (a[6 * d + 0] = 4 * d + 0, a[6 * d + 1] = 4 * d + 1, a[6 * d + 2] = 4 * d + 2, a[6 * d + 3] = 4 * d + 3, a[6 * d + 4] = 4 * d + 2, a[6 * d + 5] = 4 * d + 1)
    },
    Hy: function() {
        var a = b.l;
        this.ed[0] = a.createBuffer();
        this.ed[1] = a.createBuffer();
        this.lh = a.createBuffer();
        this.ko()
    },
    ko: function() {
        var a = b.l;
        a.bindBuffer(a.ARRAY_BUFFER, this.lh);
        a.bufferData(a.ARRAY_BUFFER, this.Tc, a.DYNAMIC_DRAW);
        a.bindBuffer(a.ELEMENT_ARRAY_BUFFER, this.ed[1]);
        a.bufferData(a.ELEMENT_ARRAY_BUFFER, this.md, a.STATIC_DRAW)
    },
    Tl: function(a, c) {
        var d = b.va.cc(a);
        if (d) return this.ia(d, c);
        b.log(b.c.BE, a);
        return ! 1
    },
    ia: function(a, c) {
        b.assert(a, b.c.CE);
        this.Bc = c |= 0;
        this.X = 0;
        this.texture = a;
        this.Ec = [];
        this.md = new Uint16Array(6 * c);
        var d = b.Xa.BYTES_PER_ELEMENT;
        this.Tc = new ArrayBuffer(d * c);
        this.od = new Uint8Array(this.Tc);
        if ((!this.Ec || !this.md) && 0 < c) return ! 1;
        for (var e = this.Ec,
        f = 0; f < c; f++) e[f] = new b.Xa(null, null, null, null, this.Tc, f * d);
        this.Gy();
        this.Hy();
        return this.dirty = !0
    },
    Up: function(a, c) {
        b.assert(a, b.c.ME);
        b.assert(0 <= c && c < this.Bc, b.c.NE);
        this.X = Math.max(c + 1, this.X);
        this.Co(a, c);
        this.dirty = !0
    },
    Iu: function(a, c) {
        b.assert(c < this.Bc, b.c.FE);
        this.X++;
        if (this.X > this.Bc) b.log(b.c.bw);
        else {
            var d = b.Xa.BYTES_PER_ELEMENT,
            e = c * d,
            f = (this.X - 1 - c) * d;
            this.Ec[this.X - 1] = new b.Xa(null, null, null, null, this.Tc, (this.X - 1) * d);
            this.od.set(this.od.subarray(e, e + f), e + d);
            this.Co(a, c);
            this.dirty = !0
        }
    },
    sV: function(a, c, d) {
        d = d || a.length;
        b.assert(c + d <= this.Bc, b.c.GE);
        var e = b.Xa.BYTES_PER_ELEMENT;
        this.X += d;
        if (this.X > this.Bc) b.log(b.c.bw);
        else {
            var f = c * e,
            g = (this.X - 1 - c - d) * e,
            h = this.X - 1 - d,
            k;
            for (k = 0; k < d; k++) this.Ec[h + k] = new b.Xa(null, null, null, null, this.Tc, (this.X - 1) * e);
            this.od.set(this.od.subarray(f, f + g), f + e * d);
            for (k = 0; k < d; k++) this.Co(a[k], c + k);
            this.dirty = !0
        }
    },
    rV: function(a, c) {
        if (a !== c) {
            b.assert(0 <= c || c < this.X, b.c.DE);
            b.assert(0 <= a || a < this.X, b.c.EE);
            var d = b.Xa.BYTES_PER_ELEMENT,
            e = this.od,
            f = e.subarray(a * d, d),
            g;
            a > c ? (g = c * d, e.set(e.subarray(g, g + (a - c) * d), g + d), e.set(f, g)) : (g = (a + 1) * d, e.set(e.subarray(g, g + (c - a) * d), g - d), e.set(f, c * d));
            this.dirty = !0
        }
    },
    dM: function(a) {
        b.assert(a < this.X, b.c.KE);
        var c = b.Xa.BYTES_PER_ELEMENT;
        this.X--;
        this.Ec.length = this.X;
        if (a !== this.X) {
            var d = (a + 1) * c;
            this.od.set(this.od.subarray(d, d + (this.X - a) * c), d - c)
        }
        this.dirty = !0
    },
    CX: function(a, c) {
        b.assert(a + c <= this.X, b.c.LE);
        this.X -= c;
        if (a !== this.X) {
            var d = b.Xa.BYTES_PER_ELEMENT,
            e = (a + c) * d;
            this.od.set(this.od.subarray(e, e + (this.X - a) * d), a * d)
        }
        this.dirty = !0
    },
    $L: function() {
        this.X = this.Ec.length = 0
    },
    qh: function(a) {
        this.dirty = a
    },
    JA: function(a) {
        if (a == this.Bc) return ! 0;
        var c = b.Xa.BYTES_PER_ELEMENT,
        d = this.Bc;
        this.X = Math.min(this.X, a);
        var e = this.Bc = 0 | a,
        f = this.X;
        if (null == this.Ec) for (this.Ec = [], this.Tc = new ArrayBuffer(c * e), this.od = new Uint8Array(this.Tc), a = 0; a < e; a++) this.Ec = new b.Xa(null, null, null, null, this.Tc, a * c);
        else {
            var g, h, k = this.Ec;
            if (e > d) {
                g = [];
                h = new ArrayBuffer(c * e);
                for (a = 0; a < f; a++) g[a] = new b.Xa(k[a].ya, k[a].wa, k[a].za, k[a].xa, h, a * c);
                for (; a < e; a++) g[a] = new b.Xa(null, null, null, null, h, a * c)
            } else for (f = Math.max(f, e), g = [], h = new ArrayBuffer(c * e), a = 0; a < f; a++) g[a] = new b.Xa(k[a].ya, k[a].wa, k[a].za, k[a].xa, h, a * c);
            this.od = new Uint8Array(h);
            this.Ec = g;
            this.Tc = h
        }
        null == this.md ? this.md = new Uint16Array(6 * e) : e > d ? (c = new Uint16Array(6 * e), c.set(this.md, 0), this.md = c) : this.md = this.md.subarray(0, 6 * e);
        this.Gy();
        this.ko();
        return this.dirty = !0
    },
    QK: function(a) {
        this.X += a
    },
    aW: function(a, c, d) {
        if (void 0 === d) {
            if (d = c, c = this.X - a, b.assert(d + (this.X - a) <= this.Bc, b.c.HE), 0 === c) return
        } else if (b.assert(d + c <= this.X, b.c.IE), b.assert(a < this.X, b.c.JE), a == d) return;
        var e = b.Xa.BYTES_PER_ELEMENT,
        f = a * e,
        g = c * e,
        h = this.od,
        k = h.subarray(f, f + g),
        m = d * e;
        d < a ? (c = d * e, h.set(h.subarray(c, c + (a - d) * e), c + g)) : (c = (a + c) * e, h.set(h.subarray(c, c + (d - a) * e), f));
        h.set(k, m);
        this.dirty = !0
    },
    yT: function(a, c) {
        for (var d = c * b.Xa.BYTES_PER_ELEMENT,
        e = new Uint8Array(this.Tc, a * b.Xa.BYTES_PER_ELEMENT, d), f = 0; f < d; f++) e[f] = 0
    },
    jJ: function() {
        this.vz(this.X)
    },
    nR: function() {
        var a = b.l;
        this.ed && (this.ed[0] && a.deleteBuffer(this.ed[0]), this.ed[1] && a.deleteBuffer(this.ed[1]));
        this.lh && a.deleteBuffer(this.lh)
    }
});
p = b.mf.prototype;
b.k(p, "totalQuads", p.Qz);
b.k(p, "capacity", p.Cz);
b.k(p, "quads", p.Jz, p.cB);
b.mf.create = function(a, c) {
    return new b.mf(a, c)
};
b.mf.eu = b.mf.create;
b.da === b.wb && (b.assert("function" === typeof b.p.mr, b.c.Gb, "TexturesWebGL.js"), b.p.mr(), delete b.p.mr);
b.assert("function" === typeof b.p.Mq, b.c.Gb, "TexturesPropertyDefine.js");
b.p.Mq();
delete b.p.Mq;
b.$m = b.m.extend({
    Mc: "Scene",
    ctor: function() {
        b.m.prototype.ctor.call(this);
        this.rf = !0;
        this.Qj(0.5, 0.5);
        this.wd(b.Qa.Ql())
    }
});
b.$m.create = function() {
    return new b.$m
};
b.xq = b.$m.extend({
    rg: null,
    Lx: 0,
    Fr: 0,
    eo: null,
    Mc: "LoaderScene",
    ga: function() {
        var a = this,
        c = 200,
        d = a.pF = b.Pb.create(b.color(32, 32, 32, 255));
        d.Ma(b.di.Wt);
        a.N(d, 0);
        var e = 24,
        f = -c / 2 + 100;
        b.os && (b.D.Wl(b.os, {
            Ju: !1
        },
        function(d, e) {
            c = e.height;
            a.AG(e, b.di.Zo)
        }), e = 14, f = -c / 2 - 10);
        e = a.eo = b.A.create("\u52a0\u8f7d\u4e2d... 0%", "Arial", e);
        e.Ma(b.Jj(b.di.Zo, C(0, f)));
        e.V(b.color(180, 180, 180));
        d.N(this.eo, 10);
        return ! 0
    },
    AG: function(a, c) {
        var d = new b.K;
        d.Mb(a);
        d.Fa();
        d = b.B.create(d);
        d.Og(b.Ka());
        d.x = c.x;
        d.y = c.y;
        this.pF.N(d, 10)
    },
    se: function() {
        b.m.prototype.se.call(this);
        this.av(this.My, 0.3)
    },
    vd: function() {
        b.m.prototype.vd.call(this);
        this.eo.ic("\u52a0\u8f7d\u4e2d... 0%")
    },
    UK: function(a, c) {
        "string" == typeof a && (a = [a]);
        this.gM = a || [];
        this.fc = c
    },
    My: function() {
        var a = this;
        a.xB(a.My);
        var c = a.gM;
        a.Lx = c.length;
        a.Fr = 0;
        b.D.load(c,
        function(c, e) {
            a.Fr = e
        },
        function() {
            a.fc && a.fc()
        });
        a.av(a.Xy)
    },
    Xy: function() {
        var a = this.Fr,
        c = this.Lx,
        d;
        d = Math.min(a / c * 100 | 0, 100);
        this.eo.ic("\u52a0\u8f7d\u4e2d... " + d + "%");
        a >= c && this.xB(this.Xy)
    }
});
b.xq.Wu = function(a, c) {
    var d = b;
    d.Xl || (d.Xl = new b.xq, d.Xl.ga());
    d.Xl.UK(a, c);
    b.Qa.OA(d.Xl);
    return d.Xl
};
b.p.wq = function() {
    var a = b.zb.prototype;
    a.ez = function() {};
    a.wB = function() {};
    a.Ba = b.m.prototype.Ba
};
b.p.ir = function() {
    var a = b.Pb.prototype;
    a.Eo = null;
    a.pt = null;
    a.Lt = null;
    a.Dr = null;
    a.rt = null;
    a.qt = null;
    a.ctor = function(a, d, e) {
        this.rt = new ArrayBuffer(32);
        this.qt = new ArrayBuffer(16);
        var f = this.rt,
        g = this.qt,
        h = b.Sa.BYTES_PER_ELEMENT,
        k = b.ad.BYTES_PER_ELEMENT;
        this.Eo = [new b.Sa(0, 0, f, 0), new b.Sa(0, 0, f, h), new b.Sa(0, 0, f, 2 * h), new b.Sa(0, 0, f, 3 * h)];
        this.pt = [b.color(0, 0, 0, 255, g, 0), b.color(0, 0, 0, 255, g, k), b.color(0, 0, 0, 255, g, 2 * k), b.color(0, 0, 0, 255, g, 3 * k)];
        this.Lt = b.l.createBuffer();
        this.Dr = b.l.createBuffer();
        b.zb.prototype.ctor.call(this);
        this.t = new b.cb(b.kc, b.jc);
        b.Pb.prototype.ga.call(this, a, d, e)
    };
    a.wd = function(a, d) {
        var e = this.Eo;
        void 0 === d ? (e[1].x = a.width, e[2].y = a.height, e[3].x = a.width, e[3].y = a.height) : (e[1].x = a, e[2].y = d, e[3].x = a, e[3].y = d);
        this.xr();
        b.zb.prototype.wd.call(this, a, d)
    };
    a.Bf = function(a) {
        var d = this.Eo;
        d[1].x = a;
        d[3].x = a;
        this.xr();
        b.zb.prototype.Bf.call(this, a)
    };
    a.Af = function(a) {
        var d = this.Eo;
        d[2].y = a;
        d[3].y = a;
        this.xr();
        b.zb.prototype.Af.call(this, a)
    };
    a.Eb = function() {
        for (var a = this.Q,
        d = this.sa,
        e = this.pt,
        f = 0; 4 > f; f++) e[f].r = a.r,
        e[f].g = a.g,
        e[f].b = a.b,
        e[f].a = d;
        this.rw()
    };
    a.na = function(a) {
        a = a || b.l;
        b.pA(this);
        b.tc(b.Lc | b.cr);
        a.bindBuffer(a.ARRAY_BUFFER, this.Lt);
        a.vertexAttribPointer(b.lc, 2, a.FLOAT, !1, 0, 0);
        a.bindBuffer(a.ARRAY_BUFFER, this.Dr);
        a.vertexAttribPointer(b.Ck, 4, a.UNSIGNED_BYTE, !0, 0, 0);
        b.Ph(this.t.src, this.t.Y);
        a.drawArrays(a.TRIANGLE_STRIP, 0, 4)
    };
    a.xr = function() {
        var a = b.l;
        a.bindBuffer(a.ARRAY_BUFFER, this.Lt);
        a.bufferData(a.ARRAY_BUFFER, this.rt, a.STATIC_DRAW)
    };
    a.rw = function() {
        var a = b.l;
        a.bindBuffer(a.ARRAY_BUFFER, this.Dr);
        a.bufferData(a.ARRAY_BUFFER, this.qt, a.STATIC_DRAW)
    }
};
b.p.jr = function() {
    var a = b.Ug.prototype;
    a.na = b.Pb.prototype.na;
    a.Eb = function() {
        var a = this.cg,
        d = b.Tu(a);
        if (0 !== d) {
            var e = Math.sqrt(2),
            a = C(a.x / d, a.y / d);
            this.zn && (a = b.Kg(a, 1 / (Math.abs(a.x) + Math.abs(a.y)) * e));
            var f = this.sa / 255,
            d = this.Q,
            g = this.Bi,
            d = {
                r: d.r,
                g: d.g,
                b: d.b,
                a: this.ej * f
            },
            f = {
                r: g.r,
                g: g.g,
                b: g.b,
                a: this.Ci * f
            },
            h = this.pt,
            g = h[0],
            k = h[1],
            m = h[2],
            h = h[3];
            g.r = f.r + (e + a.x + a.y) / (2 * e) * (d.r - f.r);
            g.g = f.g + (e + a.x + a.y) / (2 * e) * (d.g - f.g);
            g.b = f.b + (e + a.x + a.y) / (2 * e) * (d.b - f.b);
            g.a = f.a + (e + a.x + a.y) / (2 * e) * (d.a - f.a);
            k.r = f.r + (e - a.x + a.y) / (2 * e) * (d.r - f.r);
            k.g = f.g + (e - a.x + a.y) / (2 * e) * (d.g - f.g);
            k.b = f.b + (e - a.x + a.y) / (2 * e) * (d.b - f.b);
            k.a = f.a + (e - a.x + a.y) / (2 * e) * (d.a - f.a);
            m.r = f.r + (e + a.x - a.y) / (2 * e) * (d.r - f.r);
            m.g = f.g + (e + a.x - a.y) / (2 * e) * (d.g - f.g);
            m.b = f.b + (e + a.x - a.y) / (2 * e) * (d.b - f.b);
            m.a = f.a + (e + a.x - a.y) / (2 * e) * (d.a - f.a);
            h.r = f.r + (e - a.x - a.y) / (2 * e) * (d.r - f.r);
            h.g = f.g + (e - a.x - a.y) / (2 * e) * (d.g - f.g);
            h.b = f.b + (e - a.x - a.y) / (2 * e) * (d.b - f.b);
            h.a = f.a + (e - a.x - a.y) / (2 * e) * (d.a - f.a);
            this.rw()
        }
    }
};
b.p.Iq = function() {
    var a = b.Pb.prototype;
    b.k(a, "width", a.Ie, a.Bf);
    b.k(a, "height", a.fh, a.Af)
};
b.p.Jq = function() {
    var a = b.Ug.prototype;
    b.k(a, "startColor", a.DK, a.dN);
    b.k(a, "endColor", a.ZJ, a.EM);
    b.k(a, "startOpacity", a.EK, a.eN);
    b.k(a, "endOpacity", a.$J, a.FM);
    b.k(a, "vector", a.IK, a.iN)
};
b.zb = b.m.extend({
    hh: !1,
    sn: null,
    Mc: "Layer",
    ctor: function() {
        var a = b.m.prototype;
        a.ctor.call(this);
        this.rf = !0;
        a.Qj.call(this, 0.5, 0.5);
        a.wd.call(this, b.aa)
    },
    ga: function() {
        this.rf = !0;
        this.Qj(0.5, 0.5);
        this.wd(b.aa);
        this.cascadeColor = this.cascadeOpacity = !1;
        return ! 0
    },
    ez: null,
    wB: null,
    uV: function() {
        return this.hh
    },
    Ba: null
});
b.zb.create = function() {
    return new b.zb
};
if (b.da === b.Ya) {
    var F = b.zb.prototype;
    F.ez = function() {
        if (!this.hh) {
            this.hh = this.Ce = !0;
            this.Ok = this;
            for (var a = this.s,
            c = 0,
            d = a.length; c < d; c++) a[c].Ys(this);
            this.sn || (this.sn = new b.PB)
        }
    };
    F.wB = function() {
        if (this.hh) {
            this.hh = !1;
            this.Ce = !0;
            this.Ok = null;
            for (var a = this.s,
            c = 0,
            d = a.length; c < d; c++) a[c].Ys(null)
        }
    };
    F.Ba = function(a) {
        if (this.hh) {
            a = a || b.l;
            var c, d = this.s,
            e = d.length;
            if (this.Gc && 0 !== e) {
                var f = this.sn;
                a.save();
                this.transform(a);
                if (this.Ce) {
                    c = this.Wr();
                    c.width |= 0;
                    c.height |= 0;
                    var g = f.vn;
                    f.IA(c.width, c.height);
                    g.translate(0 - c.x, c.height + c.y);
                    var h = f.qu();
                    f.Ma(h.x + c.x, h.y + c.y);
                    this.vc();
                    b.view.By();
                    for (c = 0; c < e; c++) d[c].Ba(g);
                    b.view.oy();
                    this.Ce = !1
                }
                f.Ba(a);
                this.arrivalOrder = 0;
                a.restore()
            }
        } else b.m.prototype.Ba.call(this, a)
    };
    F.Wr = function() {
        var a = null;
        if (!this.s || 0 === this.s.length) return E(0, 0, 10, 10);
        for (var c = this.s,
        d = 0; d < c.length; d++) {
            var e = c[d];
            e && e.Gc && (a ? (e = e.Zk()) && (a = b.Ip(a, e)) : a = e.Zk())
        }
        return a
    };
    F = null
} else b.assert("function" === typeof b.p.wq, b.c.Gb, "CCLayerWebGL.js"),
b.p.wq(),
delete b.p.wq;
b.Pb = b.zb.extend({
    t: null,
    Mc: "LayerColor",
    Ml: function() {
        return this.t
    },
    fS: function(a, c) {
        this.width = a;
        this.height = c
    },
    eS: function(a) {
        this.width = a
    },
    dS: function(a) {
        this.height = a
    },
    Ng: function() {},
    Dj: function() {
        return ! 1
    },
    V: function(a) {
        b.zb.prototype.V.call(this, a);
        this.Eb()
    },
    Ga: function(a) {
        b.zb.prototype.Ga.call(this, a);
        this.Eb()
    },
    cl: !1,
    ctor: null,
    ga: function(a, c, d) {
        b.da !== b.Ya && (this.shaderProgram = b.ff.Of(b.Wv));
        var e = b.Qa.Ql();
        a = a || b.color(0, 0, 0, 255);
        c = void 0 === c ? e.width: c;
        d = void 0 === d ? e.height: d;
        e = this.Q;
        e.r = a.r;
        e.g = a.g;
        e.b = a.b;
        e = this.ac;
        e.r = a.r;
        e.g = a.g;
        e.b = a.b;
        this.Md = this.sa = a.a;
        a = b.Pb.prototype;
        a.wd.call(this, c, d);
        a.Eb.call(this);
        return ! 0
    },
    $h: function(a, c) {
        this.t = void 0 === c ? a: {
            src: a,
            Y: c
        };
        b.da === b.Ya && (this.cl = this.t && 1 == this.t.src && 771 == this.t.Y)
    },
    Bf: null,
    Af: null,
    Eb: null,
    sb: function(a) {
        b.zb.prototype.sb.call(this, a);
        this.Eb()
    },
    kb: function(a) {
        b.zb.prototype.kb.call(this, a);
        this.Eb()
    },
    na: null
});
b.Pb.create = function(a, c, d) {
    return new b.Pb(a, c, d)
};
b.da === b.Ya ? (p = b.Pb.prototype, p.ctor = function(a, c, d) {
    b.zb.prototype.ctor.call(this);
    this.t = new b.cb(b.kc, b.jc);
    b.Pb.prototype.ga.call(this, a, c, d)
},
p.Bf = b.zb.prototype.Bf, p.Af = b.zb.prototype.Af, p.Eb = function() {},
p.na = function(a) {
    a = a || b.l;
    var c = b.view,
    d = this.Q;
    a.fillStyle = "rgba(" + (0 | d.r) + "," + (0 | d.g) + "," + (0 | d.b) + "," + this.sa / 255 + ")";
    a.fillRect(0, 0, this.width * c.O, -this.height * c.ma);
    b.We++
},
p.Ba = function(a) {
    if (this.hh) {
        a = a || b.l;
        var c, d = this.s,
        e = d.length;
        if (this.Gc) {
            var f = this.sn;
            a.save();
            this.transform(a);
            if (this.Ce) {
                c = this.Wr();
                c.width |= 0;
                c.height |= 0;
                var g = f.vn;
                f.IA(c.width, c.height);
                var h = f.qu(),
                k = this.ja;
                if (this.rf) g.translate(0 - c.x + k.x, c.height + c.y - k.y),
                f.Ma(h.x + c.x - k.x, h.y + c.y - k.y);
                else {
                    var m = this.qu(),
                    n = k.x - m.x,
                    k = k.y - m.y;
                    g.translate(0 - c.x + n, c.height + c.y - k);
                    f.Ma(h.x + c.x - n, h.y + c.y - k)
                }
                b.view.By();
                if (0 < e) {
                    this.vc();
                    for (c = 0; c < e; c++) if (h = d[c], 0 > h.Ia) h.Ba(g);
                    else break;
                    for (this.na(g); c < e; c++) d[c].Ba(g)
                } else this.na(g);
                b.view.oy();
                this.Ce = !1
            }
            f.Ba(a);
            this.arrivalOrder = 0;
            a.restore()
        }
    } else b.m.prototype.Ba.call(this, a)
},
p.Wr = function() {
    var a = E(0, 0, this.v.width, this.v.height),
    c = this.Bp(),
    a = b.Xu(a, this.Bp());
    if (!this.s || 0 === this.s.length) return a;
    for (var d = this.s,
    e = 0; e < d.length; e++) {
        var f = d[e];
        f && f.Gc && (f = f.Zk(c), a = b.Ip(a, f))
    }
    return a
},
p = null) : (b.assert("function" === typeof b.p.ir, b.c.Gb, "CCLayerWebGL.js"), b.p.ir(), delete b.p.ir);
b.assert("function" === typeof b.p.Iq, b.c.Gb, "CCLayerPropertyDefine.js");
b.p.Iq();
delete b.p.Iq;
b.Ug = b.Pb.extend({
    Ly: null,
    Bi: null,
    ej: 255,
    Ci: 255,
    cg: null,
    zn: !1,
    Mi: null,
    Li: null,
    Mc: "LayerGradient",
    ctor: function(a, c, d) {
        b.Pb.prototype.ctor.call(this);
        this.Ly = b.color(0, 0, 0, 255);
        this.Bi = b.color(0, 0, 0, 255);
        this.cg = C(0, -1);
        this.Ci = this.ej = 255;
        this.Mi = C(0, 0);
        this.Li = C(0, 0);
        b.Ug.prototype.ga.call(this, a, c, d)
    },
    ga: function(a, c, d) {
        a = a || b.color(0, 0, 0, 255);
        c = c || b.color(0, 0, 0, 255);
        d = d || C(0, -1);
        var e = this.Ly,
        f = this.Bi;
        e.r = a.r;
        e.g = a.g;
        e.b = a.b;
        this.ej = a.a;
        f.r = c.r;
        f.g = c.g;
        f.b = c.b;
        this.Ci = c.a;
        this.cg = d;
        this.zn = !0;
        this.Mi = C(0, 0);
        this.Li = C(0, 0);
        b.Pb.prototype.ga.call(this, b.color(a.r, a.g, a.b, 255));
        b.Ug.prototype.Eb.call(this);
        return ! 0
    },
    wd: function(a, c) {
        b.Pb.prototype.wd.call(this, a, c);
        this.Eb()
    },
    Bf: function(a) {
        b.Pb.prototype.Bf.call(this, a);
        this.Eb()
    },
    Af: function(a) {
        b.Pb.prototype.Af.call(this, a);
        this.Eb()
    },
    DK: function() {
        return this.ac
    },
    dN: function(a) {
        this.color = a
    },
    EM: function(a) {
        this.Bi = a;
        this.Eb()
    },
    ZJ: function() {
        return this.Bi
    },
    eN: function(a) {
        this.ej = a;
        this.Eb()
    },
    EK: function() {
        return this.ej
    },
    FM: function(a) {
        this.Ci = a;
        this.Eb()
    },
    $J: function() {
        return this.Ci
    },
    iN: function(a) {
        this.cg.x = a.x;
        this.cg.y = a.y;
        this.Eb()
    },
    IK: function() {
        return C(this.cg.x, this.cg.y)
    },
    wV: function() {
        return this.zn
    },
    $X: function(a) {
        this.zn = a;
        this.Eb()
    },
    XQ: null,
    Eb: null
});
b.Ug.create = function(a, c, d) {
    return new b.Ug(a, c, d)
};
b.da === b.Ya ? (p = b.Ug.prototype, p.na = function(a) {
    a = a || b.l;
    this.cl && (a.globalCompositeOperation = "lighter");
    a.save();
    var c = this.sa / 255,
    d = b.view.O,
    e = b.view.ma,
    f = this.width * d,
    g = this.height * e,
    d = a.createLinearGradient(this.Mi.x * d, this.Mi.y * e, this.Li.x * d, this.Li.y * e),
    e = this.Q,
    h = this.Bi;
    d.addColorStop(0, "rgba(" + Math.round(e.r) + "," + Math.round(e.g) + "," + Math.round(e.b) + "," + (this.ej / 255 * c).toFixed(4) + ")");
    d.addColorStop(1, "rgba(" + Math.round(h.r) + "," + Math.round(h.g) + "," + Math.round(h.b) + "," + (this.Ci / 255 * c).toFixed(4) + ")");
    a.fillStyle = d;
    a.fillRect(0, 0, f, -g);
    0 != this.pR && a.rotate(this.qR);
    a.restore();
    b.We++
},
p.Eb = function() {
    var a = this.cg,
    c = 0.5 * this.width,
    d = 0.5 * this.height;
    this.Mi.x = c * -a.x + c;
    this.Mi.y = d * a.y - d;
    this.Li.x = c * a.x + c;
    this.Li.y = d * -a.y - d
},
p = null) : (b.assert("function" === typeof b.p.jr, b.c.Gb, "CCLayerWebGL.js"), b.p.jr(), delete b.p.jr);
b.assert("function" === typeof b.p.Jq, b.c.Gb, "CCLayerPropertyDefine.js");
b.p.Jq();
delete b.p.Jq;
b.Tm = b.zb.extend({
    eh: 0,
    Le: null,
    Mc: "LayerMultiplex",
    ctor: function(a) {
        b.zb.prototype.ctor.call(this);
        a instanceof Array ? b.Tm.prototype.aA.call(this, a) : b.Tm.prototype.aA.call(this, Array.prototype.slice.call(arguments))
    },
    aA: function(a) {
        0 < a.length && null == a[a.length - 1] && b.log(b.c.MC);
        this.Le = a;
        this.eh = 0;
        this.N(this.Le[this.eh]);
        return ! 0
    },
    pZ: function(a) {
        a >= this.Le.length ? b.log(b.c.NC) : (this.removeChild(this.Le[this.eh], !0), this.eh = a, this.N(this.Le[a]))
    },
    qZ: function(a) {
        a >= this.Le.length ? b.log(b.c.OC) : (this.removeChild(this.Le[this.eh], !0), this.Le[this.eh] = null, this.eh = a, this.N(this.Le[a]))
    },
    DR: function(a) {
        a ? this.Le.push(a) : b.log(b.c.LC)
    }
});
b.Tm.create = function() {
    return new b.Tm(Array.prototype.slice.call(arguments))
};
b.p.kr = function() {
    var a = b.B.prototype;
    a.ot = function(a) {
        this.W(!0);
        this.Ha(a.pe(), a.qc, a.xj());
        this.Ub()
    };
    a.Ng = function(a) {
        this.Da !== a && (this.Da = a, this.om())
    };
    a.kb = function(a) {
        b.m.prototype.kb.call(this, a);
        this.om()
    };
    a.ctor = function(a, d, e) {
        b.m.prototype.ctor.call(this);
        this.xg = !1;
        this.Oa = C(0, 0);
        this.le = C(0, 0);
        this.t = {
            src: b.kc,
            Y: b.jc
        };
        this.F = E(0, 0, 0, 0);
        this.Pa = new b.Xa;
        this.wo = b.l.createBuffer();
        this.T = this.Dc = !0;
        this.Jy(a, d, e)
    };
    a.$h = function(a, d) {
        var e = this.t;
        void 0 === d ? (e.src = a.src, e.Y = a.Y) : (e.src = a, e.Y = d)
    };
    a.ga = function() {
        if (0 < arguments.length) return this.Tl(arguments[0], arguments[1]);
        b.m.prototype.ga.call(this);
        this.dirty = this.ge = !1;
        this.Da = !0;
        this.t.src = b.kc;
        this.t.Y = b.jc;
        this.texture = null;
        this.T = !0;
        this.gb = this.hb = !1;
        this.anchorY = this.anchorX = 0.5;
        this.Oa.x = 0;
        this.Oa.y = 0;
        this.Je = !1;
        var a = {
            r: 255,
            g: 255,
            b: 255,
            a: 255
        };
        this.Pa.wa.j = a;
        this.Pa.xa.j = a;
        this.Pa.ya.j = a;
        this.Pa.za.j = a;
        this.Dc = !0;
        this.Ha(E(0, 0, 0, 0), !1, D(0, 0));
        return ! 0
    };
    a.ia = function(a, d, e) {
        b.assert(0 != arguments.length, b.c.$D);
        e = e || !1;
        if (!b.m.prototype.ga.call(this)) return ! 1;
        this.ca = null;
        this.dirty = this.ge = !1;
        this.Da = !0;
        this.t.src = b.kc;
        this.t.Y = b.jc;
        this.gb = this.hb = !1;
        this.anchorY = this.anchorX = 0.5;
        this.Oa.x = 0;
        this.Oa.y = 0;
        this.Je = !1;
        var f = b.color(255, 255, 255, 255),
        g = this.Pa;
        g.wa.j = f;
        g.xa.j = f;
        g.ya.j = f;
        g.za.j = f;
        this.T = f = a.xb;
        if (!f) return this.nb = e || !1,
        d && (f = this.F, f.x = d.x, f.y = d.y, f.width = d.width, f.height = d.height),
        a.Vc(this.Oo, this),
        !0;
        d || (d = E(0, 0, a.width, a.height));
        a && a.url && (e ? (f = d.x + d.height, g = d.y + d.width) : (f = d.x + d.width, g = d.y + d.height), f > a.width && b.error(b.c.Pq, a.url), g > a.height && b.error(b.c.Oq, a.url));
        this.texture = a;
        this.Ha(d, e);
        this.batchNode = null;
        return this.Dc = !0
    };
    a.Oo = function(a) {
        if (!this.T) {
            this.T = !0;
            var d = this.F;
            d ? b.Ns(d) && (d.width = a.width, d.height = a.height) : d = E(0, 0, a.width, a.height);
            this.texture = a;
            this.Ha(d, this.nb);
            this.batchNode = this.ca;
            this.Dc = !0;
            this.Ub()
        }
    };
    a.Ha = function(a, d, e) {
        this.nb = d || !1;
        this.wd(e || a);
        this.iv(a);
        this.Dy(a);
        a = this.le;
        this.gb && (a.x = -a.x);
        this.hb && (a.y = -a.y);
        var f = this.F;
        this.Oa.x = a.x + (this.v.width - f.width) / 2;
        this.Oa.y = a.y + (this.v.height - f.height) / 2;
        if (this.ca) this.dirty = !0;
        else {
            a = 0 + this.Oa.x;
            d = 0 + this.Oa.y;
            e = a + f.width;
            var f = d + f.height,
            g = this.Pa;
            g.wa.e = {
                x: a,
                y: d,
                z: 0
            };
            g.xa.e = {
                x: e,
                y: d,
                z: 0
            };
            g.ya.e = {
                x: a,
                y: f,
                z: 0
            };
            g.za.e = {
                x: e,
                y: f,
                z: 0
            };
            this.Dc = !0
        }
    };
    a.$c = function() {
        if (this.dirty) {
            var a = this.Pa,
            d = this.Db;
            if (!this.Gc || d && d != this.ca && d.xg) a.xa.e = a.ya.e = a.za.e = a.wa.e = {
                x: 0,
                y: 0,
                z: 0
            },
            this.xg = !0;
            else {
                this.xg = !1;
                var e = this.xh = d && d != this.ca ? b.Eh(this.Yl(), d.xh) : this.Yl(),
                f = this.F,
                d = this.Oa.x,
                g = this.Oa.y,
                h = d + f.width,
                k = g + f.height,
                m = e.Z,
                n = e.$,
                r = e.a,
                s = e.b,
                u = e.P,
                t = -e.J,
                e = d * r - g * t + m,
                f = d * s + g * u + n,
                v = h * r - g * t + m,
                g = h * s + g * u + n,
                w = h * r - k * t + m,
                h = h * s + k * u + n,
                m = d * r - k * t + m,
                d = d * s + k * u + n,
                k = this.Wo;
                b.Yv || (e |= 0, f |= 0, v |= 0, g |= 0, w |= 0, h |= 0, m |= 0, d |= 0);
                a.wa.e = {
                    x: e,
                    y: f,
                    z: k
                };
                a.xa.e = {
                    x: v,
                    y: g,
                    z: k
                };
                a.ya.e = {
                    x: m,
                    y: d,
                    z: k
                };
                a.za.e = {
                    x: w,
                    y: h,
                    z: k
                }
            }
            this.textureAtlas.Up(a, this.atlasIndex);
            this.dirty = this.ge = !1
        }
        this.Je && this.Gd(this.s, b.m.bd.$c);
        b.Uf && b.Hd.gc([C(this.Pa.wa.e.x, this.Pa.wa.e.y), C(this.Pa.xa.e.x, this.Pa.xa.e.y), C(this.Pa.za.e.x, this.Pa.za.e.y), C(this.Pa.ya.e.x, this.Pa.ya.e.y)], 4, !0)
    };
    a.N = function(a, d, e) {
        b.assert(a, b.c.RD);
        null == d && (d = a.Ia);
        null == e && (e = a.tag);
        if (this.ca) {
            if (! (a instanceof b.B)) {
                b.log(b.c.PD);
                return
            }
            a.texture.Ah !== this.textureAtlas.texture.Ah && b.log(b.c.QD);
            this.ca.appendChild(a);
            this.bc || this.ft()
        }
        b.m.prototype.N.call(this, a, d, e);
        this.Je = !0
    };
    a.Ga = function(a) {
        b.m.prototype.Ga.call(this, a);
        this.om()
    };
    a.V = function(a) {
        b.m.prototype.V.call(this, a);
        this.om()
    };
    a.sb = function(a) {
        b.m.prototype.sb.call(this, a);
        this.om()
    };
    a.Pg = function(a) {
        var d = this;
        "string" == typeof a && (a = b.ue.Ye(a), b.assert(a, b.c.iE));
        d.W(!0);
        var e = a.wu();
        d.le.x = e.x;
        d.le.y = e.y;
        e = a.La();
        a.T || (d.T = !1, a.Vc(function(a) {
            d.T = !0;
            var c = a.La();
            c != d.ea && (d.texture = c);
            d.Ha(a.pe(), a.qc, a.xj());
            d.Ub()
        },
        d));
        e != d.ea && (d.texture = e);
        d.nb = a.qc;
        d.Ha(a.pe(), d.nb, a.xj())
    };
    a.jA = function(a) {
        return b.AA(a.pe(), this.F) && a.La().getName() == this.ea.getName() && b.NL(a.wu(), this.le)
    };
    a.cv = function(a) {
        if (this.ca = a) this.xh = {
            a: 1,
            b: 0,
            J: 0,
            P: 1,
            Z: 0,
            $: 0
        },
        this.textureAtlas = this.ca.textureAtlas;
        else {
            this.atlasIndex = b.B.sq;
            this.textureAtlas = null;
            this.dirty = this.ge = !1;
            a = this.Oa.x;
            var d = this.Oa.y,
            e = a + this.F.width,
            f = d + this.F.height,
            g = this.Pa;
            g.wa.e = {
                x: a,
                y: d,
                z: 0
            };
            g.xa.e = {
                x: e,
                y: d,
                z: 0
            };
            g.ya.e = {
                x: a,
                y: f,
                z: 0
            };
            g.za.e = {
                x: e,
                y: f,
                z: 0
            };
            this.Dc = !0
        }
    };
    a.Wa = function(a) {
        a && "string" === typeof a ? (a = b.va.cc(a), this.Wa(a), a = a.ud(), this.Ha(E(0, 0, a.width, a.height))) : (b.assert(!a || a instanceof b.K, b.c.kE), this.ca && this.ca.texture != a ? b.log(b.c.jE) : (this.shaderProgram = a ? b.ff.Of(b.Wq) : b.ff.Of(b.Wv), this.ca || this.ea == a || (this.ea = a, this.yh())))
    };
    a.na = function() {
        if (this.T) {
            var a = b.l,
            d = this.ea;
            d ? d.xb && (this.Jb.wc(), this.Jb.xd(), b.Ph(this.t.src, this.t.Y), b.iV(0, d), b.tc(b.gn), a.bindBuffer(a.ARRAY_BUFFER, this.wo), this.Dc && (a.bufferData(a.ARRAY_BUFFER, this.Pa.Xo, a.DYNAMIC_DRAW), this.Dc = !1), a.vertexAttribPointer(0, 3, a.FLOAT, !1, 24, 0), a.vertexAttribPointer(1, 4, a.UNSIGNED_BYTE, !0, 24, 12), a.vertexAttribPointer(2, 2, a.FLOAT, !1, 24, 16), a.drawArrays(a.TRIANGLE_STRIP, 0, 4)) : (this.Jb.wc(), this.Jb.xd(), b.Ph(this.t.src, this.t.Y), b.qe(null), b.tc(b.Lc | b.cr), a.bindBuffer(a.ARRAY_BUFFER, this.wo), this.Dc && (b.l.bufferData(b.l.ARRAY_BUFFER, this.Pa.Xo, b.l.STATIC_DRAW), this.Dc = !1), a.vertexAttribPointer(b.lc, 3, a.FLOAT, !1, 24, 0), a.vertexAttribPointer(b.Ck, 4, a.UNSIGNED_BYTE, !0, 24, 12), a.drawArrays(a.TRIANGLE_STRIP, 0, 4));
            b.We++;
            if (0 !== b.Uf || this.jt) 1 === b.Uf || this.jt ? (a = this.Pa, b.Hd.gc([C(a.ya.e.x, a.ya.e.y), C(a.wa.e.x, a.wa.e.y), C(a.xa.e.x, a.xa.e.y), C(a.za.e.x, a.za.e.y)], 4, !0)) : 2 === b.Uf && (a = this.Pz(), d = this.qK(), b.Hd.gc([C(d.x, d.y), C(d.x + a.width, d.y), C(d.x + a.width, d.y + a.height), C(d.x, d.y + a.height)], 4, !0))
        }
    };
    delete a
};
b.p.Kq = function() {
    var a = b.B.prototype;
    b.k(a, "opacityModifyRGB", a.Dj, a.Ng);
    b.k(a, "opacity", a.wj, a.Ga);
    b.k(a, "color", a.Nh, a.V);
    b.k(a, "flippedX", a.$K, a.GM);
    b.k(a, "flippedY", a.aL, a.HM);
    b.k(a, "offsetX", a.iG);
    b.k(a, "offsetY", a.jG);
    b.k(a, "texture", a.La, a.Wa);
    b.k(a, "textureRectRotated", a.eL);
    b.k(a, "batchNode", a.QJ, a.cv);
    b.k(a, "quad", a.vK)
};
b.tj = function(a, c, d, e) {
    e = e || b.rb("canvas");
    d = d || E(0, 0, a.width, a.height);
    var f = e.getContext("2d");
    e.width != d.width || e.height != d.height ? (e.width = d.width, e.height = d.height) : f.globalCompositeOperation = "source-over";
    f.fillStyle = "rgb(" + c.r + "," + c.g + "," + c.b + ")";
    f.fillRect(0, 0, d.width, d.height);
    f.globalCompositeOperation = "multiply";
    f.drawImage(a, d.x, d.y, d.width, d.height, 0, 0, d.width, d.height);
    f.globalCompositeOperation = "destination-atop";
    f.drawImage(a, d.x, d.y, d.width, d.height, 0, 0, d.width, d.height);
    return e
};
b.sj = function(a, c, d, e, f) {
    e || (e = E(0, 0, a.width, a.height));
    a = d.r / 255;
    var g = d.g / 255;
    d = d.b / 255;
    var h = Math.min(e.width, c[0].width),
    k = Math.min(e.height, c[0].height),
    m;
    f ? (m = f.getContext("2d"), m.clearRect(0, 0, h, k)) : (f = b.rb("canvas"), f.width = h, f.height = k, m = f.getContext("2d"));
    m.save();
    m.globalCompositeOperation = "lighter";
    var n = m.globalAlpha;
    0 < a && (m.globalAlpha = a * n, m.drawImage(c[0], e.x, e.y, h, k, 0, 0, h, k));
    0 < g && (m.globalAlpha = g * n, m.drawImage(c[1], e.x, e.y, h, k, 0, 0, h, k));
    0 < d && (m.globalAlpha = d * n, m.drawImage(c[2], e.x, e.y, h, k, 0, 0, h, k));
    1 > a + g + d && (m.globalAlpha = n, m.drawImage(c[3], e.x, e.y, h, k, 0, 0, h, k));
    m.restore();
    return f
};
b.rj = function(a) {
    function c() {
        var c = b.rj,
        e = a.width,
        h = a.height;
        d[0].width = e;
        d[0].height = h;
        d[1].width = e;
        d[1].height = h;
        d[2].width = e;
        d[2].height = h;
        d[3].width = e;
        d[3].height = h;
        c.canvas.width = e;
        c.canvas.height = h;
        var k = c.canvas.getContext("2d");
        k.drawImage(a, 0, 0);
        c.mv.width = e;
        c.mv.height = h;
        for (var k = k.getImageData(0, 0, e, h).data, m = 0; 4 > m; m++) {
            var n = d[m].getContext("2d");
            n.getImageData(0, 0, e, h).data;
            c.qB.drawImage(a, 0, 0);
            for (var r = c.qB.getImageData(0, 0, e, h), s = r.data, u = 0; u < k.length; u += 4) s[u] = 0 === m ? k[u] : 0,
            s[u + 1] = 1 === m ? k[u + 1] : 0,
            s[u + 2] = 2 === m ? k[u + 2] : 0,
            s[u + 3] = k[u + 3];
            n.putImageData(r, 0, 0)
        }
        a.onload = null
    }
    if (a.nz) return a.nz;
    var d = [b.rb("canvas"), b.rb("canvas"), b.rb("canvas"), b.rb("canvas")];
    try {
        c()
    } catch(e) {
        a.onload = c
    }
    return a.nz = d
};
b.rj.canvas = b.rb("canvas");
b.rj.mv = b.rb("canvas");
b.rj.qB = b.rj.mv.getContext("2d");
b.fu = function(a, c) {
    if (!a) return null;
    if (!c) return a;
    var d = b.rb("canvas");
    d.width = c.width;
    d.height = c.height;
    var e = d.getContext("2d");
    e.translate(d.width / 2, d.height / 2);
    e.rotate( - 1.5707963267948966);
    e.drawImage(a, c.x, c.y, c.height, c.width, -c.height / 2, -c.width / 2, c.height, c.width);
    return d
};
b.B = b.m.extend({
    dirty: !1,
    atlasIndex: 0,
    textureAtlas: null,
    ca: null,
    ge: null,
    Je: null,
    xg: !1,
    xh: null,
    t: null,
    ea: null,
    F: null,
    nb: !1,
    Oa: null,
    le: null,
    Da: !1,
    gb: !1,
    hb: !1,
    T: !1,
    qa: null,
    lo: null,
    Mc: "Sprite",
    Tx: b.color.WHITE,
    nv: function() {
        return this.T
    },
    Vc: function(a, c) {
        this.qa || (this.qa = []);
        this.qa.push({
            ne: a,
            td: c
        })
    },
    Ub: function() {
        if (this.qa) {
            for (var a = this.qa,
            c = 0,
            d = a.length; c < d; c++) {
                var e = a[c];
                e.ne.call(e.td, this)
            }
            a.length = 0
        }
    },
    iA: function() {
        return this.dirty
    },
    XA: function(a) {
        this.dirty = a
    },
    eL: function() {
        return this.nb
    },
    HT: function() {
        return this.atlasIndex
    },
    WX: function(a) {
        this.atlasIndex = a
    },
    Pz: function() {
        return E(this.F.x, this.F.y, this.F.width, this.F.height)
    },
    Oz: function() {
        return this.textureAtlas
    },
    hB: function(a) {
        this.textureAtlas = a
    },
    qK: function() {
        return C(this.Oa)
    },
    iG: function() {
        return this.Oa.x
    },
    jG: function() {
        return this.Oa.y
    },
    Ml: function() {
        return this.t
    },
    $e: function(a) {
        b.assert(a, b.c.XD);
        a.T || (this.T = !1, a.Vc(this.ot, this));
        var c = b.da === b.Ya ? !1 : a.qc,
        c = this.ia(a.La(), a.pe(), c);
        this.Pg(a);
        return c
    },
    ot: null,
    pV: function(a) {
        b.assert(a, b.c.YD);
        var c = b.ue.Ye(a);
        b.assert(c, a + b.c.ZD);
        return this.$e(c)
    },
    zZ: function(a) {
        this.textureAtlas = a.textureAtlas;
        this.ca = a
    },
    iv: function(a) {
        this.F.x = a.x;
        this.F.y = a.y;
        this.F.width = a.width;
        this.F.height = a.height
    },
    vc: function() {
        if (this.bc) {
            var a = this.s,
            c = a.length,
            d, e, f;
            for (d = 1; d < c; d++) {
                f = a[d];
                for (e = d - 1; 0 <= e;) {
                    if (f.Ia < a[e].Ia) a[e + 1] = a[e];
                    else if (f.Ia === a[e].Ia && f.arrivalOrder < a[e].arrivalOrder) a[e + 1] = a[e];
                    else break;
                    e--
                }
                a[e + 1] = f
            }
            this.ca && this.Gd(a, b.m.bd.vc);
            this.bc = !1
        }
    },
    im: function(a, c) {
        b.assert(a, b.c.dE); - 1 === this.s.indexOf(a) ? b.log(b.c.cE) : c !== a.zIndex && (this.ca && !this.bc && (this.ft(), this.ca.FA(!0)), b.m.prototype.im.call(this, a, c))
    },
    removeChild: function(a, c) {
        this.ca && this.ca.Xh(a);
        b.m.prototype.removeChild.call(this, a, c)
    },
    te: function(a) {
        b.m.prototype.te.call(this, a);
        this.dv(!0)
    },
    df: function(a) {
        var c = this.s,
        d = this.ca;
        if (d && null != c) for (var e = 0,
        f = c.length; e < f; e++) d.Xh(c[e]);
        b.m.prototype.df.call(this, a);
        this.Je = !1
    },
    dv: function(a) {
        this.dirty = this.ge = a;
        a = this.s;
        for (var c, d = a ? a.length: 0, e = 0; e < d; e++) c = a[e],
        c instanceof b.B && c.dv(!0)
    },
    W: function(a) {
        b.m.prototype.W.call(this);
        a || !this.ca || this.ge || (this.Je ? this.dv(!0) : this.dirty = this.ge = !0)
    },
    Gu: function(a) {
        this.ca ? b.log(b.c.VD) : b.m.prototype.Gu.call(this, a)
    },
    GM: function(a) {
        this.gb != a && (this.gb = a, this.Ha(this.F, this.nb, this.v), this.W(!0))
    },
    HM: function(a) {
        this.hb != a && (this.hb = a, this.Ha(this.F, this.nb, this.v), this.W(!0))
    },
    $K: function() {
        return this.gb
    },
    aL: function() {
        return this.hb
    },
    Ng: null,
    Dj: function() {
        return this.Da
    },
    kb: null,
    iY: function(a, c) {
        b.assert(a, b.c.hE);
        var d = b.Fh.np(a);
        d ? (d = d.$b[c]) ? this.Pg(d.Ye()) : b.log(b.c.gE) : b.log(b.c.fE)
    },
    QJ: function() {
        return this.ca
    },
    ft: function() {
        if (!this.bc) {
            this.bc = !0;
            for (var a = this.Db; a && a != this.ca;) a.ft(),
            a = a.parent
        }
    },
    La: function() {
        return this.ea
    },
    Pa: null,
    wo: null,
    Dc: !1,
    yn: !1,
    cl: !1,
    mb: null,
    ij: null,
    Fw: null,
    ctor: null,
    Jy: function(a, c, d) {
        if (void 0 === a) b.B.prototype.ga.call(this);
        else if ("string" === typeof a)"#" === a[0] ? (a = b.ue.Ye(a.substr(1, a.length - 1)), this.$e(a)) : b.B.prototype.ga.call(this, a, c);
        else if ("object" === typeof a) if (a instanceof b.K) this.ia(a, c, d);
        else if (a instanceof b.zc) this.$e(a);
        else if (a instanceof HTMLImageElement || a instanceof HTMLCanvasElement) c = new b.K,
        c.Mb(a),
        c.Fa(),
        this.ia(c)
    },
    vK: function() {
        return this.Pa
    },
    $h: null,
    ga: null,
    Tl: function(a, c) {
        b.assert(a, b.c.WD);
        var d = b.va.lm(a);
        if (d) {
            if (!c) {
                var e = d.ud();
                c = E(0, 0, e.width, e.height)
            }
            return this.ia(d, c)
        }
        d = b.va.cc(a);
        return this.ia(d, c || E(0, 0, d.v.width, d.v.height))
    },
    ia: null,
    Oo: null,
    Ha: null,
    $c: null,
    N: null,
    om: function() {
        var a = this.Q,
        c = this.sa,
        a = {
            r: a.r,
            g: a.g,
            b: a.b,
            a: c
        };
        this.Da && (a.r *= c / 255, a.g *= c / 255, a.b *= c / 255);
        c = this.Pa;
        c.wa.j = a;
        c.xa.j = a;
        c.ya.j = a;
        c.za.j = a;
        this.ca && (this.atlasIndex != b.B.sq ? this.textureAtlas.Up(c, this.atlasIndex) : this.dirty = !0);
        this.Dc = !0
    },
    Ga: null,
    V: null,
    sb: null,
    Pg: null,
    hY: function(a) {
        b.log(b.c.eE);
        this.Pg(a)
    },
    jA: null,
    cJ: function() {
        return b.zc.create(this.ea, b.gm(this.F), this.nb, b.PL(this.le), b.rN(this.v))
    },
    cv: null,
    Wa: null,
    yh: function() {
        this.ca ? b.log(b.c.OD) : this.ea && this.ea.Aj() ? (this.t.src = b.kc, this.t.Y = b.jc, this.opacityModifyRGB = !0) : (this.t.src = b.SRC_ALPHA, this.t.Y = b.ONE_MINUS_SRC_ALPHA, this.opacityModifyRGB = !1)
    },
    fd: function() {
        var a, c = this.ea,
        d = this.ij;
        c && d.Xj && this.mb && (a = c.la) && (this.yn = !0, a instanceof HTMLCanvasElement && !this.nb && !this.lo ? b.tj(this.mb.la, this.Q, d, a) : (a = b.tj(this.mb.la, this.Q, d), c = new b.K, c.Mb(a), c.Fa(), this.texture = c))
    },
    Dy: function(a) {
        a = b.gm(a);
        var c = this.ca ? this.textureAtlas.texture: this.ea;
        if (c) {
            var d = c.pixelsWidth,
            e = c.pixelsHeight,
            f, g = this.Pa;
            this.nb ? (b.vk ? (c = (2 * a.x + 1) / (2 * d), d = c + (2 * a.height - 2) / (2 * d), f = (2 * a.y + 1) / (2 * e), a = f + (2 * a.width - 2) / (2 * e)) : (c = a.x / d, d = (a.x + a.height) / d, f = a.y / e, a = (a.y + a.width) / e), this.gb && (e = f, f = a, a = e), this.hb && (e = c, c = d, d = e), g.wa.f.R = c, g.wa.f.S = f, g.xa.f.R = c, g.xa.f.S = a, g.ya.f.R = d, g.ya.f.S = f, g.za.f.R = d, g.za.f.S = a) : (b.vk ? (c = (2 * a.x + 1) / (2 * d), d = c + (2 * a.width - 2) / (2 * d), f = (2 * a.y + 1) / (2 * e), a = f + (2 * a.height - 2) / (2 * e)) : (c = a.x / d, d = (a.x + a.width) / d, f = a.y / e, a = (a.y + a.height) / e), this.gb && (e = c, c = d, d = e), this.hb && (e = f, f = a, a = e), g.wa.f.R = c, g.wa.f.S = a, g.xa.f.R = d, g.xa.f.S = a, g.ya.f.R = c, g.ya.f.S = f, g.za.f.R = d, g.za.f.S = f);
            this.Dc = !0
        }
    },
    na: null
});
b.B.create = function(a, c, d) {
    return new b.B(a, c, d)
};
b.B.eu = b.B.create;
b.B.qS = b.B.create;
b.B.pS = b.B.create;
b.B.sq = -1;
b.da === b.Ya ? (p = b.B.prototype, p.ot = function(a) {
    this.W(!0);
    this.Ha(a.pe(), a.qc, a.xj());
    a = this.color;
    255 === a.r && 255 === a.g && 255 === a.b || this.fd();
    this.Ub()
},
p.Ng = function(a) {
    this.Da !== a && (this.Da = a, this.W(!0))
},
p.kb = function(a) {
    b.m.prototype.kb.call(this, a);
    this.aj()
},
p.ctor = function(a, c, d) {
    b.m.prototype.ctor.call(this);
    this.xg = !1;
    this.Oa = C(0, 0);
    this.le = C(0, 0);
    this.t = {
        src: b.kc,
        Y: b.jc
    };
    this.F = E(0, 0, 0, 0);
    this.lo = !1;
    this.T = !0;
    this.ij = {
        x: 0,
        y: 0,
        width: 0,
        height: 0,
        Xj: !1
    };
    this.Fw = D(0, 0);
    this.Jy(a, c, d)
},
p.$h = function(a, c) {
    var d = this.t;
    void 0 === c ? (d.src = a.src, d.Y = a.Y) : (d.src = a, d.Y = c);
    this.cl = d && (d.src == b.SRC_ALPHA && d.Y == b.ONE || d.src == b.ONE && d.Y == b.ONE)
},
p.ga = function() {
    if (0 < arguments.length) return this.Tl(arguments[0], arguments[1]);
    b.m.prototype.ga.call(this);
    this.dirty = this.ge = !1;
    this.Da = !0;
    this.t.src = b.kc;
    this.t.Y = b.jc;
    this.texture = null;
    this.T = !0;
    this.gb = this.hb = !1;
    this.anchorY = this.anchorX = 0.5;
    this.Oa.x = 0;
    this.Oa.y = 0;
    this.Je = !1;
    this.Ha(E(0, 0, 0, 0), !1, D(0, 0));
    return ! 0
},
p.ia = function(a, c, d) {
    b.assert(0 != arguments.length, b.c.TB);
    if ((d = d || !1) && a.xb) {
        var e = a.la,
        e = b.fu(e, c),
        f = new b.K;
        f.Mb(e);
        f.Fa();
        a = f;
        this.F = E(0, 0, c.width, c.height)
    }
    if (!b.m.prototype.ga.call(this)) return ! 1;
    this.ca = null;
    this.dirty = this.ge = !1;
    this.Da = !0;
    this.t.src = b.kc;
    this.t.Y = b.jc;
    this.gb = this.hb = !1;
    this.anchorY = this.anchorX = 0.5;
    this.Oa.x = 0;
    this.Oa.y = 0;
    this.Je = !1;
    this.T = e = a.xb;
    if (!e) return this.nb = d,
    c && (this.F.x = c.x, this.F.y = c.y, this.F.width = c.width, this.F.height = c.height),
    a.Vc(this.Oo, this),
    !0;
    c || (c = E(0, 0, a.width, a.height));
    a && a.url && (e = c.y + c.height, c.x + c.width > a.width && b.error(b.c.Pq, a.url), e > a.height && b.error(b.c.Oq, a.url));
    this.texture = this.mb = a;
    this.Ha(c, d);
    this.batchNode = null;
    return ! 0
},
p.Oo = function(a) {
    if (!this.T) {
        this.T = !0;
        var c = this.F;
        c ? b.Ns(c) && (c.width = a.width, c.height = a.height) : c = E(0, 0, a.width, a.height);
        this.texture = this.mb = a;
        this.Ha(c, this.nb);
        a = this.Q;
        255 == a.r && 255 == a.g && 255 == a.b || this.fd();
        this.batchNode = this.ca;
        this.Ub()
    }
},
p.Ha = function(a, c, d) {
    this.nb = c || !1;
    this.wd(d || a);
    this.iv(a);
    c = this.ij;
    d = b.Ka();
    c.x = 0 | a.x * d;
    c.y = 0 | a.y * d;
    c.width = 0 | a.width * d;
    c.height = 0 | a.height * d;
    c.Xj = !(0 === c.width || 0 === c.height || 0 > c.x || 0 > c.y);
    a = this.le;
    this.gb && (a.x = -a.x);
    this.hb && (a.y = -a.y);
    this.Oa.x = a.x + (this.v.width - this.F.width) / 2;
    this.Oa.y = a.y + (this.v.height - this.F.height) / 2;
    this.ca && (this.dirty = !0)
},
p.$c = function() {
    if (this.dirty) {
        var a = this.Db; ! this.Gc || a && a != this.ca && a.xg ? this.xg = !0 : (this.xg = !1, this.xh = a && a != this.ca ? b.Eh(this.Yl(), a.xh) : this.Yl());
        this.dirty = this.ge = !1
    }
    this.Je && this.Gd(this.s, b.m.bd.$c)
},
p.N = function(a, c, d) {
    b.assert(a, b.c.RB);
    null == c && (c = a.Ia);
    null == d && (d = a.tag);
    b.m.prototype.N.call(this, a, c, d);
    this.Je = !0
},
p.Ga = function(a) {
    b.m.prototype.Ga.call(this, a);
    this.aj()
},
p.V = function(a) {
    var c = this.color;
    this.Tx = c;
    c.r === a.r && c.g === a.g && c.b === a.b || b.m.prototype.V.call(this, a)
},
p.sb = function(a) {
    b.m.prototype.sb.call(this, a);
    a = this.Tx;
    var c = this.Q;
    if (a.r !== c.r || a.g !== c.g || a.b !== c.b) this.fd(),
    this.aj()
},
p.Pg = function(a) {
    var c = this;
    "string" == typeof a && (a = b.ue.Ye(a), b.assert(a, b.c.WB));
    c.W(!0);
    var d = a.wu();
    c.le.x = d.x;
    c.le.y = d.y;
    c.nb = a.qc;
    var d = a.La(),
    e = a.T;
    e || (c.T = !1, a.Vc(function(a) {
        c.T = !0;
        var d = a.La();
        d != c.ea && (c.texture = d);
        c.Ha(a.pe(), a.qc, a.xj());
        c.Ub()
    },
    c));
    d != c.ea && (c.texture = d);
    c.nb && (c.mb = d);
    c.Ha(a.pe(), c.nb, a.xj());
    c.yn = !1;
    e && (a = c.color, 255 === a.r && 255 === a.g && 255 === a.b || c.fd())
},
p.jA = function(a) {
    return a.La() != this.ea ? !1 : b.AA(a.pe(), this.F)
},
p.cv = function(a) { (this.ca = a) ? (this.xh = {
        a: 1,
        b: 0,
        J: 0,
        P: 1,
        Z: 0,
        $: 0
    },
    this.textureAtlas = this.ca.textureAtlas) : (this.atlasIndex = b.B.sq, this.textureAtlas = null, this.dirty = this.ge = !1)
},
p.Wa = function(a) {
    a && "string" === typeof a ? (a = b.va.cc(a), this.Wa(a), a = a.ud(), this.Ha(E(0, 0, a.width, a.height))) : (b.assert(!a || a instanceof b.K, b.c.XB), this.ea != a && (a && a.la instanceof HTMLImageElement && (this.mb = a), this.ea = a))
},
p.na = function(a) {
    if (this.T) {
        a = a || b.l;
        this.cl && (a.globalCompositeOperation = "lighter");
        var c = b.view.O,
        d = b.view.ma;
        a.globalAlpha = this.sa / 255;
        var e = this.F,
        f = this.v,
        g = this.Oa,
        h = this.Fw,
        k = 0 | g.x,
        m = -g.y - e.height,
        n = this.ij;
        h.width = e.width * c;
        h.height = e.height * d;
        if (this.gb || this.hb) a.save(),
        this.gb && (k = -g.x - e.width, a.scale( - 1, 1)),
        this.hb && (m = g.y, a.scale(1, -1));
        k *= c;
        m *= d;
        this.ea && n.Xj ? (f = this.ea.la, this.yn ? a.drawImage(f, 0, 0, n.width, n.height, k, m, h.width, h.height) : a.drawImage(f, n.x, n.y, n.width, n.height, k, m, h.width, h.height)) : !this.ea && n.Xj && (h = this.color, a.fillStyle = "rgba(" + h.r + "," + h.g + "," + h.b + ",1)", a.fillRect(k, m, f.width * c, f.height * d));
        1 === b.Uf || this.jt ? (a.strokeStyle = "rgba(0,255,0,1)", k /= c, m = -(m / d), b.Hd.gc([C(k, m), C(k + e.width, m), C(k + e.width, m - e.height), C(k, m - e.height)], 4, !0)) : 2 === b.Uf && (a.strokeStyle = "rgba(0,255,0,1)", c = this.F, m = -m, b.Hd.gc([C(k, m), C(k + c.width, m), C(k + c.width, m - c.height), C(k, m - c.height)], 4, !0)); (this.gb || this.hb) && a.restore();
        b.We++
    }
},
b.Aa.wt || (p.fd = function() {
    var a, c = this.ea,
    d = this.ij;
    c && d.Xj && this.mb && (a = c.la) && (c = b.va.zu(this.mb.la)) && (this.yn = !0, a instanceof HTMLCanvasElement && !this.nb && !this.lo ? b.sj(a, c, this.Q, d, a) : (a = b.sj(a, c, this.Q, d), c = new b.K, c.Mb(a), c.Fa(), this.texture = c))
}), delete p) : (b.assert("function" === typeof b.p.kr, b.c.Gb, "SpritesWebGL.js"), b.p.kr(), delete b.p.kr);
b.assert("function" === typeof b.p.Kq, b.c.Gb, "SpritesPropertyDefine.js");
b.p.Kq();
delete b.p.Kq;
b.iq = 29;
b.Vf = b.m.extend({
    textureAtlas: null,
    t: null,
    Xb: null,
    Mc: "SpriteBatchNode",
    IR: function(a, c, d) {
        b.assert(a, b.c.ID);
        if (! (a instanceof b.B)) return b.log(b.c.HD),
        null;
        a.atlasIndex = c;
        var e = 0,
        f = this.Xb;
        if (f && 0 < f.length) for (var g = 0; g < f.length; g++) {
            var h = f[g];
            h && h.atlasIndex >= c && ++e
        }
        f.splice(e, 0, a);
        b.m.prototype.N.call(this, a, c, d);
        this.FA(!1);
        return this
    },
    Oz: function() {
        return this.textureAtlas
    },
    hB: function(a) {
        a != this.textureAtlas && (this.textureAtlas = a)
    },
    XJ: function() {
        return this.Xb
    },
    Tl: function(a, c) {
        var d = b.va.lm(a);
        d || (d = b.va.cc(a));
        return this.ia(d, c)
    },
    aj: function() {
        this.Ce = !0
    },
    ga: function(a, c) {
        var d = b.va.lm(a);
        d || (d = b.va.cc(a));
        return this.ia(d, c)
    },
    tp: function() {
        var a = this.textureAtlas.capacity,
        c = Math.floor(4 * (a + 1) / 3);
        b.log(b.c.JD, a, c);
        this.textureAtlas.JA(c) || b.log(b.c.KD)
    },
    wX: function(a, c) {
        this.removeChild(this.s[a], c)
    },
    yA: function(a, c) {
        var d = a.children;
        if (d && 0 < d.length) for (var e = 0; e < d.length; e++) {
            var f = d[e];
            f && 0 > f.zIndex && (c = this.yA(f, c))
        } ! a == this && (a.atlasIndex = c, c++);
        if (d && 0 < d.length) for (e = 0; e < d.length; e++)(f = d[e]) && 0 <= f.zIndex && (c = this.yA(f, c));
        return c
    },
    Fu: function(a) {
        var c = a.children;
        return c && 0 != c.length ? this.Fu(c[c.length - 1]) : a.atlasIndex
    },
    vL: function(a) {
        var c = a.children;
        return c && 0 != c.length ? this.vL(c[c.length - 1]) : a.atlasIndex
    },
    BI: function(a, c) {
        var d = a.parent,
        e = d.children,
        f = e.indexOf(a),
        g = null;
        0 < f && f < b.RE && (g = e[f - 1]);
        return d == this ? 0 == f ? 0 : this.Fu(g) + 1 : 0 == f ? 0 > c ? d.atlasIndex: d.atlasIndex + 1 : 0 > g.zIndex && 0 > c || 0 <= g.zIndex && 0 <= c ? this.Fu(g) + 1 : d.atlasIndex + 1
    },
    FA: function(a) {
        this.bc = a
    },
    $h: function(a, c) {
        this.t = void 0 === c ? a: {
            src: a,
            Y: c
        }
    },
    Ml: function() {
        return this.t
    },
    im: function(a, c) {
        b.assert(a, b.c.ND); - 1 === this.s.indexOf(a) ? b.log(b.c.MD) : c !== a.zIndex && (b.m.prototype.im.call(this, a, c), this.W())
    },
    removeChild: function(a, c) {
        null != a && ( - 1 === this.s.indexOf(a) ? b.log(b.c.LD) : (this.Xh(a), b.m.prototype.removeChild.call(this, a, c)))
    },
    UG: null,
    vh: null,
    xR: !1,
    mb: null,
    ctor: null,
    zF: function(a, c) {
        b.m.prototype.ctor.call(this);
        var d;
        c = c || b.iq;
        "string" == typeof a ? (d = b.va.lm(a)) || (d = b.va.cc(a)) : a instanceof b.K && (d = a);
        d && this.ia(d, c)
    },
    AF: function(a, c) {
        b.m.prototype.ctor.call(this);
        this.UG = new b.re;
        var d;
        c = c || b.iq;
        "string" == typeof a ? (d = b.va.lm(a)) || (d = b.va.cc(a)) : a instanceof b.K && (d = a);
        d && this.ia(d, c)
    },
    CB: null,
    cI: function(a, c) {
        b.assert(a, b.c.YB);
        a instanceof b.B ? (a.batchNode = this, a.atlasIndex = c, a.dirty = !0, a.$c()) : b.log(b.c.eq)
    },
    dI: function(a, c) {
        b.assert(a, b.c.eq);
        if (a instanceof b.B) {
            for (var d = this.textureAtlas.capacity; c >= d || d == this.textureAtlas.totalQuads;) this.tp();
            a.batchNode = this;
            a.atlasIndex = c;
            a.dirty = !0;
            a.$c()
        } else b.log(b.c.eq)
    },
    Mo: function(a, c) {
        var d = this.Xb,
        e = this.textureAtlas,
        f = e.quads,
        g = d[a],
        h = b.ew(f[a]);
        d[c].atlasIndex = a;
        d[a] = d[c];
        e.Up(f[c], a);
        d[c] = g;
        e.Up(h, c)
    },
    eA: null,
    EG: function(a, c) {
        b.assert(a, b.c.VB);
        a instanceof b.B ? (a.batchNode = this, a.atlasIndex = c, a.dirty = !0, a.$c(), this.s.splice(c, 0, a)) : b.log(b.c.UB)
    },
    FG: function(a, c) {
        b.assert(a, b.c.bE);
        if (a instanceof b.B) {
            for (var d = this.textureAtlas; c >= d.capacity || d.capacity === d.totalQuads;) this.tp();
            a.batchNode = this;
            a.atlasIndex = c;
            d.Iu(a.quad, c);
            a.dirty = !0;
            a.$c()
        } else b.log(b.c.aE)
    },
    Vy: function(a, c) {
        var d = 0,
        e = a.children;
        e && (d = e.length);
        var f = 0;
        if (0 === d) f = a.atlasIndex,
        a.atlasIndex = c,
        a.arrivalOrder = 0,
        f != c && this.Mo(f, c),
        c++;
        else {
            f = !0;
            0 <= e[0].zIndex && (f = a.atlasIndex, a.atlasIndex = c, a.arrivalOrder = 0, f != c && this.Mo(f, c), c++, f = !1);
            for (d = 0; d < e.length; d++) {
                var g = e[d];
                f && 0 <= g.zIndex && (f = a.atlasIndex, a.atlasIndex = c, a.arrivalOrder = 0, f != c && this.Mo(f, c), c++, f = !1);
                c = this.Vy(g, c)
            }
            f && (f = a.atlasIndex, a.atlasIndex = c, a.arrivalOrder = 0, f != c && this.Mo(f, c), c++)
        }
        return c
    },
    yh: function() {
        this.textureAtlas.texture.Aj() || (this.t.src = b.SRC_ALPHA, this.t.Y = b.ONE_MINUS_SRC_ALPHA)
    },
    ia: null,
    hs: function(a) {
        this.s = [];
        this.Xb = [];
        this.t = new b.cb(b.kc, b.jc);
        this.vh = this.mb = a;
        return ! 0
    },
    is: function(a, c) {
        this.s = [];
        this.Xb = [];
        this.t = new b.cb(b.kc, b.jc);
        c = c || b.iq;
        this.textureAtlas = new b.mf;
        this.textureAtlas.ia(a, c);
        this.yh();
        this.shaderProgram = b.ff.Of(b.Wq);
        return ! 0
    },
    YK: function(a, c) {
        a.batchNode = this;
        a.atlasIndex = c;
        a.dirty = !0;
        var d = this.textureAtlas;
        d.totalQuads >= d.capacity && this.tp();
        d.Iu(a.quad, c);
        this.Xb.splice(c, 0, a);
        var d = c + 1,
        e = this.Xb;
        if (e && 0 < e.length) for (; d < e.length; d++) e[d].atlasIndex++;
        var e = a.children,
        f;
        if (e) for (d = 0, l = e.length || 0; d < l; d++)(f = e[d]) && this.YK(f, this.BI(f, f.zIndex))
    },
    appendChild: null,
    lF: function(a) {
        this.bc = !0;
        a.batchNode = this;
        a.dirty = !0;
        this.Xb.push(a);
        a.atlasIndex = this.Xb.length - 1;
        a = a.children;
        for (var c = 0,
        d = a.length || 0; c < d; c++) this.appendChild(a[c])
    },
    mF: function(a) {
        this.bc = !0;
        a.batchNode = this;
        a.dirty = !0;
        this.Xb.push(a);
        var c = this.Xb.length - 1;
        a.atlasIndex = c;
        var d = this.textureAtlas;
        d.totalQuads == d.capacity && this.tp();
        d.Iu(a.quad, c);
        a = a.children;
        c = 0;
        for (d = a.length || 0; c < d; c++) this.appendChild(a[c])
    },
    Xh: null,
    nH: function(a) {
        a.batchNode = null;
        var c = this.Xb,
        d = c.indexOf(a);
        if ( - 1 != d) {
            c.splice(d, 1);
            for (var e = c.length; d < e; ++d) c[d].atlasIndex--
        }
        if (a = a.children) for (c = 0, d = a.length || 0; c < d; c++) a[c] && this.Xh(a[c])
    },
    oH: function(a) {
        this.textureAtlas.dM(a.atlasIndex);
        a.batchNode = null;
        var c = this.Xb,
        d = c.indexOf(a);
        if ( - 1 != d) {
            c.splice(d, 1);
            for (var e = c.length; d < e; ++d) c[d].atlasIndex--
        }
        if (a = a.children) for (c = 0, d = a.length || 0; c < d; c++) a[c] && this.Xh(a[c])
    },
    La: null,
    cs: function() {
        return this.vh
    },
    ds: function() {
        return this.textureAtlas.texture
    },
    Wa: null,
    gt: function(a) {
        this.vh = a;
        for (var c = this.s,
        d = 0; d < c.length; d++) c[d].texture = a
    },
    ht: function(a) {
        this.textureAtlas.texture = a;
        this.yh()
    },
    Ba: null,
    eI: function(a) {
        var c = a || b.l;
        if (this.Gc) {
            c.save();
            this.transform(a);
            var d = this.s;
            if (d) for (this.vc(), a = 0; a < d.length; a++) d[a] && d[a].Ba(c);
            c.restore()
        }
    },
    fI: function(a) {
        a = a || b.l;
        if (this.Gc) {
            b.oL();
            var c = this.zj;
            c && c.fA() && (c.HI(), this.vB());
            this.vc();
            this.transform(a);
            this.na(a);
            c && c.fA() && c.nI(this);
            b.nL();
            this.arrivalOrder = 0
        }
    },
    N: null,
    rr: function(a, c, d) {
        b.assert(null != a, b.c.SB);
        a instanceof b.B ? (c = null == c ? a.zIndex: c, d = null == d ? a.tag: d, b.m.prototype.N.call(this, a, c, d), this.appendChild(a), this.W()) : b.log(b.c.QB)
    },
    hF: function(a, c, d) {
        b.assert(null != a, b.c.UD);
        a instanceof b.B ? a.texture != this.textureAtlas.texture ? b.log(b.c.TD) : (c = null == c ? a.zIndex: c, d = null == d ? a.tag: d, b.m.prototype.N.call(this, a, c, d), this.appendChild(a), this.W()) : b.log(b.c.SD)
    },
    df: null,
    lH: function(a) {
        var c = this.Xb;
        if (c && 0 < c.length) for (var d = 0,
        e = c.length; d < e; d++) c[d] && (c[d].batchNode = null);
        b.m.prototype.df.call(this, a);
        this.Xb.length = 0
    },
    mH: function(a) {
        var c = this.Xb;
        if (c && 0 < c.length) for (var d = 0,
        e = c.length; d < e; d++) c[d] && (c[d].batchNode = null);
        b.m.prototype.df.call(this, a);
        this.Xb.length = 0;
        this.textureAtlas.$L()
    },
    vc: null,
    OH: function() {
        if (this.bc) {
            var a, c = 0,
            d = this.s,
            e = d.length,
            f;
            for (a = 1; a < e; a++) {
                var g = d[a],
                c = a - 1;
                for (f = d[c]; 0 <= c && (g.Ia < f.Ia || g.Ia == f.Ia && g.arrivalOrder < f.arrivalOrder);) d[c + 1] = f,
                c -= 1,
                f = d[c];
                d[c + 1] = g
            }
            0 < d.length && this.Gd(d, b.m.bd.vc);
            this.bc = !1
        }
    },
    PH: function() {
        if (this.bc) {
            var a = this.s,
            c, d = 0,
            e = a.length,
            f;
            for (c = 1; c < e; c++) {
                var g = a[c],
                d = c - 1;
                for (f = a[d]; 0 <= d && (g.Ia < f.Ia || g.Ia == f.Ia && g.arrivalOrder < f.arrivalOrder);) a[d + 1] = f,
                d -= 1,
                f = a[d];
                a[d + 1] = g
            }
            if (0 < a.length) for (this.Gd(a, b.m.bd.vc), c = d = 0; c < a.length; c++) d = this.Vy(a[c], d);
            this.bc = !1
        }
    },
    na: null,
    Lr: function() {
        0 !== this.textureAtlas.totalQuads && (this.Jb.wc(), this.Jb.xd(), this.Gd(this.s, b.m.bd.$c), b.Ph(this.t.src, this.t.Y), this.textureAtlas.jJ())
    }
});
p = b.Vf.prototype;
b.da === b.wb ? (p.ctor = p.AF, p.CB = p.dI, p.eA = p.FG, p.ia = p.is, p.appendChild = p.mF, p.Xh = p.oH, p.La = p.ds, p.Wa = p.ht, p.Ba = p.fI, p.N = p.hF, p.df = p.mH, p.vc = p.PH, p.na = p.Lr) : (p.ctor = p.zF, p.CB = p.cI, p.eA = p.EG, p.ia = p.hs, p.appendChild = p.lF, p.Xh = p.nH, p.La = p.cs, p.Wa = p.gt, p.Ba = p.eI, p.df = p.lH, p.N = p.rr, p.vc = p.OH, p.na = b.m.prototype.na);
b.k(p, "texture", p.La, p.Wa);
b.k(p, "descendants", p.XJ);
b.Vf.create = function(a, c) {
    return new b.Vf(a, c)
};
b.Vf.eu = b.Vf.create;
b.PB = b.B.extend({
    zr: null,
    vn: null,
    ctor: function() {
        b.B.prototype.ctor.call(this);
        var a = document.createElement("canvas");
        a.width = a.height = 10;
        this.zr = a;
        this.vn = a.getContext("2d");
        var c = new b.K;
        c.Mb(a);
        c.Fa();
        this.Wa(c)
    },
    MT: function() {
        return this.vn
    },
    LT: function() {
        return this.zr
    },
    IA: function(a, c) {
        void 0 === c && (c = a.height, a = a.width);
        var d = this.zr;
        d.width = a;
        d.height = c;
        this.La().Fa();
        this.Ha(E(0, 0, a, c), !1)
    }
});
b.Ad = b.oa.extend({
    cj: null,
    Wb: 0,
    oj: null,
    ctor: function(a, c, d) {
        this.cj = a || null;
        this.Wb = c || 0;
        this.oj = d || null
    },
    d: function() {
        var a = new b.Ad;
        a.$e(this.cj.d(), this.Wb, this.oj);
        return a
    },
    ep: function() {
        return b.d(this)
    },
    copy: function() {
        var a = new b.Ad;
        a.$e(this.cj.d(), this.Wb, this.oj);
        return a
    },
    $e: function(a, c, d) {
        this.cj = a;
        this.Wb = c;
        this.oj = d;
        return ! 0
    },
    Ye: function() {
        return this.cj
    },
    Pg: function(a) {
        this.cj = a
    },
    UT: function() {
        return this.Wb
    },
    eY: function(a) {
        this.Wb = a
    },
    bV: function() {
        return this.oj
    },
    XY: function(a) {
        this.oj = a
    }
});
b.Ad.create = function(a, c, d) {
    return new b.Ad(a, c, d)
};
b.we = b.oa.extend({
    $b: null,
    sf: 0,
    nh: !1,
    u: 0,
    Wb: 0,
    Ue: 0,
    ctor: function(a, c, d) {
        this.$b = [];
        if (void 0 === a) this.cA(null, 0);
        else {
            var e = a[0];
            e && (e instanceof b.zc ? this.cA(a, c, d) : e instanceof b.Ad && this.up(a, c, d))
        }
    },
    jU: function() {
        return this.$b
    },
    rY: function(a) {
        this.$b = a
    },
    Ut: function(a) {
        var c = new b.Ad;
        c.$e(a, 1, null);
        this.$b.push(c);
        this.Ue++
    },
    GR: function(a) {
        a = b.va.cc(a);
        var c = E(0, 0, 0, 0);
        c.width = a.width;
        c.height = a.height;
        a = b.zc.create(a, c);
        this.Ut(a)
    },
    HR: function(a, c) {
        var d = b.zc.create(a, c);
        this.Ut(d)
    },
    up: function(a, c, d) {
        b.qj(a, b.Ad);
        this.Wb = c;
        this.sf = void 0 === d ? 1 : d;
        this.Ue = 0;
        c = this.$b;
        for (d = c.length = 0; d < a.length; d++) {
            var e = a[d];
            c.push(e);
            this.Ue += e.Wb
        }
        return ! 0
    },
    d: function() {
        var a = new b.we;
        a.up(this.ww(), this.Wb, this.sf);
        a.Pp(this.nh);
        return a
    },
    ep: function() {
        var a = new b.we;
        a.up(this.ww(), this.Wb, this.sf);
        a.Pp(this.nh);
        return a
    },
    ww: function() {
        for (var a = [], c = 0; c < this.$b.length; c++) a.push(this.$b[c].d());
        return a
    },
    copy: function() {
        return this.ep(null)
    },
    qU: function() {
        return this.sf
    },
    wY: function(a) {
        this.sf = a
    },
    Pp: function(a) {
        this.nh = a
    },
    LU: function() {
        return this.nh
    },
    tu: function() {
        return this.Ue * this.Wb
    },
    TT: function() {
        return this.Wb
    },
    dY: function(a) {
        this.Wb = a
    },
    YU: function() {
        return this.Ue
    },
    cA: function(a, c, d) {
        b.qj(a, b.zc);
        this.sf = void 0 === d ? 1 : d;
        this.Wb = c || 0;
        this.Ue = 0;
        c = this.$b;
        c.length = 0;
        if (a) {
            for (d = 0; d < a.length; d++) {
                var e = a[d],
                f = new b.Ad;
                f.$e(e, 1, null);
                c.push(f)
            }
            this.Ue += a.length
        }
        return ! 0
    },
    Zu: function() {},
    Pf: function() {}
});
b.we.create = function(a, c, d) {
    return new b.we(a, c, d)
};
b.we.nS = b.we.create;
b.Fh = {
    ni: {},
    St: function(a, c) {
        this.ni[c] = a
    },
    vX: function(a) {
        a && this.ni[a] && delete this.ni[a]
    },
    np: function(a) {
        return this.ni[a] ? this.ni[a] : null
    },
    gF: function(a, c) {
        var d = a.animations;
        if (d) {
            var e = 1,
            f = a.properties;
            if (f) for (var e = null != f.format ? parseInt(f.format) : e, f = f.spritesheets, g = b.ue, h = b.path, k = 0; k < f.length; k++) g.Vt(h.$o(c, f[k]));
            switch (e) {
            case 1:
                this.eH(d);
                break;
            case 2:
                this.fH(d);
                break;
            default:
                b.log(b.c.sI)
            }
        } else b.log(b.c.rI)
    },
    AR: function(a) {
        b.assert(a, b.c.AI);
        var c = b.D.Yc(a);
        c ? this.gF(c, a) : b.log(b.c.zI)
    },
    eH: function(a) {
        var c = b.ue,
        d;
        for (d in a) {
            var e = a[d],
            f = e.frames,
            e = parseFloat(e.delay) || 0,
            g = null;
            if (f) {
                for (var g = [], h = 0; h < f.length; h++) {
                    var k = c.Ye(f[h]);
                    if (k) {
                        var m = new b.Ad;
                        m.$e(k, 1, null);
                        g.push(m)
                    } else b.log(b.c.uI, d, f[h])
                }
                0 === g.length ? b.log(b.c.vI, d) : (g.length != f.length && b.log(b.c.wI, d), g = b.we.create(g, e, 1), b.Fh.St(g, d))
            } else b.log(b.c.tI, d)
        }
    },
    fH: function(a) {
        var c = b.ue,
        d;
        for (d in a) {
            var e = a[d],
            f = parseInt(e.loops),
            f = e.loop ? b.Ak: isNaN(f) ? 1 : f,
            g = e.restoreOriginalFrame && !0 == e.restoreOriginalFrame ? !0 : !1,
            h = e.frames;
            if (h) {
                for (var k = [], m = 0; m < h.length; m++) {
                    var n = h[m],
                    r = n.spriteframe,
                    s = c.Ye(r);
                    if (s) {
                        var r = parseFloat(n.delayUnits) || 0,
                        n = n.notification,
                        u = new b.Ad;
                        u.$e(s, r, n);
                        k.push(u)
                    } else b.log(b.c.yI, d, r)
                }
                e = parseFloat(e.delayPerUnit) || 0;
                h = new b.we;
                h.up(k, e, f);
                h.Pp(g);
                b.Fh.St(h, d)
            } else b.log(b.c.xI, d)
        }
    },
    fg: function() {
        this.ni = {}
    }
};
b.zc = b.oa.extend({
    Na: null,
    ug: null,
    Fc: null,
    qc: !1,
    F: null,
    Ld: null,
    nd: null,
    ea: null,
    hj: "",
    T: !1,
    On: null,
    ctor: function(a, c, d, e, f) {
        this.Na = C(0, 0);
        this.Ld = C(0, 0);
        this.ug = D(0, 0);
        this.qc = !1;
        this.nd = D(0, 0);
        this.hj = "";
        this.ea = null;
        this.T = !1;
        void 0 !== a && void 0 !== c && (void 0 === d || void 0 === e || void 0 === f ? this.ia(a, c) : this.ia(a, c, d, e, f))
    },
    nv: function() {
        return this.T
    },
    Vc: function(a, c) {
        null == this.On && (this.On = []);
        this.On.push({
            ne: a,
            td: c
        })
    },
    Ub: function() {
        var a = this.On;
        if (a) {
            for (var c = 0,
            d = a.length; c < d; c++) {
                var e = a[c];
                e.ne.call(e.td, this)
            }
            a.length = 0
        }
    },
    wK: function() {
        var a = this.Fc;
        return E(a.x, a.y, a.width, a.height)
    },
    LY: function(a) {
        this.Fc || (this.Fc = E(0, 0, 0, 0));
        this.Fc.x = a.x;
        this.Fc.y = a.y;
        this.Fc.width = a.width;
        this.Fc.height = a.height;
        this.F = b.Hp(a)
    },
    FV: function() {
        return this.qc
    },
    NY: function(a) {
        this.qc = a
    },
    pe: function() {
        var a = this.F;
        return E(a.x, a.y, a.width, a.height)
    },
    dB: function(a) {
        this.F || (this.F = E(0, 0, 0, 0));
        this.F.x = a.x;
        this.F.y = a.y;
        this.F.width = a.width;
        this.F.height = a.height;
        this.Fc = b.gm(this.F)
    },
    xU: function() {
        return C(this.Ld)
    },
    CY: function(a) {
        this.Ld.x = a.x;
        this.Ld.y = a.y;
        b.Ds(this.Ld, this.Na)
    },
    AU: function() {
        return D(this.nd)
    },
    EY: function(a) {
        this.nd.width = a.width;
        this.nd.height = a.height
    },
    xj: function() {
        return D(this.ug)
    },
    DY: function(a) {
        this.ug.width = a.width;
        this.ug.height = a.height
    },
    La: function() {
        if (this.ea) return this.ea;
        if ("" !== this.hj) {
            var a = b.va.cc(this.hj);
            a && (this.T = a.xb);
            return a
        }
        return null
    },
    Wa: function(a) {
        if (this.ea != a) {
            var c = a.xb;
            this.T = c;
            this.ea = a;
            c || a.Vc(function(a) {
                this.T = !0;
                if (this.qc && b.da === b.Ya) {
                    var c = a.la,
                    c = b.fu(c, this.pe()),
                    f = new b.K;
                    f.Mb(c);
                    f.Fa();
                    this.Wa(f);
                    c = this.pe();
                    this.dB(E(0, 0, c.width, c.height))
                }
                c = this.F;
                0 === c.width && 0 === c.height && (c = a.width, a = a.height, this.F.width = c, this.F.height = a, this.Fc = b.gm(this.F), this.nd.width = this.Fc.width, this.nd.height = this.Fc.height, this.ug.width = c, this.ug.height = a);
                this.Ub()
            },
            this)
        }
    },
    wu: function() {
        return C(this.Na)
    },
    BY: function(a) {
        this.Na.x = a.x;
        this.Na.y = a.y
    },
    d: function() {
        var a = new b.zc;
        a.ia(this.hj, this.Fc, this.qc, this.Ld, this.nd);
        a.Wa(this.ea);
        return a
    },
    ep: function() {
        var a = new b.zc;
        a.ia(this.hj, this.Fc, this.qc, this.Ld, this.nd);
        a.Wa(this.ea);
        return a
    },
    copy: function() {
        return this.ep()
    },
    ia: function(a, c, d, e, f) {
        2 === arguments.length && (c = b.gm(c));
        e = e || C(0, 0);
        f = f || c;
        d = d || !1;
        "string" == typeof a ? (this.ea = null, this.hj = a) : a instanceof b.K && this.Wa(a);
        if ((a = this.La()) && a.url) {
            var g, h;
            d ? (g = c.x + c.height, h = c.y + c.width) : (g = c.x + c.width, h = c.y + c.height);
            g > a.width && b.error(b.c.Pq, a.url);
            h > a.height && b.error(b.c.Oq, a.url)
        }
        this.Fc = c;
        this.F = b.Hp(c);
        this.Ld.x = e.x;
        this.Ld.y = e.y;
        b.Ds(e, this.Na);
        this.nd.width = f.width;
        this.nd.height = f.height;
        b.Iy(f, this.ug);
        this.qc = d;
        return ! 0
    }
});
b.zc.create = function(a, c, d, e, f) {
    return new b.zc(a, c, d, e, f)
};
b.zc.eu = b.zc.create;
b.zc.ZQ = function(a, c, d, e, f) {
    var g = new b.zc;
    g.ea = a;
    g.Fc = c;
    g.F = b.Hp(c);
    g.Ld.x = e.x;
    g.Ld.y = e.y;
    b.Ds(g.Ld, g.Na);
    g.nd.width = f.width;
    g.nd.height = f.height;
    b.Iy(g.nd, g.ug);
    g.qc = d;
    return g
};
b.ue = {
    hw: /^\s*\{\s*([\-]?\d+[.]?\d*)\s*,\s*([\-]?\d+[.]?\d*)\s*\}\s*$/,
    WE: /^\s*\{\s*\{\s*([\-]?\d+[.]?\d*)\s*,\s*([\-]?\d+[.]?\d*)\s*\}\s*,\s*\{\s*([\-]?\d+[.]?\d*)\s*,\s*([\-]?\d+[.]?\d*)\s*\}\s*\}\s*$/,
    ke: {},
    Df: {},
    Ki: {},
    iy: function(a) {
        return (a = this.WE.exec(a)) ? E(parseFloat(a[1]), parseFloat(a[2]), parseFloat(a[3]), parseFloat(a[4])) : E(0, 0, 0, 0)
    },
    $x: function(a) {
        return (a = this.hw.exec(a)) ? C(parseFloat(a[1]), parseFloat(a[2])) : C(0, 0)
    },
    kt: function(a) {
        return (a = this.hw.exec(a)) ? D(parseFloat(a[1]), parseFloat(a[2])) : D(0, 0)
    },
    aG: function(a) {
        var c = b.D.Yc(a);
        b.assert(c, b.c.xN, a);
        b.D.Pf(a);
        if (c.Pi) return this.Ki[a] = c;
        var d = c.frames,
        e = c.metadata || c.meta,
        c = {},
        f = {},
        g = 0;
        e && (g = e.format, g = 1 >= g.length ? parseInt(g) : g, f.PK = e.textureFileName || e.textureFileName || e.image);
        for (var h in d) {
            var k = d[h];
            if (k) {
                e = {};
                if (0 == g) {
                    e.rect = E(k.x, k.y, k.width, k.height);
                    e.Kp = !1;
                    e.offset = C(k.offsetX, k.offsetY);
                    var m = k.originalWidth,
                    k = k.originalHeight;
                    m && k || b.log(b.c.wN);
                    m = Math.abs(m);
                    k = Math.abs(k);
                    e.size = D(m, k)
                } else if (1 == g || 2 == g) e.rect = this.iy(k.frame),
                e.Kp = k.rotated || !1,
                e.offset = this.$x(k.offset),
                e.size = this.kt(k.sourceSize);
                else if (3 == g) {
                    var m = this.kt(k.spriteSize),
                    n = this.iy(k.textureRect);
                    m && (n = E(n.x, n.y, m.width, m.height));
                    e.rect = n;
                    e.Kp = k.textureRotated || !1;
                    e.offset = this.$x(k.spriteOffset);
                    e.size = this.kt(k.spriteSourceSize);
                    e.oI = k.aliases
                } else m = k.frame,
                n = k.sourceSize,
                h = k.filename || h,
                e.rect = E(m.x, m.y, m.w, m.h),
                e.Kp = k.rotated || !1,
                e.offset = C(0, 0),
                e.size = D(n.w, n.h);
                c[h] = e
            }
        }
        return this.Ki[a] = {
            Pi: !0,
            frames: c,
            xL: f
        }
    },
    Vt: function(a, c) {
        b.assert(a, b.c.zN);
        var d = this.Ki[a] || b.D.Yc(a);
        if (d && d.frames) {
            var e = this.Ki[a] || this.aG(a),
            d = e.frames,
            e = e.xL;
            c ? c instanceof b.K || ("string" == typeof c ? c = b.va.cc(c) : b.assert(0, b.c.AN)) : c = b.va.cc(b.path.$o(a, e.PK || ".png"));
            var e = this.Df,
            f = this.ke,
            g;
            for (g in d) {
                var h = d[g],
                k = f[g];
                if (!k) {
                    k = b.zc.create(c, h.rect, h.Kp, h.offset, h.size);
                    if (h = h.oI) for (var m = 0,
                    n = h.length; m < n; m++) {
                        var r = h[m];
                        e[r] && b.log(b.c.yN, r);
                        e[r] = g
                    }
                    b.da === b.Ya && k.qc && k.La().xb && (h = k.La().la, h = b.fu(h, k.wK()), m = new b.K, m.Mb(h), m.Fa(), k.Wa(m), h = k.F, k.dB(E(0, 0, h.width, h.height)));
                    f[g] = k
                }
            }
        }
    },
    RQ: function(a) {
        a = a.frames;
        for (var c in a) this.ke[c] && b.log(b.c.vN, c)
    },
    Ut: function(a, c) {
        this.ke[c] = a
    },
    EX: function() {
        this.ke = {};
        this.Df = {}
    },
    DX: function(a) {
        a && (this.Df[a] && delete this.Df[a], this.ke[a] && delete this.ke[a])
    },
    FX: function(a) {
        var c = this.ke,
        d = this.Df;
        if (a = this.Ki[a]) {
            a = a.frames;
            for (var e in a) if (c[e]) {
                delete c[e];
                for (var f in d) d[f] == e && delete d[f]
            }
        }
    },
    GX: function(a) {
        var c = this.ke,
        d = this.Df,
        e;
        for (e in c) {
            var f = c[e];
            if (f && f.La() == a) {
                delete c[e];
                for (var g in d) d[g] == e && delete d[g]
            }
        }
    },
    Ye: function(a) {
        var c = this.ke[a];
        if (!c) {
            var d = this.Df[a];
            d && ((c = this.ke[d.toString()]) || delete this.Df[a])
        }
        c || b.log(b.c.BN, a);
        return c
    },
    fg: function() {
        this.ke = {};
        this.Df = {};
        this.Ki = {}
    }
};
b.bu = {
    $O: 0,
    aQ: 1,
    INT: 2,
    VO: 3,
    vO: 4,
    il: 0,
    SG: 0,
    At: !1,
    zt: !1,
    xt: !1,
    yt: !1,
    Bt: !1,
    kR: 0,
    ss: 0,
    hn: "",
    Fl: {},
    Pi: !1,
    $n: function() {
        var a = this.Fl;
        a["cocos2d.x.version"] = b.oq;
        a["cocos2d.x.compiled_with_profiler"] = !1;
        a["cocos2d.x.compiled_with_gl_state_cache"] = b.Dv;
        this.Pi = !0
    },
    sU: function() {
        return this.il
    },
    rU: function() {
        return this.SG
    },
    tU: function() {
        return this.ss
    },
    kZ: function() {
        return this.zt
    },
    lZ: function() {
        return this.At
    },
    jZ: function() {
        return ! 1
    },
    mZ: function() {
        return ! 1
    },
    gZ: function() {
        return ! 1
    },
    hZ: function() {
        return this.xt
    },
    iZ: function() {
        return this.yt
    },
    nZ: function() {
        return this.Bt
    },
    ap: function(a) {
        return - 1 < this.hn.indexOf(a)
    },
    dV: function(a, c) {
        this.Pi || this.$n();
        var d = this.Fl;
        return d[a] ? d[a] : c
    },
    ZY: function(a, c) {
        this.Fl[a] = c
    },
    mJ: function() {
        0 === b.Dv && (b.log(""), b.log(b.c.TI), b.log(""))
    },
    PJ: function() {
        if (b.da !== b.Ya) {
            this.Pi || this.$n();
            var a = b.l,
            c = this.Fl;
            c["gl.vendor"] = a.getParameter(a.VENDOR);
            c["gl.renderer"] = a.getParameter(a.RENDERER);
            c["gl.version"] = a.getParameter(a.VERSION);
            this.hn = "";
            for (var d = a.getSupportedExtensions(), e = 0; e < d.length; e++) this.hn += d[e] + " ";
            this.il = a.getParameter(a.MAX_TEXTURE_SIZE);
            c["gl.max_texture_size"] = this.il;
            this.ss = a.getParameter(a.MAX_COMBINED_TEXTURE_IMAGE_UNITS);
            c["gl.max_texture_units"] = this.ss;
            this.At = this.ap("GL_IMG_texture_compression_pvrtc");
            c["gl.supports_PVRTC"] = this.At;
            this.zt = !1;
            c["gl.supports_NPOT"] = this.zt;
            this.xt = this.ap("GL_IMG_texture_format_BGRA888");
            c["gl.supports_BGRA8888"] = this.xt;
            this.yt = this.ap("GL_EXT_discard_framebuffer");
            c["gl.supports_discard_framebuffer"] = this.yt;
            this.Bt = this.ap("vertex_array_object");
            c["gl.supports_vertex_array_object"] = this.Bt;
            b.bp()
        }
    },
    VV: function(a) {
        this.Pi || this.$n();
        var c = b.D.Yc(a);
        if (!c) throw "Please load the resource first : " + a;
        b.assert(c, b.c.VI, a);
        if (c = c.data) for (var d in c) this.Fl[d] = c[d];
        else b.log(b.c.UI, a)
    }
};
b.p.lq = function() {
    b.XO = b.oa.extend({
        xZ: function() {}
    });
    var a = b.ha.prototype;
    a.Op = function(a) {
        var d = this.ab;
        this.mN();
        var e = this.ee,
        f = e.sc.x / e.O,
        g = e.sc.y / e.ma;
        switch (a) {
        case b.ha.qD:
            b.Pu(b.Jv);
            b.Ou();
            e = new b.re;
            b.PV(e, 0, d.width, 0, d.height, -1024, 1024);
            b.Qu(e);
            b.Pu(b.Iv);
            b.Ou();
            break;
        case b.ha.Tv:
            var h = this.Rl(),
            k = new b.re,
            e = new b.re;
            b.Pu(b.Jv);
            b.Ou();
            b.QV(k, 60, d.width / d.height, 0.1, 2 * h);
            b.Qu(k);
            b.Pu(b.Iv);
            b.Ou();
            h = b.Vl(null, -f + d.width / 2, -g + d.height / 2, h);
            d = b.Vl(null, -f + d.width / 2, -g + d.height / 2, 0);
            f = b.Vl(null, 0, 1, 0);
            b.qL(e, h, d, f);
            b.Qu(e);
            break;
        case b.ha.rD:
            break;
        default:
            b.log(b.c.kC)
        }
        this.kh = a;
        b.I.dispatchEvent(this.Pn);
        b.IY()
    };
    a.WA = function(a) {
        var d = b.l;
        a ? (d.clearDepth(1), d.enable(d.DEPTH_TEST), d.depthFunc(d.LEQUAL)) : d.disable(d.DEPTH_TEST)
    };
    a.fv = function(a) {
        this.ab.width = b.ra.width;
        this.ab.height = b.ra.height;
        this.ee = a || b.view;
        a = b.bu;
        a.PJ();
        a.mJ();
        this.yi();
        this.ZA();
        b.I && b.I.Mp(!0)
    };
    a.fg = function() {
        var a = b.l;
        a.clear(a.COLOR_BUFFER_BIT | a.DEPTH_BUFFER_BIT)
    };
    a.wr = function() {
        b.oL()
    };
    a.sr = function() {
        b.nL()
    };
    a.yi = function() {
        if (!b.Tf) this.yF();
        else if (null != b.ha.rx && !1 != b.ha.rx) {
            var a = new b.K;
            a.Mb(b.ha.Ji);
            a.Fa();
            var d = b.view.su().height / 320;
            0 === d && (d = this.ab.height / 320);
            var e = new b.Tf;
            e.at(!0);
            e.Qd("00.0", a, 12, 32, ".");
            e.scale = d;
            this.cd = e;
            e = new b.Tf;
            e.at(!0);
            e.Qd("0.000", a, 12, 32, ".");
            e.scale = d;
            this.dd = e;
            e = new b.Tf;
            e.at(!0);
            e.Qd("000", a, 12, 32, ".");
            e.scale = d;
            this.jd = e;
            a = b.jq;
            this.jd.Ma(a.x, 34 * d + a.y);
            this.dd.Ma(a.x, 17 * d + a.y);
            this.cd.Ma(a)
        }
    };
    a.yF = function() {
        var a = 0,
        a = this.ab.width > this.ab.height ? 0 | this.ab.height / 320 * 24 : 0 | this.ab.width / 320 * 24;
        this.cd = b.A.create("000.0", "Arial", a);
        this.dd = b.A.create("0.000", "Arial", a);
        this.jd = b.A.create("0000", "Arial", a);
        a = b.jq;
        this.jd.Ma(this.jd.width / 2 + a.x, 5 * this.jd.height / 2 + a.y);
        this.dd.Ma(this.dd.width / 2 + a.x, 3 * this.dd.height / 2 + a.y);
        this.cd.Ma(this.cd.width / 2 + a.x, this.cd.height / 2 + a.y)
    };
    a.WI = function(a) {
        var d = new b.re;
        b.Gv(d);
        var e = new b.re;
        b.OV(e, d);
        var f = this.ee.su();
        a = new b.Ej(2 * a.x / f.width - 1, 1 - 2 * a.y / f.height, d.Sd[14] / d.Sd[15]);
        d = new b.Ej;
        b.sL(d, a, e);
        return C(d.x, d.y)
    };
    a.YI = function(a) {
        var d = new b.re;
        b.Gv(d);
        var e = new b.Ej;
        a = new b.Ej(a.x, a.y, 0);
        b.sL(e, a, d);
        d = this.ee.su();
        return C(d.width * (0.5 * e.x + 0.5), d.height * (0.5 * -e.y + 0.5))
    };
    a.Pl = function() {
        return this.ee.Pl()
    };
    a.Au = function() {
        return this.ee.Au()
    };
    a.Rl = function() {
        return this.ab.height / 1.1566
    };
    a.mN = function() {
        var a = this.ee;
        if (a) {
            var d = this.ab;
            a.lN( - a.sc.x / a.O, -a.sc.y / a.ma, d.width, d.height)
        }
    };
    a.yU = function() {
        return this.ee
    };
    a.HU = function() {
        return this.kh
    };
    a.wM = function() {
        b.Ph(b.kc, b.jc)
    };
    a.ZA = function() {
        this.wM();
        this.WA(!1);
        this.Op(this.kh);
        b.l.clearColor(0, 0, 0, 1)
    }
};
b.We = 0;
b.Gv = function(a) {
    var c = new b.re;
    b.mL(b.Jv, c);
    var d = new b.re;
    b.mL(b.Iv, d);
    b.rL(a, c, d)
};
b.ha = b.oa.extend({
    iR: !1,
    jl: !1,
    $a: !1,
    vo: !1,
    ph: !1,
    qn: 0,
    vs: 0,
    kh: 0,
    mi: 0,
    bh: 1,
    Sk: !1,
    hg: 0,
    Rr: 0,
    cd: null,
    dd: null,
    jd: null,
    ab: null,
    sg: null,
    Ne: null,
    no: null,
    ee: null,
    Se: null,
    Ls: null,
    Ib: null,
    $b: 0,
    Dt: 0,
    Vs: 0,
    WQ: null,
    rd: null,
    Fd: null,
    Pn: null,
    Nr: null,
    Pr: null,
    Or: null,
    ctor: function() {
        var a = this;
        a.sg = Date.now();
        b.I.Tt(b.Va.ek,
        function() {
            a.sg = Date.now()
        })
    },
    ga: function() {
        this.vs = this.qn = 1 / b.$I;
        this.Se = [];
        this.kh = b.ha.sD;
        this.Ls = null;
        this.Rr = this.mi = 0;
        this.Sk = !1;
        this.Dt = this.$b = 0;
        this.sg = Date.now();
        this.vo = this.$a = !1;
        this.ab = D(0, 0);
        this.ee = null;
        this.bh = 1;
        this.rd = new b.Bk;
        this.Fd = b.pv ? new b.pv: null;
        this.rd.bv(this.Fd, b.Bk.Xm, !1);
        this.Nr = new b.kf(b.ha.rC);
        this.Nr.setUserData(this);
        this.Pr = new b.kf(b.ha.tC);
        this.Pr.setUserData(this);
        this.Or = new b.kf(b.ha.sC);
        this.Or.setUserData(this);
        this.Pn = new b.kf(b.ha.uC);
        this.Pn.setUserData(this);
        return ! 0
    },
    LI: function() {
        var a = Date.now();
        this.jl ? (this.hg = 0, this.jl = !1) : this.hg = (a - this.sg) / 1E3;
        0 < b.Va.Jc[b.Va.Vd.gp] && 0.2 < this.hg && (this.hg = 1 / 60);
        this.sg = a
    },
    kJ: function() {
        this.LI();
        this.$a || (this.rd.update(this.hg), b.I.dispatchEvent(this.Or));
        this.fg();
        this.Ne && this.QM();
        this.wr && this.wr();
        this.Ib && (this.Ib.Ba(), b.I.dispatchEvent(this.Pr));
        this.no && this.no.Ba();
        this.Sk && this.NH();
        this.sr && this.sr();
        b.I.dispatchEvent(this.Nr);
        this.Dt++;
        this.Sk && this.qF()
    },
    wr: null,
    sr: null,
    end: function() {
        this.vo = !0
    },
    QT: function() {
        return this.bh
    },
    vU: function() {
        return this.no
    },
    Ql: function() {
        return D(this.ab)
    },
    gV: function() {
        return D(this.ab.width * this.bh, this.ab.height * this.bh)
    },
    pause: function() {
        this.$a || (this.vs = this.qn, this.SA(0.25), this.$a = !0)
    },
    $W: function() {
        b.assert(this.Ib, b.c.hC);
        this.Se.pop();
        var a = this.Se.length;
        0 == a ? this.end() : (this.ph = !0, this.Ne = this.Se[a - 1])
    },
    UL: function() {
        b.Fh.fg();
        b.ue.fg();
        b.va.fg()
    },
    VL: function() {
        this.Ig().Tp();
        b.I && b.I.Mp(!1);
        this.Ib && (this.Ib.Nf(), this.Ib.vd(), this.Ib.If());
        this.Ne = this.Ib = null;
        this.Se.length = 0;
        this.oB();
        this.UL();
        b.bp()
    },
    WL: function(a) {
        b.assert(a, b.c.Bv);
        this.ph = !1;
        this.Se.push(a);
        this.Ne = a
    },
    OA: function(a) {
        b.assert(a, b.c.Bv);
        if (this.Ib) {
            var c = this.Se.length;
            0 === c ? (this.ph = !0, this.Se[c] = a) : (this.ph = !0, this.Se[c - 1] = a);
            this.Ne = a
        } else this.WL(a),
        this.mB()
    },
    Oj: function() {
        this.$a && (this.SA(this.vs), (this.sg = Date.now()) || b.log(b.c.jC), this.$a = !1, this.hg = 0)
    },
    aY: function(a) {
        a != this.bh && (this.bh = a, this.yi())
    },
    cY: function() {},
    yY: function(a) {
        this.jl = a
    },
    QM: function() {
        var a = !1,
        c = !1;
        b.dw && (a = this.Ib ? this.Ib instanceof b.dw: !1, c = this.Ne ? this.Ne instanceof b.dw: !1);
        if (!c) {
            if (c = this.Ib) c.Nf(),
            c.vd();
            this.ph && c && c.If()
        }
        this.Ib = this.Ne;
        this.Ne = null;
        a || null == this.Ib || (this.Ib.se(), this.Ib.Hj())
    },
    zY: function(a) {
        this.no = a
    },
    VT: function() {
        return this.Ls
    },
    fY: function(a) {
        this.Ls = a
    },
    NH: function() {
        this.$b++;
        this.mi += this.hg;
        this.cd && this.dd && this.jd ? (this.mi > b.fC && (this.dd.string = this.Vs.toFixed(3), this.Rr = this.$b / this.mi, this.mi = this.$b = 0, this.cd.string = this.Rr.toFixed(1), this.jd.string = (0 | b.We).toString()), this.cd.Ba(), this.dd.Ba(), this.jd.Ba()) : this.yi();
        b.We = 0
    },
    HV: function() {
        return this.ph
    },
    MU: function() {
        return this.Ib
    },
    GT: function() {
        return this.qn
    },
    xV: function() {
        return this.Sk
    },
    DM: function(a) {
        this.Sk = a
    },
    RU: function() {
        return this.Vs
    },
    AV: function() {
        return this.jl
    },
    CV: function() {
        return this.$a
    },
    ZU: function() {
        return this.Dt
    },
    aX: function() {
        this.QL(1)
    },
    QL: function(a) {
        b.assert(this.Ib, b.c.iC);
        var c = this.Se,
        d = c.length;
        if (0 == d) this.end();
        else if (! (a > d)) {
            for (; d > a;) {
                var e = c.pop();
                e.running && (e.Nf(), e.vd());
                e.If();
                d--
            }
            this.Ne = c[c.length - 1];
            this.ph = !1
        }
    },
    Ig: function() {
        return this.rd
    },
    eB: function(a) {
        this.rd != a && (this.rd = a)
    },
    mp: function() {
        return this.Fd
    },
    RA: function(a) {
        this.Fd != a && (this.Fd = a)
    },
    WT: function() {
        return this.hg
    },
    yi: null,
    qF: function() {
        this.Vs = (Date.now() - this.sg) / 1E3
    }
});
b.ha.uC = "director_projection_changed";
b.ha.rC = "director_after_draw";
b.ha.tC = "director_after_visit";
b.ha.sC = "director_after_update";
b.lC = b.ha.extend({
    wp: !1,
    mB: function() {
        this.jl = !0;
        this.wp = !1
    },
    wL: function() {
        this.vo ? (this.vo = !1, this.VL()) : this.wp || this.kJ()
    },
    oB: function() {
        this.wp = !0
    },
    SA: function(a) {
        this.qn = a;
        this.wp || (this.oB(), this.mB())
    }
});
b.ha.jv = null;
b.ha.xz = !0;
b.ha.Zr = function() {
    b.ha.xz && (b.ha.xz = !1, b.ha.jv = new b.lC, b.ha.jv.ga());
    return b.ha.jv
};
b.$I = 60;
b.ha.qD = 0;
b.ha.Tv = 1;
b.ha.rD = 3;
b.ha.sD = b.ha.Tv;
b.da === b.Ya ? (p = b.ha.prototype, p.Op = function(a) {
    this.kh = a;
    b.I.dispatchEvent(this.Pn)
},
p.WA = function() {},
p.fv = function(a) {
    this.ab.width = b.ra.width;
    this.ab.height = b.ra.height;
    this.ee = a || b.view;
    b.I && b.I.Mp(!0)
},
p.fg = function() {
    var a = this.ee.sc;
    b.l.clearRect( - a.x, a.y, a.width, -a.height)
},
p.yi = function() {
    var a = 0,
    a = this.ab.width > this.ab.height ? 0 | this.ab.height / 320 * 24 : 0 | this.ab.width / 320 * 24;
    this.cd = b.A.create("000.0", "Arial", a);
    this.dd = b.A.create("0.000", "Arial", a);
    this.jd = b.A.create("0000", "Arial", a);
    a = b.jq;
    this.jd.Ma(this.jd.width / 2 + a.x, 5 * this.jd.height / 2 + a.y);
    this.dd.Ma(this.dd.width / 2 + a.x, 3 * this.dd.height / 2 + a.y);
    this.cd.Ma(this.cd.width / 2 + a.x, this.cd.height / 2 + a.y)
},
p.Pl = function() {
    return this.Ql()
},
p.Au = function() {
    return C(0, 0)
}) : (b.ha.Ji = new Image, b.ka(b.ha.Ji, "load",
function() {
    b.ha.rx = !0
}), b.Ji && (b.ha.Ji.src = b.Ji), b.assert("function" === typeof b.p.lq, b.c.Gb, "CCDirectorWebGL.js"), b.p.lq(), delete b.p.lq);
b.bk = b.oa.extend({
    Uk: null,
    Vk: null,
    Wk: null,
    ui: null,
    vi: null,
    wi: null,
    Cl: null,
    Dl: null,
    El: null,
    Yb: null,
    jo: null,
    ctor: function() {
        this.jo = new b.re;
        this.restore()
    },
    description: function() {
        return "\x3cCCCamera | center \x3d(" + this.ui + "," + this.vi + "," + this.wi + ")\x3e"
    },
    XA: function(a) {
        this.Yb = a
    },
    iA: function() {
        return this.Yb
    },
    restore: function() {
        this.Uk = this.Vk = 0;
        this.Wk = b.bk.Rl();
        this.Cl = this.ui = this.vi = this.wi = 0;
        this.Dl = 1;
        this.El = 0;
        b.NV(this.jo);
        this.Yb = !1
    },
    nA: function() {
        if (this.Yb) {
            var a = new b.Ej,
            c = new b.Ej,
            d = new b.Ej;
            b.Vl(a, this.Uk, this.Vk, this.Wk);
            b.Vl(c, this.ui, this.vi, this.wi);
            b.Vl(d, this.Cl, this.Dl, this.El);
            b.qL(this.jo, a, c, d);
            this.Yb = !1
        }
        b.Qu(this.jo)
    },
    lY: function(a, c, d) {
        this.YA(a, c, d)
    },
    YA: function(a, c, d) {
        this.Uk = a;
        this.Vk = c;
        this.Wk = d;
        this.Yb = !0
    },
    ZX: function(a, c, d) {
        this.AM(a, c, d)
    },
    AM: function(a, c, d) {
        this.ui = a;
        this.vi = c;
        this.wi = d;
        this.Yb = !0
    },
    WY: function(a, c, d) {
        this.hN(a, c, d)
    },
    hN: function(a, c, d) {
        this.Cl = a;
        this.Dl = c;
        this.El = d;
        this.Yb = !0
    },
    eU: function() {
        return {
            x: this.Uk,
            y: this.Vk,
            z: this.Wk
        }
    },
    Ez: function() {
        return {
            x: this.Uk,
            y: this.Vk,
            z: this.Wk
        }
    },
    OT: function() {
        return {
            x: this.ui,
            y: this.vi,
            z: this.wi
        }
    },
    Dz: function() {
        return {
            x: this.ui,
            y: this.vi,
            z: this.wi
        }
    },
    aV: function() {
        return {
            x: this.Cl,
            y: this.Dl,
            z: this.El
        }
    },
    GK: function() {
        return {
            x: this.Cl,
            y: this.Dl,
            z: this.El
        }
    },
    JQ: function() {}
});
b.bk.Rl = function() {
    return b.Nm
};
b.SP = b.Xm + 1;
b.qj = function(a, c) {
    if (a && 0 < a.length) for (var d = 0; d < a.length; d++) if (! (a[d] instanceof c)) return b.log(b.c.qj),
    !1;
    return ! 0
};
b.Wc = function(a, c) {
    for (var d = 0,
    e = a.length; d < e; d++) if (a[d] == c) {
        a.splice(d, 1);
        break
    }
};
b.SR = function(a, c) {
    for (var d = 0,
    e = c.length; d < e; d++) b.Wc(a, c[d])
};
b.RR = function(a, c, d) {
    a.splice.apply(a, [d, 0].concat(c));
    return a
};
b.Kv = function(a, c, d) {
    this.next = null;
    this.target = a;
    this.TL = c;
    this.paused = d;
    this.zp = !1
};
b.Hv = function(a, c, d) {
    this.list = a;
    this.Mh = c;
    this.target = d;
    this.Eu = null
};
b.DC = function(a, c) {
    this.gf = null;
    this.target = a;
    this.Uj = 0;
    this.Ll = this.Kl = null;
    this.paused = c;
    this.Eu = null
};
b.cw = b.oa.extend({
    rg: 0,
    eg: null,
    No: null,
    Ta: 0,
    wy: !1,
    Vo: !1,
    jj: 0,
    Ps: 0,
    En: 0,
    pU: function() {
        return this.rg
    },
    setInterval: function(a) {
        this.rg = a
    },
    NT: function() {
        return this.eg
    },
    ctor: function(a, c, d, e, f) {
        this.No = a;
        this.eg = c;
        this.Ta = -1;
        this.rg = d || 0;
        this.En = f || 0;
        this.Vo = 0 < this.En;
        this.Ps = null == e ? b.Ak: e;
        this.wy = this.Ps == b.Ak
    },
    Kr: function() {
        if ("string" == typeof this.eg) this.No[this.eg](this.Ta);
        else this.eg.call(this.No, this.Ta)
    },
    update: function(a) {
        if ( - 1 == this.Ta) this.jj = this.Ta = 0;
        else {
            var c = this.No,
            d = this.eg;
            this.Ta += a;
            this.wy && !this.Vo ? this.Ta >= this.rg && (c && d && this.Kr(), this.Ta = 0) : (this.Vo ? this.Ta >= this.En && (c && d && this.Kr(), this.Ta -= this.En, this.jj += 1, this.Vo = !1) : this.Ta >= this.rg && (c && d && this.Kr(), this.Ta = 0, this.jj += 1), this.jj > this.Ps && b.Qa.Ig().zB(c, d))
        }
    }
});
b.Bk = b.oa.extend({
    Bl: 1,
    zh: null,
    qf: null,
    rn: null,
    pf: null,
    NQ: null,
    Cc: null,
    Fe: !1,
    Ro: !1,
    ctor: function() {
        this.Bl = 1;
        this.zh = [[], [], []];
        this.qf = {};
        this.rn = [];
        this.pf = {};
        this.Lk = [];
        this.Cc = null;
        this.Ro = this.Fe = !1
    },
    Os: function(a) {
        delete this.pf[a.target.L];
        b.Wc(this.Lk, a);
        a.cw = null;
        a.target = null
    },
    ny: function(a) {
        if (a = this.qf[a.target.L]) b.Wc(a.list, a.Mh),
        delete this.qf[a.target.L],
        b.Wc(this.rn, a),
        a.Mh = null,
        a.target = null
    },
    dy: function(a, c, d, e) {
        e = new b.Kv(c, d, e);
        if (a) {
            for (var f = a.length - 1,
            g = 0; g <= f && !(d < a[g].TL); g++);
            a.splice(g, 0, e)
        } else a = [],
        a.push(e);
        d = new b.Hv(a, e, c);
        this.rn.push(d);
        this.qf[c.L] = d;
        return a
    },
    nF: function(a, c, d) {
        d = new b.Kv(c, 0, d);
        a.push(d);
        a = new b.Hv(a, d, c);
        this.rn.push(a);
        this.qf[c.L] = a
    },
    UY: function(a) {
        this.Bl = a
    },
    XU: function() {
        return this.Bl
    },
    update: function(a) {
        var c = this.zh,
        d = this.Lk,
        e, f, g;
        this.Ro = !0;
        1 != this.Bl && (a *= this.Bl);
        f = 0;
        for (g = c.length; f < g && 0 <= f; f++) for (var h = this.zh[f], k = 0, m = h.length; k < m; k++) e = h[k],
        e.paused || e.zp || e.target.update(a);
        f = 0;
        for (g = d.length; f < g; f++) {
            e = d[f];
            if (!e) break;
            this.Cc = e;
            this.Fe = !1;
            if (!e.paused) for (e.Uj = 0; e.Uj < e.gf.length; e.Uj++) e.Kl = e.gf[e.Uj],
            e.Ll = !1,
            e.Kl.update(a),
            e.Kl = null;
            this.Fe && 0 == e.gf.length && (this.Os(e), f--)
        }
        f = 0;
        for (g = c.length; f < g; f++) for (h = this.zh[f], k = 0, m = h.length; k < m;) {
            e = h[k];
            if (!e) break;
            e.zp ? this.ny(e) : k++
        }
        this.Ro = !1;
        this.Cc = null
    },
    qM: function(a, c, d, e, f, g) {
        b.assert(c, b.c.FD);
        b.assert(a, b.c.GD);
        d = d || 0;
        e = null == e ? b.Ak: e;
        f = f || 0;
        g = g || !1;
        var h = this.pf[a.L];
        h || (h = new b.DC(a, g), this.Lk.push(h), this.pf[a.L] = h);
        if (null == h.gf) h.gf = [];
        else for (var k = 0; k < h.gf.length; k++) if (g = h.gf[k], c == g.eg) {
            b.log(b.c.ED, g.rg.toFixed(4), d.toFixed(4));
            g.rg = d;
            return
        }
        g = new b.cw(a, c, d, e, f);
        h.gf.push(g)
    },
    bv: function(a, c, d) {
        if (null !== a) {
            var e = this.zh,
            f = this.qf[a.L];
            f ? f.Mh.zp = !1 : 0 == c ? this.nF(e[1], a, d) : 0 > c ? e[0] = this.dy(e[0], a, c, d) : e[2] = this.dy(e[2], a, c, d)
        }
    },
    zB: function(a, c) {
        if (null != a && null != c) {
            var d = this.pf[a.L];
            if (d) for (var e = d.gf,
            f = 0,
            g = e.length; f < g; f++) {
                var h = e[f];
                if (c == h.eg) {
                    h != d.Kl || d.Ll || (d.Ll = !0);
                    e.splice(f, 1);
                    d.Uj >= f && d.Uj--;
                    0 == e.length && (this.Cc == d ? this.Fe = !0 : this.Os(d));
                    break
                }
            }
        }
    },
    nm: function(a) {
        null != a && (a = this.qf[a.L], null != a && (this.Ro ? a.Mh.zp = !0 : this.ny(a.Mh)))
    },
    yB: function(a) {
        if (null != a) {
            var c = this.pf[a.L];
            if (c) {
                var d = c.gf; ! c.Ll && 0 <= d.indexOf(c.Kl) && (c.Ll = !0);
                d.length = 0;
                this.Cc == c ? this.Fe = !0 : this.Os(c)
            }
            this.nm(a)
        }
    },
    Tp: function() {
        this.RN(b.Bk.Xm)
    },
    RN: function(a) {
        for (var c = this.Lk,
        d = this.zh,
        e = 0,
        f = c.length; e < f; e++) this.yB(c[e].target);
        for (e = 2; 0 <= e; e--) if (! (1 == e && 0 < a || 0 == e && 0 <= a)) for (var c = d[e], f = 0, g = c.length; f < g; f++) this.nm(c[f].target)
    },
    XW: function() {
        return this.IL(b.Bk.Xm)
    },
    IL: function() {
        for (var a = [], c, d = this.Lk, e = this.zh, f = 0, g = d.length; f < g; f++) if (c = d[f]) c.paused = !0,
        a.push(c.target);
        f = 0;
        for (g = e.length; f < g; f++) for (var d = e[f], h = 0, k = d.length; h < k; h++) if (c = d[h]) c.paused = !0,
        a.push(c.target);
        return a
    },
    kM: function(a) {
        if (a) for (var c = 0; c < a.length; c++) this.Qf(a[c])
    },
    Lj: function(a) {
        b.assert(a, b.c.CD);
        var c = this.pf[a.L];
        c && (c.paused = !0); (a = this.qf[a.L]) && (a.Mh.paused = !0)
    },
    Qf: function(a) {
        b.assert(a, b.c.DD);
        var c = this.pf[a.L];
        c && (c.paused = !1); (a = this.qf[a.L]) && (a.Mh.paused = !1)
    },
    JV: function(a) {
        b.assert(a, b.c.BD);
        return (a = this.pf[a.L]) ? a.paused: !1
    }
});
b.Bk.Xm = -2147483648;
b.Pv = 2 * Math.PI;
b.Cv = b.oa.extend({
    yr: [],
    l: null,
    ctor: function(a) {
        this.l = a
    },
    gJ: function(a, c) {
        c || (c = 1);
        var d = b.view.O,
        e = C(a.x * d, a.y * b.view.ma);
        this.l.beginPath();
        this.l.arc(e.x, -e.y, c * d, 0, 2 * Math.PI, !1);
        this.l.closePath();
        this.l.fill()
    },
    hJ: function(a, c, d) {
        if (null != a) {
            d || (d = 1);
            c = this.l;
            var e = b.view.O,
            f = b.view.ma;
            c.beginPath();
            for (var g = 0,
            h = a.length; g < h; g++) c.arc(a[g].x * e, -a[g].y * f, d * e, 0, 2 * Math.PI, !1);
            c.closePath();
            c.fill()
        }
    },
    Jf: function(a, c) {
        var d = this.l,
        e = b.view.O,
        f = b.view.ma;
        d.beginPath();
        d.moveTo(a.x * e, -a.y * f);
        d.lineTo(c.x * e, -c.y * f);
        d.closePath();
        d.stroke()
    },
    ku: function(a, c) {
        this.Jf(C(a.x, a.y), C(c.x, a.y));
        this.Jf(C(c.x, a.y), C(c.x, c.y));
        this.Jf(C(c.x, c.y), C(a.x, c.y));
        this.Jf(C(a.x, c.y), C(a.x, a.y))
    },
    lJ: function(a, c, d) {
        this.mu([a, C(c.x, a.y), c, C(a.x, c.y)], 4, d)
    },
    gc: function(a, c, d, e) {
        e = e || !1;
        if (null != a) {
            if (3 > a.length) throw Error("Polygon's point must greater than 2");
            var f = a[0];
            c = this.l;
            var g = b.view.O,
            h = b.view.ma;
            c.beginPath();
            c.moveTo(f.x * g, -f.y * h);
            for (var f = 1,
            k = a.length; f < k; f++) c.lineTo(a[f].x * g, -a[f].y * h);
            d && c.closePath();
            e ? c.fill() : c.stroke()
        }
    },
    mu: function(a, c, d) {
        this.Rj(d.r, d.g, d.b, d.a);
        this.gc(a, c, !0, !0)
    },
    hu: function(a, c, d, e, f) {
        f = f || !1;
        e = this.l;
        var g = b.view.O,
        h = b.view.ma;
        e.beginPath();
        e.arc(0 | a.x * g, 0 | -(a.y * h), c * g, -d, -(d - 2 * Math.PI), !1);
        f && e.lineTo(0 | a.x * g, 0 | -(a.y * h));
        e.stroke()
    },
    ju: function(a, c, d, e) {
        for (var f = this.yr,
        g = f.length = 0,
        h = 0; h < e; h++) f.push(C(Math.pow(1 - g, 2) * a.x + 2 * (1 - g) * g * c.x + g * g * d.x, Math.pow(1 - g, 2) * a.y + 2 * (1 - g) * g * c.y + g * g * d.y)),
        g += 1 / e;
        f.push(C(d.x, d.y));
        this.gc(f, e + 1, !1, !1)
    },
    iu: function(a, c, d, e, f) {
        for (var g = this.yr,
        h = g.length = 0,
        k = 0; k < f; k++) g.push(C(Math.pow(1 - h, 3) * a.x + 3 * Math.pow(1 - h, 2) * h * c.x + 3 * (1 - h) * h * h * d.x + h * h * h * e.x, Math.pow(1 - h, 3) * a.y + 3 * Math.pow(1 - h, 2) * h * c.y + 3 * (1 - h) * h * h * d.y + h * h * h * e.y)),
        h += 1 / f;
        g.push(C(e.x, e.y));
        this.gc(g, f + 1, !1, !1)
    },
    gu: function(a, c) {
        this.Lh(a, 0.5, c)
    },
    Lh: function(a, c, d) {
        b.l.strokeStyle = "rgba(255,255,255,1)";
        var e = this.yr;
        e.length = 0;
        for (var f, g, h = 1 / a.length,
        k = 0; k < d + 1; k++) g = k / d,
        1 == g ? (f = a.length - 1, g = 1) : (f = 0 | g / h, g = (g - h * f) / h),
        f = b.aC(b.Fb(a, f - 1), b.Fb(a, f - 0), b.Fb(a, f + 1), b.Fb(a, f + 2), c, g),
        e.push(f);
        this.gc(e, d + 1, !1, !1)
    },
    drawImage: function(a, c, d, e, f) {
        switch (arguments.length) {
        case 2:
            this.l.drawImage(a, c.x, -(c.y + a.height));
            break;
        case 3:
            this.l.drawImage(a, c.x, -(c.y + d.height), d.width, d.height);
            break;
        case 5:
            this.l.drawImage(a, c.x, c.y, d.width, d.height, e.x, -(e.y + f.height), f.width, f.height);
            break;
        default:
            throw Error("Argument must be non-nil");
        }
    },
    BS: function(a, c, d) {
        a = a || this.l;
        c *= b.view.O;
        d = "rgba(" + (0 | d.r) + "," + (0 | d.g) + "," + (0 | d.b);
        a.fillStyle = d + ",1)";
        var e = c / 10;
        a.beginPath();
        a.moveTo( - c, c);
        a.lineTo(0, e);
        a.lineTo(c, c);
        a.lineTo(e, 0);
        a.lineTo(c, -c);
        a.lineTo(0, -e);
        a.lineTo( - c, -c);
        a.lineTo( - e, 0);
        a.lineTo( - c, c);
        a.closePath();
        a.fill();
        var f = a.createRadialGradient(0, 0, e, 0, 0, c);
        f.addColorStop(0, d + ", 1)");
        f.addColorStop(0.3, d + ", 0.8)");
        f.addColorStop(1, d + ", 0.0)");
        a.fillStyle = f;
        a.beginPath();
        a.arc(0, 0, c - e, 0, b.Pv, !1);
        a.closePath();
        a.fill()
    },
    zS: function(a, c, d) {
        a = a || this.l;
        c *= b.view.O;
        d = "rgba(" + (0 | d.r) + "," + (0 | d.g) + "," + (0 | d.b);
        var e = a.createRadialGradient(0, 0, c / 10, 0, 0, c);
        e.addColorStop(0, d + ", 1)");
        e.addColorStop(0.3, d + ", 0.8)");
        e.addColorStop(0.6, d + ", 0.4)");
        e.addColorStop(1, d + ", 0.0)");
        a.fillStyle = e;
        a.beginPath();
        a.arc(0, 0, c, 0, b.Pv, !1);
        a.closePath();
        a.fill()
    },
    fillText: function(a, c, d) {
        this.l.fillText(a, c, -d)
    },
    Rj: function(a, c, d, e) {
        this.l.fillStyle = "rgba(" + a + "," + c + "," + d + "," + e / 255 + ")";
        this.l.strokeStyle = "rgba(" + a + "," + c + "," + d + "," + e / 255 + ")"
    },
    SM: function() {},
    ev: function(a) {
        this.l.lineWidth = a * b.view.O
    }
});
b.oC = b.oa.extend({
    l: null,
    al: !1,
    ib: null,
    Ee: -1,
    Nc: null,
    Fs: -1,
    Es: -1,
    ctor: function(a) {
        null == a && (a = b.l);
        if (!a instanceof WebGLRenderingContext) throw "Can't initialise DrawingPrimitiveWebGL. context need is WebGLRenderingContext";
        this.l = a;
        this.Nc = new Float32Array([1, 1, 1, 1])
    },
    Lf: function() {
        this.al || (this.ib = b.ff.Of(b.AD), this.Ee = this.l.getUniformLocation(this.ib.Iz(), "u_color"), this.Fs = this.l.getUniformLocation(this.ib.Iz(), "u_pointSize"), this.al = !0)
    },
    AS: function() {
        this.al = !1
    },
    gJ: function(a) {
        this.Lf();
        var c = this.l;
        this.ib.wc();
        this.ib.xd();
        b.tc(b.Lc);
        c.uniform4fv(this.Ee, this.Nc);
        this.ib.gN(this.Fs, this.Es);
        var d = c.createBuffer();
        c.bindBuffer(c.ARRAY_BUFFER, d);
        c.bufferData(c.ARRAY_BUFFER, new Float32Array([a.x, a.y]), c.STATIC_DRAW);
        c.vertexAttribPointer(b.lc, 2, c.FLOAT, !1, 0, 0);
        c.drawArrays(c.POINTS, 0, 1);
        c.deleteBuffer(d);
        b.Ze()
    },
    hJ: function(a) {
        if (a && 0 != a.length) {
            this.Lf();
            var c = this.l;
            this.ib.wc();
            this.ib.xd();
            b.tc(b.Lc);
            c.uniform4fv(this.Ee, this.Nc);
            this.ib.gN(this.Fs, this.Es);
            var d = c.createBuffer();
            c.bindBuffer(c.ARRAY_BUFFER, d);
            c.bufferData(c.ARRAY_BUFFER, this.uo(a), c.STATIC_DRAW);
            c.vertexAttribPointer(b.lc, 2, c.FLOAT, !1, 0, 0);
            c.drawArrays(c.POINTS, 0, a.length);
            c.deleteBuffer(d);
            b.Ze()
        }
    },
    uo: function(a) {
        for (var c = new Float32Array(2 * a.length), d = 0; d < a.length; d++) c[2 * d] = a[d].x,
        c[2 * d + 1] = a[d].y;
        return c
    },
    Jf: function(a, c) {
        this.Lf();
        var d = this.l;
        this.ib.wc();
        this.ib.xd();
        b.tc(b.Lc);
        d.uniform4fv(this.Ee, this.Nc);
        var e = d.createBuffer();
        d.bindBuffer(d.ARRAY_BUFFER, e);
        d.bufferData(d.ARRAY_BUFFER, this.uo([a, c]), d.STATIC_DRAW);
        d.vertexAttribPointer(b.lc, 2, d.FLOAT, !1, 0, 0);
        d.drawArrays(d.LINES, 0, 2);
        d.deleteBuffer(e);
        b.Ze()
    },
    ku: function(a, c) {
        this.Jf(C(a.x, a.y), C(c.x, a.y));
        this.Jf(C(c.x, a.y), C(c.x, c.y));
        this.Jf(C(c.x, c.y), C(a.x, c.y));
        this.Jf(C(a.x, c.y), C(a.x, a.y))
    },
    lJ: function(a, c, d) {
        this.mu([a, C(c.x, a.y), c, C(a.x, c.y)], 4, d)
    },
    gc: function(a, c, d) {
        this.Lf();
        c = this.l;
        this.ib.wc();
        this.ib.xd();
        b.tc(b.Lc);
        c.uniform4fv(this.Ee, this.Nc);
        var e = c.createBuffer();
        c.bindBuffer(c.ARRAY_BUFFER, e);
        c.bufferData(c.ARRAY_BUFFER, this.uo(a), c.STATIC_DRAW);
        c.vertexAttribPointer(b.lc, 2, c.FLOAT, !1, 0, 0);
        d ? c.drawArrays(c.LINE_LOOP, 0, a.length) : c.drawArrays(c.LINE_STRIP, 0, a.length);
        c.deleteBuffer(e);
        b.Ze()
    },
    mu: function(a, c, d) {
        this.Lf();
        d && this.Rj(d.r, d.g, d.b, d.a);
        c = this.l;
        this.ib.wc();
        this.ib.xd();
        b.tc(b.Lc);
        c.uniform4fv(this.Ee, this.Nc);
        d = c.createBuffer();
        c.bindBuffer(c.ARRAY_BUFFER, d);
        c.bufferData(c.ARRAY_BUFFER, this.uo(a), c.STATIC_DRAW);
        c.vertexAttribPointer(b.lc, 2, c.FLOAT, !1, 0, 0);
        c.drawArrays(c.TRIANGLE_FAN, 0, a.length);
        c.deleteBuffer(d);
        b.Ze()
    },
    hu: function(a, c, d, e, f) {
        this.Lf();
        var g = 1;
        f && g++;
        var h = 2 * Math.PI / e;
        if (f = new Float32Array(2 * (e + 2))) {
            for (var k = 0; k <= e; k++) {
                var m = k * h,
                n = c * Math.sin(m + d) + a.y;
                f[2 * k] = c * Math.cos(m + d) + a.x;
                f[2 * k + 1] = n
            }
            f[2 * (e + 1)] = a.x;
            f[2 * (e + 1) + 1] = a.y;
            a = this.l;
            this.ib.wc();
            this.ib.xd();
            b.tc(b.Lc);
            a.uniform4fv(this.Ee, this.Nc);
            c = a.createBuffer();
            a.bindBuffer(a.ARRAY_BUFFER, c);
            a.bufferData(a.ARRAY_BUFFER, f, a.STATIC_DRAW);
            a.vertexAttribPointer(b.lc, 2, a.FLOAT, !1, 0, 0);
            a.drawArrays(a.LINE_STRIP, 0, e + g);
            a.deleteBuffer(c);
            b.Ze()
        }
    },
    ju: function(a, c, d, e) {
        this.Lf();
        for (var f = new Float32Array(2 * (e + 1)), g = 0, h = 0; h < e; h++) f[2 * h] = Math.pow(1 - g, 2) * a.x + 2 * (1 - g) * g * c.x + g * g * d.x,
        f[2 * h + 1] = Math.pow(1 - g, 2) * a.y + 2 * (1 - g) * g * c.y + g * g * d.y,
        g += 1 / e;
        f[2 * e] = d.x;
        f[2 * e + 1] = d.y;
        a = this.l;
        this.ib.wc();
        this.ib.xd();
        b.tc(b.Lc);
        a.uniform4fv(this.Ee, this.Nc);
        c = a.createBuffer();
        a.bindBuffer(a.ARRAY_BUFFER, c);
        a.bufferData(a.ARRAY_BUFFER, f, a.STATIC_DRAW);
        a.vertexAttribPointer(b.lc, 2, a.FLOAT, !1, 0, 0);
        a.drawArrays(a.LINE_STRIP, 0, e + 1);
        a.deleteBuffer(c);
        b.Ze()
    },
    iu: function(a, c, d, e, f) {
        this.Lf();
        for (var g = new Float32Array(2 * (f + 1)), h = 0, k = 0; k < f; k++) g[2 * k] = Math.pow(1 - h, 3) * a.x + 3 * Math.pow(1 - h, 2) * h * c.x + 3 * (1 - h) * h * h * d.x + h * h * h * e.x,
        g[2 * k + 1] = Math.pow(1 - h, 3) * a.y + 3 * Math.pow(1 - h, 2) * h * c.y + 3 * (1 - h) * h * h * d.y + h * h * h * e.y,
        h += 1 / f;
        g[2 * f] = e.x;
        g[2 * f + 1] = e.y;
        a = this.l;
        this.ib.wc();
        this.ib.xd();
        b.tc(b.Lc);
        a.uniform4fv(this.Ee, this.Nc);
        c = a.createBuffer();
        a.bindBuffer(a.ARRAY_BUFFER, c);
        a.bufferData(a.ARRAY_BUFFER, g, a.STATIC_DRAW);
        a.vertexAttribPointer(b.lc, 2, a.FLOAT, !1, 0, 0);
        a.drawArrays(a.LINE_STRIP, 0, f + 1);
        a.deleteBuffer(c);
        b.Ze()
    },
    gu: function(a, c) {
        this.Lh(a, 0.5, c)
    },
    Lh: function(a, c, d) {
        this.Lf();
        for (var e = new Float32Array(2 * (d + 1)), f, g, h = 1 / a.length, k = 0; k < d + 1; k++) g = k / d,
        1 == g ? (f = a.length - 1, g = 1) : (f = 0 | g / h, g = (g - h * f) / h),
        f = b.aC(b.Fb(a, f - 1), b.Fb(a, f), b.Fb(a, f + 1), b.Fb(a, f + 2), c, g),
        e[2 * k] = f.x,
        e[2 * k + 1] = f.y;
        a = this.l;
        this.ib.wc();
        this.ib.xd();
        b.tc(b.Lc);
        a.uniform4fv(this.Ee, this.Nc);
        c = a.createBuffer();
        a.bindBuffer(a.ARRAY_BUFFER, c);
        a.bufferData(a.ARRAY_BUFFER, e, a.STATIC_DRAW);
        a.vertexAttribPointer(b.lc, 2, a.FLOAT, !1, 0, 0);
        a.drawArrays(a.LINE_STRIP, 0, d + 1);
        a.deleteBuffer(c);
        b.Ze()
    },
    Rj: function(a, c, d, e) {
        this.Nc[0] = a / 255;
        this.Nc[1] = c / 255;
        this.Nc[2] = d / 255;
        this.Nc[3] = e / 255
    },
    SM: function(a) {
        this.Es = a * b.Ka()
    },
    ev: function(a) {
        this.l.lineWidth && this.l.lineWidth(a)
    }
});
b.p.hr = function() {
    var a = b.A.prototype;
    a.V = b.B.prototype.V;
    a.Uc = function() {
        this.ua = !0;
        var a = this.sh,
        d = this.uh;
        this.Do = "rgba(128,128,128," + this.Cf + ")";
        this.Rn = "rgba(" + (0 | d.r) + "," + (0 | d.g) + "," + (0 | d.b) + ", 1)";
        this.Io = "rgba(" + (0 | a.r) + "," + (0 | a.g) + "," + (0 | a.b) + ", 1)"
    };
    a.sb = b.B.prototype.sb;
    a.Ga = b.B.prototype.Ga;
    a.kb = b.B.prototype.kb;
    a.Hu = function(a, d) {
        if (!b.B.prototype.ga.call(this)) return ! 1;
        this.shaderProgram = b.ff.Of(b.A.cF);
        this.Jt(d, !1);
        this.string = a;
        return ! 0
    };
    a.Np = function(a) {
        var d = this.uh;
        if (d.r != a.r || d.g != a.g || d.b != a.b) d.r = a.r,
        d.g = a.g,
        d.b = a.b,
        this.Uc(),
        this.ua = !0
    };
    a.na = function(a) {
        if (this.Ja && "" != this.Ja) {
            a = a || b.l;
            var d = this.ea;
            d && d.xb && (this.Jb.wc(), this.Jb.xd(), b.Ph(this.t.src, this.t.Y), b.qe(d), b.tc(b.gn), a.bindBuffer(a.ARRAY_BUFFER, this.wo), this.Dc && (a.bufferData(a.ARRAY_BUFFER, this.Pa.Xo, a.STATIC_DRAW), this.Dc = !1), a.vertexAttribPointer(b.lc, 3, a.FLOAT, !1, 24, 0), a.vertexAttribPointer(b.Dk, 2, a.FLOAT, !1, 24, 16), a.vertexAttribPointer(b.Ck, 4, a.UNSIGNED_BYTE, !0, 24, 12), a.drawArrays(a.TRIANGLE_STRIP, 0, 4));
            if (1 === b.Uf) a = this.Pa,
            b.Hd.gc([C(a.ya.e.x, a.ya.e.y), C(a.wa.e.x, a.wa.e.y), C(a.xa.e.x, a.xa.e.y), C(a.za.e.x, a.za.e.y)], 4, !0);
            else if (2 === b.Uf) {
                a = this.Pz();
                var d = this.offsetX,
                e = this.offsetY;
                b.Hd.gc([C(d, e), C(d + a.width, e), C(d + a.width, e + a.height), C(d, e + a.height)], 4, !0)
            }
            b.We++
        }
    };
    a.Ha = b.B.prototype.Ha
};
b.p.Hq = function() {
    var a = b.A.prototype;
    b.k(a, "color", a.Nh, a.V);
    b.k(a, "opacity", a.wj, a.Ga);
    b.k(a, "string", a.Nl, a.ic);
    b.k(a, "textAlign", a.eK, a.LM);
    b.k(a, "verticalAlign", a.KK, a.kN);
    b.k(a, "fontSize", a.bK, a.JM);
    b.k(a, "fontName", a.aK, a.IM);
    b.k(a, "font", a.$F, a.zH);
    b.k(a, "boundingWidth", a.Xr, a.vH);
    b.k(a, "boundingHeight", a.YF, a.uH);
    b.k(a, "fillStyle", a.ZF, a.Np);
    b.k(a, "strokeStyle", a.sG, a.LH);
    b.k(a, "lineWidth", a.fG, a.BH);
    b.k(a, "shadowOffsetX", a.oG, a.FH);
    b.k(a, "shadowOffsetY", a.pG, a.GH);
    b.k(a, "shadowOpacity", a.qG, a.HH);
    b.k(a, "shadowBlur", a.nG, a.EH)
};
b.A = b.B.extend({
    Za: null,
    qg: b.Yg,
    Cg: b.Ek,
    nc: null,
    Zb: 0,
    Ja: "",
    zs: null,
    Si: !1,
    ae: null,
    Kb: !1,
    Rb: null,
    Cf: 0,
    wg: 0,
    Do: null,
    Nd: !1,
    sh: null,
    Ef: 0,
    Io: null,
    uh: null,
    Rn: null,
    ut: 0,
    vt: 0,
    ua: !1,
    fo: null,
    ho: null,
    Nx: null,
    Mc: "LabelTTF",
    ctor: function(a, c, d, e, f, g) {
        b.B.prototype.ctor.call(this);
        this.Za = D(0, 0);
        this.qg = b.cn;
        this.Cg = b.Ek;
        this.Da = !1;
        this.ae = "";
        this.nc = "Arial";
        this.Kb = this.Si = !1;
        this.Rb = C(0, 0);
        this.wg = this.Cf = 0;
        this.Do = "rgba(128, 128, 128, 0.5)";
        this.Nd = !1;
        this.sh = b.color(255, 255, 255, 255);
        this.Ef = 0;
        this.Io = "";
        this.uh = b.color(255, 255, 255, 255);
        this.Rn = "rgba(255,255,255,1)";
        this.vt = this.ut = 0;
        this.ua = !1;
        this.Nx = [];
        this.Uc();
        c && c instanceof b.Fv ? this.Hu(a, c) : b.A.prototype.Qd.call(this, a, c, d, e, f, g)
    },
    ga: function() {
        return this.Qd(" ", this.nc, this.Zb)
    },
    TG: function() {
        this.$r().font = this.ae
    },
    Vi: function(a) {
        return this.$r().measureText(a).width
    },
    description: function() {
        return "\x3ccc.LabelTTF | FontName \x3d" + this.nc + " FontSize \x3d " + this.Zb.toFixed(1) + "\x3e"
    },
    V: null,
    Uc: null,
    sb: null,
    Ga: null,
    kb: null,
    wZ: function(a) {
        b.m.prototype.kb.call(this, a);
        this.Uc()
    },
    Nl: function() {
        return this.Ja
    },
    eK: function() {
        return this.qg
    },
    KK: function() {
        return this.Cg
    },
    $T: function() {
        return D(this.Za)
    },
    bK: function() {
        return this.Zb
    },
    aK: function() {
        return this.nc
    },
    Qd: function(a, c, d, e, f, g) {
        a = a ? a + "": "";
        d = d || 16;
        e = e || D(0, d);
        f = f || b.cn;
        g = g || b.Ek;
        this.Da = !1;
        this.Za = D(e.width, e.height);
        this.nc = c || "Arial";
        this.qg = f;
        this.Cg = g;
        this.Zb = d;
        this.ae = this.Zb + "px '" + c + "'";
        this.He = b.A.Gk(c, this.Zb);
        this.string = a;
        this.Uc();
        this.It();
        this.ua = !1;
        return ! 0
    },
    Hu: null,
    TY: function(a) {
        a && this.Jt(a, !0)
    },
    WU: function() {
        return this.hH(!1)
    },
    wJ: function(a, c, d, e) {
        d = d || 0.5; ! 1 === this.Kb && (this.Kb = !0);
        var f = this.Rb;
        if (f && f.x != a || f.Hc != c) f.x = a,
        f.y = c;
        this.Cf != d && (this.Cf = d);
        this.Uc();
        this.wg != e && (this.wg = e);
        this.ua = !0
    },
    oG: function() {
        return this.Rb.x
    },
    FH: function(a) { ! 1 === this.Kb && (this.Kb = !0);
        this.Rb.x != a && (this.Rb.x = a, this.ua = !0)
    },
    pG: function() {
        return this.Rb.Hc
    },
    GH: function(a) { ! 1 === this.Kb && (this.Kb = !0);
        this.Rb.Hc != a && (this.Rb.Hc = a, this.ua = !0)
    },
    dR: function() {
        return C(this.Rb.x, this.Rb.y)
    },
    tR: function(a) { ! 1 === this.Kb && (this.Kb = !0);
        if (this.Rb.x != a.x || this.Rb.y != a.y) this.Rb.x = a.x,
        this.Rb.y = a.y,
        this.ua = !0
    },
    qG: function() {
        return this.Cf
    },
    HH: function(a) { ! 1 === this.Kb && (this.Kb = !0);
        this.Cf != a && (this.Cf = a, this.Uc(), this.ua = !0)
    },
    nG: function() {
        return this.wg
    },
    EH: function(a) { ! 1 === this.Kb && (this.Kb = !0);
        this.wg != a && (this.wg = a, this.ua = !0)
    },
    vS: function() {
        this.Kb && (this.Kb = !1, this.ua = !0)
    },
    xJ: function(a, c) { ! 1 === this.Nd && (this.Nd = !0);
        var d = this.sh;
        if (d.r !== a.r || d.g !== a.g || d.b !== a.b) d.r = a.r,
        d.g = a.g,
        d.b = a.b,
        this.Uc();
        this.Ef !== c && (this.Ef = c || 0);
        this.ua = !0
    },
    sG: function() {
        return this.sh
    },
    LH: function(a) { ! 1 === this.Nd && (this.Nd = !0);
        var c = this.sh;
        if (c.r !== a.r || c.g !== a.g || c.b !== a.b) c.r = a.r,
        c.g = a.g,
        c.b = a.b,
        this.Uc(),
        this.ua = !0
    },
    fG: function() {
        return this.Ef
    },
    BH: function(a) { ! 1 === this.Nd && (this.Nd = !0);
        this.Ef !== a && (this.Ef = a || 0, this.ua = !0)
    },
    wS: function() {
        this.Nd && (this.Nd = !1, this.ua = !0)
    },
    Np: null,
    ZF: function() {
        return this.uh
    },
    Jt: function(a, c) {
        a.AT ? (this.Za.width = a.boundingWidth, this.Za.height = a.boundingHeight) : (this.Za.width = 0, this.Za.height = 0);
        this.qg = a.textAlign;
        this.Cg = a.verticalAlign;
        this.nc = a.fontName;
        this.Zb = a.fontSize || 12;
        this.ae = this.Zb + "px '" + this.nc + "'";
        this.He = b.A.Gk(this.nc, this.Zb);
        a.kB && this.wJ(a.shadowOffsetX, a.shadowOffsetY, a.shadowOpacity, a.shadowBlur);
        a.lv && this.xJ(a.strokeStyle, a.lineWidth);
        this.Np(a.fillStyle);
        c && this.It()
    },
    hH: function(a) {
        var c = new b.Fv;
        a ? (c.fontSize = this.Zb, c.boundingWidth = b.Ka() * this.Za.width, c.boundingHeight = b.Ka() * this.Za.height) : (c.fontSize = this.Zb, c.boundingWidth = this.Za.width, c.boundingHeight = this.Za.height);
        c.fontName = this.nc;
        c.textAlign = this.qg;
        c.verticalAlign = this.Cg;
        if (this.Nd) {
            c.lv = !0;
            var d = this.sh;
            c.strokeStyle = b.color(d.r, d.g, d.b);
            c.lineWidth = this.Ef
        } else c.lv = !1;
        this.Kb ? (c.kB = !0, c.shadowBlur = this.wg, c.shadowOpacity = this.Cf, c.shadowOffsetX = (a ? b.Ka() : 1) * this.Rb.x, c.shadowOffsetY = (a ? b.Ka() : 1) * this.Rb.y) : c.Kb = !1;
        a = this.uh;
        c.fillStyle = b.color(a.r, a.g, a.b);
        return c
    },
    He: 18,
    ic: function(a) {
        a = String(a);
        this.zs != a && (this.zs = a + "", this.To(), this.ua = !0)
    },
    To: function() {
        this.Ja = this.zs
    },
    LM: function(a) {
        a !== this.qg && (this.qg = a, this.ua = !0)
    },
    kN: function(a) {
        a != this.Cg && (this.Cg = a, this.ua = !0)
    },
    gY: function(a, c) {
        var d;
        void 0 === c ? (d = a.width, c = a.height) : d = a;
        if (d != this.Za.width || c != this.Za.height) this.Za.width = d,
        this.Za.height = c,
        this.To(),
        this.ua = !0
    },
    Xr: function() {
        return this.Za.width
    },
    vH: function(a) {
        a != this.Za.width && (this.Za.width = a, this.To(), this.ua = !0)
    },
    YF: function() {
        return this.Za.height
    },
    uH: function(a) {
        a != this.Za.height && (this.Za.height = a, this.To(), this.ua = !0)
    },
    JM: function(a) {
        this.Zb !== a && (this.Zb = a, this.ae = a + "px '" + this.nc + "'", this.He = b.A.Gk(this.nc, a), this.ua = !0)
    },
    IM: function(a) {
        this.nc && this.nc != a && (this.nc = a, this.ae = this.Zb + "px '" + a + "'", this.He = b.A.Gk(a, this.Zb), this.ua = !0)
    },
    $F: function() {
        return this.ae
    },
    zH: function(a) {
        var c = b.A.OF.exec(a);
        c && (this.Zb = parseInt(c[1]), this.nc = c[2], this.ae = a, this.He = b.A.Gk(this.nc, this.Zb), this.ua = !0)
    },
    JF: function(a) {
        if (a) {
            var c = this.ut,
            d = this.vt,
            e = this.v.height - d,
            f = this.Cg,
            g = this.qg,
            h = this.He,
            k = this.Ef;
            a.setTransform(1, 0, 0, 1, 0 + 0.5 * c, e + 0.5 * d);
            a.font != this.ae && (a.font = this.ae);
            a.fillStyle = this.Rn;
            var m = d = 0,
            n = this.Nd;
            n && (a.lineWidth = 2 * k, a.strokeStyle = this.Io);
            this.Kb && (k = this.Rb, a.shadowColor = this.Do, a.shadowOffsetX = k.x, a.shadowOffsetY = -k.y, a.shadowBlur = this.wg);
            a.textBaseline = b.A.YH[f];
            a.textAlign = b.A.XH[g];
            c = this.v.width - c;
            d = g === b.$v ? d + c: g === b.Yg ? d + c / 2 : d + 0;
            if (this.Si) for (g = this.Te.length, f === b.fw ? m = h + e - h * g: f === b.VE && (m = h / 2 + (e - h * g) / 2), f = 0; f < g; f++) c = this.Te[f],
            k = -e + h * f + m,
            n && a.strokeText(c, d, k),
            a.fillText(c, d, k);
            else f !== b.fw && (m = f === b.Ek ? m - e: m - 0.5 * e),
            n && a.strokeText(this.Ja, d, m),
            a.fillText(this.Ja, d, m)
        }
    },
    $r: function() {
        if (this.ho) return this.ho;
        if (!this.fo) {
            var a = b.rb("canvas"),
            c = new b.K;
            c.Mb(a);
            this.texture = c;
            this.fo = a
        }
        return this.ho = this.fo.getContext("2d")
    },
    vF: function(a, c, d) {
        var e = a[c],
        f = this.Vi(e);
        if (f > d && 1 < e.length) {
            for (var g = d / f * e.length | 0,
            h = e.substr(g), k = f - this.Vi(h), m, n = 0, r = 0; k > d && 100 > r++;) g *= d / k,
            g |= 0,
            h = e.substr(g),
            k = f - this.Vi(h);
            for (r = 0; k < d && 100 > r++;) h && (n = (m = b.A.gI.exec(h)) ? m[0].length: 1, m = h),
            g += n,
            h = e.substr(g),
            k = f - this.Vi(h);
            g -= n;
            d = e.substr(0, g);
            b.A.VN && b.A.WH.test(m || h) && (f = b.A.MG.exec(d), g -= f ? f[0].length: 0, m = e.substr(g), d = e.substr(0, g));
            b.A.KF.test(m) && (f = b.A.LG.exec(d)) && d !== f[0] && (g -= f[0].length, m = e.substr(g), d = e.substr(0, g));
            a[c] = m || h;
            a.splice(c, 0, d)
        }
    },
    Uo: function() {
        var a = this.Za.width,
        c, d, e = this.Nx;
        e.length = 0;
        this.Si = !1;
        this.TG();
        if (0 !== a) for (this.Te = this.Ja.split("\n"), c = 0; c < this.Te.length; c++) this.vF(this.Te, c, a);
        else for (this.Te = this.Ja.split("\n"), c = 0, d = this.Te.length; c < d; c++) e.push(this.Vi(this.Te[c]));
        0 < this.Te.length && (this.Si = !0);
        d = c = 0;
        this.Nd && (c = d = 2 * this.Ef);
        if (this.Kb) {
            var f = this.Rb;
            c += 2 * Math.abs(f.x);
            d += 2 * Math.abs(f.y)
        }
        a = 0 === a ? this.Si ? D(0 | Math.max.apply(Math, e) + c, 0 | this.He * this.Te.length + d) : D(0 | this.Vi(this.Ja) + c, 0 | this.He + d) : 0 === this.Za.height ? this.Si ? D(0 | a + c, 0 | this.He * this.Te.length + d) : D(0 | a + c, 0 | this.He + d) : D(0 | a + c, 0 | this.Za.height + d);
        this.wd(a);
        this.ut = c;
        this.vt = d;
        e = this.Ab;
        this.lb.x = 0.5 * c + (a.width - c) * e.x;
        this.lb.y = 0.5 * d + (a.height - d) * e.y
    },
    ud: function() {
        this.ua && this.Uo();
        return b.B.prototype.ud.call(this)
    },
    Ie: function() {
        this.ua && this.Uo();
        return b.B.prototype.Ie.call(this)
    },
    fh: function() {
        this.ua && this.Uo();
        return b.B.prototype.fh.call(this)
    },
    It: function() {
        var a = this.$r(),
        c = this.fo,
        d = this.v;
        if (0 === this.Ja.length) return c.width = 1,
        c.height = d.height || 1,
        this.ea && this.ea.Fa(),
        this.Ha(E(0, 0, 1, d.height)),
        !0;
        a.font = this.ae;
        this.Uo();
        var e = d.width,
        d = d.height,
        f = c.width == e && c.height == d;
        c.width = e;
        c.height = d;
        f && a.clearRect(0, 0, e, d);
        this.JF(a);
        this.ea && this.ea.Fa();
        this.Ha(E(0, 0, e, d));
        return ! 0
    },
    Ba: function(a) {
        this.Ja && "" != this.Ja && (this.ua && (this.ua = !1, this.It()), b.B.prototype.Ba.call(this, a || b.l))
    },
    na: null,
    Dy: function(a) {
        var c = this.ca ? this.textureAtlas.texture: this.ea;
        if (c) {
            var d = c.pixelsWidth,
            e = c.pixelsHeight,
            f, g = this.Pa;
            this.nb ? (b.vk ? (c = (2 * a.x + 1) / (2 * d), d = c + (2 * a.height - 2) / (2 * d), f = (2 * a.y + 1) / (2 * e), a = f + (2 * a.width - 2) / (2 * e)) : (c = a.x / d, d = (a.x + a.height) / d, f = a.y / e, a = (a.y + a.width) / e), this.gb && (e = f, f = a, a = e), this.hb && (e = c, c = d, d = e), g.wa.f.R = c, g.wa.f.S = f, g.xa.f.R = c, g.xa.f.S = a, g.ya.f.R = d, g.ya.f.S = f, g.za.f.R = d, g.za.f.S = a) : (b.vk ? (c = (2 * a.x + 1) / (2 * d), d = c + (2 * a.width - 2) / (2 * d), f = (2 * a.y + 1) / (2 * e), a = f + (2 * a.height - 2) / (2 * e)) : (c = a.x / d, d = (a.x + a.width) / d, f = a.y / e, a = (a.y + a.height) / e), this.gb && (e = c, c = d, d = e), this.hb && (e = f, f = a, a = e), g.wa.f.R = c, g.wa.f.S = a, g.xa.f.R = d, g.xa.f.S = a, g.ya.f.R = c, g.ya.f.S = f, g.za.f.R = d, g.za.f.S = f);
            this.Dc = !0
        }
    }
});
b.da === b.Ya ? (p = b.A.prototype, p.V = function(a) {
    b.m.prototype.V.call(this, a);
    this.Uc()
},
p.Uc = function() {
    this.ua = !0;
    var a = this.Q,
    c = this.sa,
    d = this.sh,
    e = this.uh;
    this.Do = "rgba(" + (0 | 0.5 * a.r) + "," + (0 | 0.5 * a.g) + "," + (0 | 0.5 * a.b) + "," + this.Cf + ")";
    this.Rn = "rgba(" + (0 | a.r / 255 * e.r) + "," + (0 | a.g / 255 * e.g) + "," + (0 | a.b / 255 * e.b) + ", " + c / 255 + ")";
    this.Io = "rgba(" + (0 | a.r / 255 * d.r) + "," + (0 | a.g / 255 * d.g) + "," + (0 | a.b / 255 * d.b) + ", " + c / 255 + ")"
},
p.sb = function(a) {
    b.m.prototype.sb.call(this, a);
    this.Uc()
},
p.Ga = function(a) {
    this.bH !== a && (b.B.prototype.Ga.call(this, a), this.Uc(), this.ua = !0)
},
p.kb = b.B.prototype.kb, p.Hu = function(a, c) {
    this.Jt(c, !1);
    this.string = a;
    return ! 0
},
p.Np = function(a) {
    var c = this.uh;
    if (c.r != a.r || c.g != a.g || c.b != a.b) c.r = a.r,
    c.g = a.g,
    c.b = a.b,
    this.Uc(),
    this.ua = !0
},
p.na = b.B.prototype.na, p.Ha = function(a, c, d) {
    this.nb = c || !1;
    this.wd(d || a);
    this.iv(a);
    c = this.ij;
    c.x = a.x;
    c.y = a.y;
    c.width = a.width;
    c.height = a.height;
    c.Xj = !(0 === c.width || 0 === c.height || 0 > c.x || 0 > c.y);
    a = this.le;
    this.gb && (a.x = -a.x);
    this.hb && (a.y = -a.y);
    this.Oa.x = a.x + (this.v.width - this.F.width) / 2;
    this.Oa.y = a.y + (this.v.height - this.F.height) / 2;
    this.ca && (this.dirty = !0)
},
p = null) : (b.assert("function" === typeof b.p.hr, b.c.Gb, "LabelTTFWebGL.js"), b.p.hr(), delete b.p.hr);
b.assert("function" === typeof b.p.Hq, b.c.Gb, "LabelTTFPropertyDefine.js");
b.p.Hq();
delete b.p.Hq;
b.A.XH = ["left", "center", "right"];
b.A.YH = ["top", "middle", "bottom"];
b.A.VN = !0;
b.A.gI = /([a-zA-Z0-9\u00c4\u00d6\u00dc\u00e4\u00f6\u00fc\u00df\u00e9\u00e8\u00e7\u00e0\u00f9\u00ea\u00e2\u00ee\u00f4\u00fb]+|\S)/;
b.A.WH = /^[!,.:;}\]%\?>\u3001\u2018\u201c\u300b\uff1f\u3002\uff0c\uff01]/;
b.A.MG = /([a-zA-Z0-9\u00c4\u00d6\u00dc\u00e4\u00f6\u00fc\u00df\u00e9\u00e8\u00e7\u00e0\u00f9\u00ea\u00e2\u00ee\u00f4\u00fb]+|\S)$/;
b.A.LG = /[a-zA-Z0-9\u00c4\u00d6\u00dc\u00e4\u00f6\u00fc\u00df\u00e9\u00e8\u00e7\u00e0\u00f9\u00ea\u00e2\u00ee\u00f4\u00fb]+$/;
b.A.KF = /^[a-zA-Z0-9\u00c4\u00d6\u00dc\u00e4\u00f6\u00fc\u00df\u00e9\u00e8\u00e7\u00e0\u00f9\u00ea\u00e2\u00ee\u00f4\u00fb]/;
b.A.OF = /^(\d+)px\s+['"]?([\w\s\d]+)['"]?$/;
b.A.create = function(a, c, d, e, f, g) {
    return new b.A(a, c, d, e, f, g)
};
b.A.oS = b.A.create;
b.A.cF = b.TE ? b.Wq: b.yD;
b.A.bg = b.rb("div");
b.A.bg.style.fontFamily = "Arial";
b.A.bg.style.position = "absolute";
b.A.bg.style.left = "-100px";
b.A.bg.style.top = "-100px";
b.A.bg.style.lineHeight = "normal";
document.body ? document.body.appendChild(b.A.bg) : b.ka(window, "load",
function() {
    this.removeEventListener("load", arguments.callee, !1);
    document.body.appendChild(b.A.bg)
},
!1);
b.A.Gk = function(a, c) {
    var d = b.A.iw[a + "." + c];
    if (0 < d) return d;
    var e = b.A.bg;
    e.innerHTML = "ajghl~!";
    e.style.fontFamily = a;
    e.style.fontSize = c + "px";
    d = e.clientHeight;
    b.A.iw[a + "." + c] = d;
    e.innerHTML = "";
    return d
};
b.A.iw = {};
b.CC = b.oa.extend({
    jb: null,
    target: null,
    Dh: 0,
    Xc: null,
    Kh: !1,
    paused: !1,
    Eu: null,
    ctor: function() {
        this.jb = [];
        this.target = null;
        this.Dh = 0;
        this.Xc = null;
        this.paused = this.Kh = !1;
        this.Eu = null
    }
});
b.pv = b.oa.extend({
    be: null,
    oi: null,
    Cc: null,
    Fe: !1,
    rR: function(a, c) {
        for (var d = 0; d < a.length; d++) if (c == a[d].target) return a[d];
        return null
    },
    ctor: function() {
        this.be = {};
        this.oi = [];
        this.Cc = null;
        this.Fe = !1
    },
    jI: function(a, c, d) {
        if (!a) throw "cc.ActionManager.addAction(): action must be non-null";
        if (!c) throw "cc.ActionManager.addAction(): action must be non-null";
        var e = this.be[c.L];
        e || (e = new b.CC, e.paused = d, e.target = c, this.be[c.L] = e, this.oi.push(e));
        this.eF(e);
        e.jb.push(a);
        a.q(c)
    },
    pX: function() {
        for (var a = this.oi,
        c = 0; c < a.length; c++) {
            var d = a[c];
            d && this.DA(d.target, !0)
        }
    },
    DA: function(a, c) {
        if (null != a) {
            var d = this.be[a.L];
            d && ( - 1 === d.jb.indexOf(d.Xc) || d.Kh || (d.Kh = !0), d.jb.length = 0, this.Cc != d || c ? this.Hr(d) : this.Fe = !0)
        }
    },
    CA: function(a) {
        if (null != a) {
            var c = this.be[a.originalTarget.L];
            if (c) for (var d = 0; d < c.jb.length; d++) {
                if (c.jb[d] == a) {
                    c.jb.splice(d, 1);
                    break
                }
            } else b.log(b.c.IB)
        }
    },
    ZL: function(a, c) {
        a == b.fi && b.log(b.c.qv);
        b.assert(c, b.c.qv);
        var d = this.be[c.L];
        if (d) for (var e = d.jb.length,
        f = 0; f < e; ++f) {
            var g = d.jb[f];
            if (g && g.yu() === a && g.originalTarget == c) {
                this.kH(f, d);
                break
            }
        }
    },
    Bz: function(a, c) {
        a == b.fi && b.log(b.c.GB);
        var d = this.be[c.L];
        if (d) {
            if (null != d.jb) for (var e = 0; e < d.jb.length; ++e) {
                var f = d.jb[e];
                if (f && f.yu() === a) return f
            }
            b.log(b.c.HB, a)
        }
        return null
    },
    BL: function(a) {
        return (a = this.be[a.L]) ? a.jb ? a.jb.length: 0 : 0
    },
    Lj: function(a) { (a = this.be[a.L]) && (a.paused = !0)
    },
    Qf: function(a) { (a = this.be[a.L]) && (a.paused = !1)
    },
    WW: function() {
        for (var a = [], c = this.oi, d = 0; d < c.length; d++) {
            var e = c[d];
            e && !e.paused && (e.paused = !0, a.push(e.target))
        }
        return a
    },
    kM: function(a) {
        if (a) for (var c = 0; c < a.length; c++) a[c] && this.Qf(a[c])
    },
    bX: function() {
        b.Qa.Ig().nm(this)
    },
    kH: function(a, c) {
        c.jb[a] != c.Xc || c.Kh || (c.Kh = !0);
        c.jb.splice(a, 1);
        c.Dh >= a && c.Dh--;
        0 == c.jb.length && (this.Cc == c ? this.Fe = !0 : this.Hr(c))
    },
    Hr: function(a) {
        a && (delete this.be[a.target.L], b.Wc(this.oi, a), a.jb = null, a.target = null)
    },
    eF: function(a) {
        null == a.jb && (a.jb = [])
    },
    update: function(a) {
        for (var c = this.oi,
        d, e = 0; e < c.length; e++) {
            d = this.Cc = c[e];
            if (!d.paused) for (d.Dh = 0; d.Dh < d.jb.length; d.Dh++) if (d.Xc = d.jb[d.Dh], d.Xc) {
                d.Kh = !1;
                d.Xc.step(a * (d.Xc.ul ? d.Xc.rc: 1));
                if (d.Kh) d.Xc = null;
                else if (d.Xc.Rd()) {
                    d.Xc.stop();
                    var f = d.Xc;
                    d.Xc = null;
                    this.CA(f)
                }
                d.Xc = null
            }
            this.Fe && 0 === d.jb.length && this.Hr(d)
        }
    }
});
b.fi = -1;
b.Ob = b.oa.extend({
    originalTarget: null,
    target: null,
    tag: b.fi,
    ctor: function() {
        this.target = this.originalTarget = null;
        this.tag = b.fi
    },
    copy: function() {
        b.log("copy is deprecated. Please use clone instead.");
        return this.d()
    },
    d: function() {
        var a = new b.Ob;
        a.originalTarget = null;
        a.target = null;
        a.tag = this.tag;
        return a
    },
    Rd: function() {
        return ! 0
    },
    q: function(a) {
        this.target = this.originalTarget = a
    },
    stop: function() {
        this.target = null
    },
    step: function() {
        b.log("[Action step]. override me")
    },
    update: function() {
        b.log("[Action update]. override me")
    },
    UU: function() {
        return this.target
    },
    RY: function(a) {
        this.target = a
    },
    BU: function() {
        return this.originalTarget
    },
    FY: function(a) {
        this.originalTarget = a
    },
    yu: function() {
        return this.tag
    },
    gB: function(a) {
        this.tag = a
    },
    Zu: function() {},
    Pf: function() {}
});
b.action = function() {
    return new b.Ob
};
b.Ob.create = b.action;
b.lf = b.Ob.extend({
    u: 0,
    ctor: function() {
        b.Ob.prototype.ctor.call(this);
        this.u = 0
    },
    tu: function() {
        return this.u * (this.qb || 1)
    },
    jY: function(a) {
        this.u = a
    },
    reverse: function() {
        b.log("cocos2d: FiniteTimeAction#reverse: Implement me");
        return null
    },
    d: function() {
        return new b.lf
    }
});
b.bn = b.Ob.extend({
    rc: 0,
    ta: null,
    ctor: function(a, c) {
        b.Ob.prototype.ctor.call(this);
        this.rc = 0;
        this.ta = null;
        a && this.C(a, c)
    },
    CK: function() {
        return this.rc
    },
    cN: function(a) {
        this.rc = a
    },
    C: function(a, c) {
        if (!a) throw "cc.Speed.initWithAction(): action must be non nil";
        this.ta = a;
        this.rc = c;
        return ! 0
    },
    d: function() {
        var a = new b.bn;
        a.C(this.ta.d(), this.rc);
        return a
    },
    q: function(a) {
        b.Ob.prototype.q.call(this, a);
        this.ta.q(a)
    },
    stop: function() {
        this.ta.stop();
        b.Ob.prototype.stop.call(this)
    },
    step: function(a) {
        this.ta.step(a * this.rc)
    },
    Rd: function() {
        return this.ta.Rd()
    },
    reverse: function() {
        return b.bn.create(this.ta.reverse(), this.rc)
    },
    $A: function(a) {
        this.ta != a && (this.ta = a)
    },
    uu: function() {
        return this.ta
    }
});
b.speed = function(a, c) {
    return new b.bn(a, c)
};
b.bn.create = b.speed;
b.rq = b.Ob.extend({
    Hi: null,
    qi: !1,
    un: !1,
    Wn: null,
    Xk: null,
    Rh: 0,
    Zh: 0,
    bi: 0,
    Hh: 0,
    Qt: null,
    ctor: function(a, c) {
        b.Ob.prototype.ctor.call(this);
        this.Hi = null;
        this.un = this.qi = !1;
        this.Xk = this.Wn = null;
        this.Hh = this.bi = this.Zh = this.Rh = 0;
        this.Qt = E(0, 0, 0, 0);
        a && (c ? this.Cj(a, c) : this.Cj(a))
    },
    d: function() {
        var a = new b.rq,
        c = this.Qt;
        a.Cj(this.Hi, new b.Uv(c.x, c.y, c.width, c.height));
        return a
    },
    vV: function() {
        return this.qi
    },
    XX: function(a) {
        this.qi = a
    },
    Cj: function(a, c) {
        if (!a) throw "cc.Follow.initWithAction(): followedNode must be non nil";
        c = c || E(0, 0, 0, 0);
        this.Hi = a;
        this.Qt = c;
        this.qi = !b.Ns(c);
        this.un = !1;
        var d = b.Qa.Ql();
        this.Xk = C(d.width, d.height);
        this.Wn = b.Kg(this.Xk, 0.5);
        this.qi && (this.Rh = -(c.x + c.width - this.Xk.x), this.Zh = -c.x, this.bi = -c.y, this.Hh = -(c.y + c.height - this.Xk.y), this.Zh < this.Rh && (this.Zh = this.Rh = (this.Rh + this.Zh) / 2), this.bi < this.Hh && (this.bi = this.Hh = (this.bi + this.Hh) / 2), this.bi == this.Hh && this.Rh == this.Zh && (this.un = !0));
        return ! 0
    },
    step: function() {
        var a = this.Hi.x,
        c = this.Hi.y,
        a = this.Wn.x - a,
        c = this.Wn.y - c;
        this.qi ? this.un || this.target.Ma(b.cp(a, this.Rh, this.Zh), b.cp(c, this.Hh, this.bi)) : this.target.Ma(a, c)
    },
    Rd: function() {
        return ! this.Hi.running
    },
    stop: function() {
        this.target = null;
        b.Ob.prototype.stop.call(this)
    }
});
b.LJ = function(a, c) {
    return new b.rq(a, c)
};
b.rq.create = b.LJ;
b.o = b.lf.extend({
    Ta: 0,
    Sn: !1,
    Id: null,
    qb: 1,
    rl: !1,
    Zi: !1,
    rc: 1,
    ul: !1,
    ctor: function(a) {
        this.qb = this.rc = 1;
        this.rl = !1;
        this.MAX_VALUE = 2;
        this.ul = this.Zi = !1;
        b.lf.prototype.ctor.call(this);
        void 0 !== a && this.n(a)
    },
    bU: function() {
        return this.Ta
    },
    n: function(a) {
        this.u = 0 === a ? b.Nm: a;
        this.Ta = 0;
        return this.Sn = !0
    },
    Rd: function() {
        return this.Ta >= this.u
    },
    M: function(a) {
        a.rl = this.rl;
        a.rc = this.rc;
        a.qb = this.qb;
        a.Id = this.Id;
        a.ul = this.ul;
        a.Zi = this.Zi
    },
    pc: function(a) {
        if (this.Id) {
            a.Id = [];
            for (var c = 0; c < this.Id.length; c++) a.Id.push(this.Id[c].reverse())
        }
    },
    d: function() {
        var a = new b.o(this.u);
        this.M(a);
        return a
    },
    fa: function(a) {
        this.Id ? this.Id.length = 0 : this.Id = [];
        for (var c = 0; c < arguments.length; c++) this.Id.push(arguments[c]);
        return this
    },
    Hb: function(a) {
        var c = this.Id;
        if (!c || 0 === c.length) return a;
        for (var d = 0,
        e = c.length; d < e; d++) a = c[d].fa(a);
        return a
    },
    step: function(a) {
        this.Sn ? (this.Sn = !1, this.Ta = 0) : this.Ta += a;
        a = this.Ta / (1.192092896E-7 < this.u ? this.u: 1.192092896E-7);
        a = 1 > a ? a: 1;
        this.update(0 < a ? a: 0);
        this.Zi && 1 < this.qb && this.Rd() && (this.rl || this.qb--, this.q(this.target), this.step(this.Ta - this.u))
    },
    q: function(a) {
        b.Ob.prototype.q.call(this, a);
        this.Ta = 0;
        this.Sn = !0
    },
    reverse: function() {
        b.log("cc.IntervalAction: reverse not implemented.");
        return null
    },
    VX: function() {
        b.log("cc.ActionInterval.setAmplitudeRate(): it should be overridden in subclass.")
    },
    ET: function() {
        b.log("cc.ActionInterval.getAmplitudeRate(): it should be overridden in subclass.");
        return 0
    },
    speed: function(a) {
        if (0 >= a) return b.log("The speed parameter error"),
        this;
        this.ul = !0;
        this.rc *= a;
        return this
    },
    CK: function() {
        return this.rc
    },
    cN: function(a) {
        this.rc = a;
        return this
    },
    repeat: function(a) {
        a = Math.round(a);
        if (isNaN(a) || 1 > a) return b.log("The repeat parameter error"),
        this;
        this.Zi = !0;
        this.qb *= a;
        return this
    },
    Yh: function() {
        this.Zi = !0;
        this.qb = this.MAX_VALUE;
        this.rl = !0;
        return this
    }
});
b.iI = function(a) {
    return new b.o(a)
};
b.o.create = b.iI;
b.vb = b.o.extend({
    Be: null,
    Ky: null,
    fl: 0,
    ctor: function(a) {
        b.o.prototype.ctor.call(this);
        this.Be = [];
        var c = a instanceof Array ? a: arguments,
        d = c.length - 1;
        0 <= d && null == c[d] && b.log("parameters should not be ending with null in Javascript");
        if (0 <= d) {
            for (var e = c[0], f = 1; f < d; f++) c[f] && (e = b.vb.nf(e, c[f]));
            this.Qh(e, c[d])
        }
    },
    Qh: function(a, c) {
        if (!a || !c) throw "cc.Sequence.initWithTwoActions(): arguments must all be non nil";
        this.n(a.u + c.u);
        this.Be[0] = a;
        this.Be[1] = c;
        return ! 0
    },
    d: function() {
        var a = new b.vb;
        this.M(a);
        a.Qh(this.Be[0].d(), this.Be[1].d());
        return a
    },
    q: function(a) {
        b.o.prototype.q.call(this, a);
        this.Ky = this.Be[0].u / this.u;
        this.fl = -1
    },
    stop: function() { - 1 !== this.fl && this.Be[this.fl].stop();
        b.Ob.prototype.stop.call(this)
    },
    update: function(a) {
        a = this.Hb(a);
        var c = 0,
        d = this.Ky,
        e = this.Be,
        f = this.fl;
        a < d ? (a = 0 !== d ? a / d: 1, 0 === c && 1 === f && (e[1].update(0), e[1].stop())) : (c = 1, a = 1 === d ? 1 : (a - d) / (1 - d), -1 === f && (e[0].q(this.target), e[0].update(1), e[0].stop()), f || (e[0].update(1), e[0].stop()));
        f === c && e[c].Rd() || (f !== c && e[c].q(this.target), e[c].update(a), this.fl = c)
    },
    reverse: function() {
        var a = b.vb.nf(this.Be[1].reverse(), this.Be[0].reverse());
        this.M(a);
        this.pc(a);
        return a
    }
});
b.tM = function(a) {
    var c = a instanceof Array ? a: arguments;
    0 < c.length && null == c[c.length - 1] && b.log("parameters should not be ending with null in Javascript");
    for (var d = c[0], e = 1; e < c.length; e++) c[e] && (d = b.vb.nf(d, c[e]));
    return d
};
b.vb.create = b.tM;
b.vb.nf = function(a, c) {
    var d = new b.vb;
    d.Qh(a, c);
    return d
};
b.Qq = b.o.extend({
    qb: 0,
    zg: 0,
    us: 0,
    nw: !1,
    ta: null,
    ctor: function(a, c) {
        b.o.prototype.ctor.call(this);
        void 0 !== c && this.C(a, c)
    },
    C: function(a, c) {
        return this.n(a.u * c) ? (this.qb = c, this.ta = a, a instanceof b.ve && (this.nw = !0, this.qb -= 1), this.zg = 0, !0) : !1
    },
    d: function() {
        var a = new b.Qq;
        this.M(a);
        a.C(this.ta.d(), this.qb);
        return a
    },
    q: function(a) {
        this.zg = 0;
        this.us = this.ta.u / this.u;
        b.o.prototype.q.call(this, a);
        this.ta.q(a)
    },
    stop: function() {
        this.ta.stop();
        b.Ob.prototype.stop.call(this)
    },
    update: function(a) {
        a = this.Hb(a);
        var c = this.ta,
        d = this.u,
        e = this.qb,
        f = this.us;
        if (a >= f) {
            for (; a > f && this.zg < e;) c.update(1),
            this.zg++,
            c.stop(),
            c.q(this.target),
            this.us = f += c.u / d;
            1 <= a && this.zg < e && this.zg++;
            this.nw || (this.zg === e ? (c.update(1), c.stop()) : c.update(a - (f - c.u / d)))
        } else c.update(a * e % 1)
    },
    Rd: function() {
        return this.zg == this.qb
    },
    reverse: function() {
        var a = b.repeat(this.ta.reverse(), this.qb);
        this.M(a);
        this.pc(a);
        return a
    },
    $A: function(a) {
        this.ta != a && (this.ta = a)
    },
    uu: function() {
        return this.ta
    }
});
b.repeat = function(a, c) {
    return new b.Qq(a, c)
};
b.Qq.create = b.repeat;
b.Rq = b.o.extend({
    ta: null,
    ctor: function(a) {
        b.o.prototype.ctor.call(this);
        this.ta = null;
        a && this.C(a)
    },
    C: function(a) {
        if (!a) throw "cc.RepeatForever.initWithAction(): action must be non null";
        this.ta = a;
        return ! 0
    },
    d: function() {
        var a = new b.Rq;
        this.M(a);
        a.C(this.ta.d());
        return a
    },
    q: function(a) {
        b.o.prototype.q.call(this, a);
        this.ta.q(a)
    },
    step: function(a) {
        var c = this.ta;
        c.step(a);
        c.Rd() && (c.q(this.target), c.step(c.Ta - c.u))
    },
    Rd: function() {
        return ! 1
    },
    reverse: function() {
        var a = b.Yh(this.ta.reverse());
        this.M(a);
        this.pc(a);
        return a
    },
    $A: function(a) {
        this.ta != a && (this.ta = a)
    },
    uu: function() {
        return this.ta
    }
});
b.Yh = function(a) {
    return new b.Rq(a)
};
b.Rq.create = b.Yh;
b.Xg = b.o.extend({
    tf: null,
    Hf: null,
    ctor: function(a) {
        b.o.prototype.ctor.call(this);
        this.Hf = this.tf = null;
        var c = a instanceof Array ? a: arguments,
        d = c.length - 1;
        0 <= d && null == c[d] && b.log("parameters should not be ending with null in Javascript");
        if (0 <= d) {
            for (var e = c[0], f = 1; f < d; f++) c[f] && (e = b.Xg.nf(e, c[f]));
            this.Qh(e, c[d])
        }
    },
    Qh: function(a, c) {
        if (!a || !c) throw "cc.Spawn.initWithTwoActions(): arguments must all be non null";
        var d = !1,
        e = a.u,
        f = c.u;
        this.n(Math.max(e, f)) && (this.tf = a, this.Hf = c, e > f ? this.Hf = b.vb.nf(c, b.hp(e - f)) : e < f && (this.tf = b.vb.nf(a, b.hp(f - e))), d = !0);
        return d
    },
    d: function() {
        var a = new b.Xg;
        this.M(a);
        a.Qh(this.tf.d(), this.Hf.d());
        return a
    },
    q: function(a) {
        b.o.prototype.q.call(this, a);
        this.tf.q(a);
        this.Hf.q(a)
    },
    stop: function() {
        this.tf.stop();
        this.Hf.stop();
        b.Ob.prototype.stop.call(this)
    },
    update: function(a) {
        a = this.Hb(a);
        this.tf && this.tf.update(a);
        this.Hf && this.Hf.update(a)
    },
    reverse: function() {
        var a = b.Xg.nf(this.tf.reverse(), this.Hf.reverse());
        this.M(a);
        this.pc(a);
        return a
    }
});
b.tN = function(a) {
    var c = a instanceof Array ? a: arguments;
    0 < c.length && null == c[c.length - 1] && b.log("parameters should not be ending with null in Javascript");
    for (var d = c[0], e = 1; e < c.length; e++) null != c[e] && (d = b.Xg.nf(d, c[e]));
    return d
};
b.Xg.create = b.tN;
b.Xg.nf = function(a, c) {
    var d = new b.Xg;
    d.Qh(a, c);
    return d
};
b.Uq = b.o.extend({
    Jn: 0,
    vl: 0,
    Cw: 0,
    Mr: 0,
    dj: 0,
    Dw: 0,
    ctor: function(a, c, d) {
        b.o.prototype.ctor.call(this);
        void 0 !== c && this.n(a, c, d)
    },
    n: function(a, c, d) {
        return b.o.prototype.n.call(this, a) ? (this.Jn = c || 0, this.Mr = d || this.Jn, !0) : !1
    },
    d: function() {
        var a = new b.Uq;
        this.M(a);
        a.n(this.u, this.Jn, this.Mr);
        return a
    },
    q: function(a) {
        b.o.prototype.q.call(this, a);
        var c = a.rotationX % 360,
        d = this.Jn - c;
        180 < d && (d -= 360); - 180 > d && (d += 360);
        this.vl = c;
        this.Cw = d;
        this.dj = a.rotationY % 360;
        a = this.Mr - this.dj;
        180 < a && (a -= 360); - 180 > a && (a += 360);
        this.Dw = a
    },
    reverse: function() {
        b.log("cc.RotateTo.reverse(): it should be overridden in subclass.")
    },
    update: function(a) {
        a = this.Hb(a);
        this.target && (this.target.rotationX = this.vl + this.Cw * a, this.target.rotationY = this.dj + this.Dw * a)
    }
});
b.nM = function(a, c, d) {
    return new b.Uq(a, c, d)
};
b.Uq.create = b.nM;
b.Tq = b.o.extend({
    Zd: 0,
    vl: 0,
    pn: 0,
    dj: 0,
    ctor: function(a, c, d) {
        b.o.prototype.ctor.call(this);
        void 0 !== c && this.n(a, c, d)
    },
    n: function(a, c, d) {
        return b.o.prototype.n.call(this, a) ? (this.Zd = c || 0, this.pn = d || this.Zd, !0) : !1
    },
    d: function() {
        var a = new b.Tq;
        this.M(a);
        a.n(this.u, this.Zd, this.pn);
        return a
    },
    q: function(a) {
        b.o.prototype.q.call(this, a);
        this.vl = a.rotationX;
        this.dj = a.rotationY
    },
    update: function(a) {
        a = this.Hb(a);
        this.target && (this.target.rotationX = this.vl + this.Zd * a, this.target.rotationY = this.dj + this.pn * a)
    },
    reverse: function() {
        var a = b.NA(this.u, -this.Zd, -this.pn);
        this.M(a);
        this.pc(a);
        return a
    }
});
b.NA = function(a, c, d) {
    return new b.Tq(a, c, d)
};
b.Tq.create = b.NA;
b.ub = b.o.extend({
    Pe: null,
    ob: null,
    yb: null,
    ctor: function(a, c, d) {
        b.o.prototype.ctor.call(this);
        this.Pe = C(0, 0);
        this.ob = C(0, 0);
        this.yb = C(0, 0);
        void 0 !== c && this.n(a, c, d)
    },
    n: function(a, c, d) {
        return b.o.prototype.n.call(this, a) ? (void 0 !== c.x && (d = c.y, c = c.x), this.Pe.x = c, this.Pe.y = d, !0) : !1
    },
    d: function() {
        var a = new b.ub;
        this.M(a);
        a.n(this.u, this.Pe);
        return a
    },
    q: function(a) {
        b.o.prototype.q.call(this, a);
        var c = a.ja.x;
        a = a.ja.y;
        this.yb.x = c;
        this.yb.y = a;
        this.ob.x = c;
        this.ob.y = a
    },
    update: function(a) {
        a = this.Hb(a);
        if (this.target) {
            var c = this.Pe.x * a;
            a *= this.Pe.y;
            var d = this.ob;
            if (b.rm) {
                var e = this.target.ja.y,
                f = this.yb;
                d.x = d.x + this.target.ja.x - f.x;
                d.y = d.y + e - f.y;
                c += d.x;
                a += d.y;
                f.x = c;
                f.y = a;
                this.target.Ma(c, a)
            } else this.target.Ma(d.x + c, d.y + a)
        }
    },
    reverse: function() {
        var a = b.moveBy(this.u, C( - this.Pe.x, -this.Pe.y));
        this.M(a);
        this.pc(a);
        return a
    }
});
b.moveBy = function(a, c, d) {
    return new b.ub(a, c, d)
};
b.ub.create = b.moveBy;
b.wk = b.ub.extend({
    kd: null,
    ctor: function(a, c, d) {
        b.ub.prototype.ctor.call(this);
        this.kd = C(0, 0);
        void 0 !== c && this.n(a, c, d)
    },
    n: function(a, c, d) {
        return b.ub.prototype.n.call(this, a, c, d) ? (void 0 !== c.x && (d = c.y, c = c.x), this.kd.x = c, this.kd.y = d, !0) : !1
    },
    d: function() {
        var a = new b.wk;
        this.M(a);
        a.n(this.u, this.kd);
        return a
    },
    q: function(a) {
        b.ub.prototype.q.call(this, a);
        this.Pe.x = this.kd.x - a.ja.x;
        this.Pe.y = this.kd.y - a.ja.y
    }
});
b.moveTo = function(a, c, d) {
    return new b.wk(a, c, d)
};
b.wk.create = b.moveTo;
b.Wg = b.o.extend({
    ie: 0,
    je: 0,
    Fo: 0,
    Go: 0,
    Mn: 0,
    Nn: 0,
    Oc: 0,
    Pc: 0,
    ctor: function(a, c, d) {
        b.o.prototype.ctor.call(this);
        void 0 !== d && this.n(a, c, d)
    },
    n: function(a, c, d) {
        var e = !1;
        b.o.prototype.n.call(this, a) && (this.Mn = c, this.Nn = d, e = !0);
        return e
    },
    d: function() {
        var a = new b.Wg;
        this.M(a);
        a.n(this.u, this.Mn, this.Nn);
        return a
    },
    q: function(a) {
        b.o.prototype.q.call(this, a);
        this.Fo = a.skewX % 180;
        this.Oc = this.Mn - this.Fo;
        180 < this.Oc && (this.Oc -= 360); - 180 > this.Oc && (this.Oc += 360);
        this.Go = a.skewY % 360;
        this.Pc = this.Nn - this.Go;
        180 < this.Pc && (this.Pc -= 360); - 180 > this.Pc && (this.Pc += 360)
    },
    update: function(a) {
        a = this.Hb(a);
        this.target.skewX = this.Fo + this.Oc * a;
        this.target.skewY = this.Go + this.Pc * a
    }
});
b.sN = function(a, c, d) {
    return new b.Wg(a, c, d)
};
b.Wg.create = b.sN;
b.Xq = b.Wg.extend({
    ctor: function(a, c, d) {
        b.Wg.prototype.ctor.call(this);
        void 0 !== d && this.n(a, c, d)
    },
    n: function(a, c, d) {
        var e = !1;
        b.Wg.prototype.n.call(this, a, c, d) && (this.ie = c, this.je = d, e = !0);
        return e
    },
    d: function() {
        var a = new b.Xq;
        this.M(a);
        a.n(this.u, this.ie, this.je);
        return a
    },
    q: function(a) {
        b.Wg.prototype.q.call(this, a);
        this.Oc = this.ie;
        this.Pc = this.je;
        this.Mn = this.Fo + this.Oc;
        this.Nn = this.Go + this.Pc
    },
    reverse: function() {
        var a = b.lB(this.u, -this.ie, -this.je);
        this.M(a);
        this.pc(a);
        return a
    }
});
b.lB = function(a, c, d) {
    return new b.Xq(a, c, d)
};
b.Xq.create = b.lB;
b.Tg = b.o.extend({
    ob: null,
    Ge: null,
    $k: 0,
    el: 0,
    yb: null,
    ctor: function(a, c, d, e, f) {
        b.o.prototype.ctor.call(this);
        this.ob = C(0, 0);
        this.yb = C(0, 0);
        this.Ge = C(0, 0);
        void 0 !== e && this.n(a, c, d, e, f)
    },
    n: function(a, c, d, e, f) {
        return b.o.prototype.n.call(this, a) ? (void 0 === f && (f = e, e = d, d = c.y, c = c.x), this.Ge.x = c, this.Ge.y = d, this.$k = e, this.el = f, !0) : !1
    },
    d: function() {
        var a = new b.Tg;
        this.M(a);
        a.n(this.u, this.Ge, this.$k, this.el);
        return a
    },
    q: function(a) {
        b.o.prototype.q.call(this, a);
        var c = a.ja.x;
        a = a.ja.y;
        this.yb.x = c;
        this.yb.y = a;
        this.ob.x = c;
        this.ob.y = a
    },
    update: function(a) {
        a = this.Hb(a);
        if (this.target) {
            var c = a * this.el % 1,
            c = 4 * this.$k * c * (1 - c),
            c = c + this.Ge.y * a;
            a *= this.Ge.x;
            var d = this.ob;
            if (b.rm) {
                var e = this.target.ja.y,
                f = this.yb;
                d.x = d.x + this.target.ja.x - f.x;
                d.y = d.y + e - f.y;
                a += d.x;
                c += d.y;
                f.x = a;
                f.y = c;
                this.target.Ma(a, c)
            } else this.target.Ma(d.x + a, d.y + c)
        }
    },
    reverse: function() {
        var a = b.kA(this.u, C( - this.Ge.x, -this.Ge.y), this.$k, this.el);
        this.M(a);
        this.pc(a);
        return a
    }
});
b.kA = function(a, c, d, e, f) {
    return new b.Tg(a, c, d, e, f)
};
b.Tg.create = b.kA;
b.uq = b.Tg.extend({
    kd: null,
    ctor: function(a, c, d, e, f) {
        b.Tg.prototype.ctor.call(this);
        this.kd = C(0, 0);
        void 0 !== e && this.n(a, c, d, e, f)
    },
    n: function(a, c, d, e, f) {
        return b.Tg.prototype.n.call(this, a, c, d, e, f) ? (void 0 === f && (d = c.y, c = c.x), this.kd.x = c, this.kd.y = d, !0) : !1
    },
    q: function(a) {
        b.Tg.prototype.q.call(this, a);
        this.Ge.x = this.kd.x - this.ob.x;
        this.Ge.y = this.kd.y - this.ob.y
    },
    d: function() {
        var a = new b.uq;
        this.M(a);
        a.n(this.u, this.kd, this.$k, this.el);
        return a
    }
});
b.iL = function(a, c, d, e, f) {
    return new b.uq(a, c, d, e, f)
};
b.uq.create = b.iL;
b.fz = function(a, c, d, e) {
    return 0 * Math.pow(1 - e, 3) + 3 * e * Math.pow(1 - e, 2) * a + 3 * Math.pow(e, 2) * (1 - e) * c + Math.pow(e, 3) * d
};
b.gi = b.o.extend({
    gd: null,
    ob: null,
    yb: null,
    ctor: function(a, c) {
        b.o.prototype.ctor.call(this);
        this.gd = [];
        this.ob = C(0, 0);
        this.yb = C(0, 0);
        c && this.n(a, c)
    },
    n: function(a, c) {
        return b.o.prototype.n.call(this, a) ? (this.gd = c, !0) : !1
    },
    d: function() {
        var a = new b.gi;
        this.M(a);
        for (var c = [], d = 0; d < this.gd.length; d++) {
            var e = this.gd[d];
            c.push(C(e.x, e.y))
        }
        a.n(this.u, c);
        return a
    },
    q: function(a) {
        b.o.prototype.q.call(this, a);
        var c = a.ja.x;
        a = a.ja.y;
        this.yb.x = c;
        this.yb.y = a;
        this.ob.x = c;
        this.ob.y = a
    },
    update: function(a) {
        a = this.Hb(a);
        if (this.target) {
            var c = this.gd,
            d = b.fz(c[0].x, c[1].x, c[2].x, a);
            a = b.fz(c[0].y, c[1].y, c[2].y, a);
            c = this.ob;
            if (b.rm) {
                var e = this.target.ja.y,
                f = this.yb;
                c.x = c.x + this.target.ja.x - f.x;
                c.y = c.y + e - f.y;
                d += c.x;
                a += c.y;
                f.x = d;
                f.y = a;
                this.target.Ma(d, a)
            } else this.target.Ma(c.x + d, c.y + a)
        }
    },
    reverse: function() {
        var a = this.gd,
        a = b.gz(this.u, [b.Jj(a[1], b.Uu(a[2])), b.Jj(a[0], b.Uu(a[2])), b.Uu(a[2])]);
        this.M(a);
        this.pc(a);
        return a
    }
});
b.gz = function(a, c) {
    return new b.gi(a, c)
};
b.gi.create = b.gz;
b.bq = b.gi.extend({
    Qo: null,
    ctor: function(a, c) {
        b.gi.prototype.ctor.call(this);
        this.Qo = [];
        c && this.n(a, c)
    },
    n: function(a, c) {
        return b.o.prototype.n.call(this, a) ? (this.Qo = c, !0) : !1
    },
    d: function() {
        var a = new b.bq;
        this.M(a);
        a.n(this.u, this.Qo);
        return a
    },
    q: function(a) {
        b.gi.prototype.q.call(this, a);
        a = this.ob;
        var c = this.Qo,
        d = this.gd;
        d[0] = b.uc(c[0], a);
        d[1] = b.uc(c[1], a);
        d[2] = b.uc(c[2], a)
    }
});
b.II = function(a, c) {
    return new b.bq(a, c)
};
b.bq.create = b.II;
b.Vg = b.o.extend({
    O: 1,
    ma: 1,
    xl: 1,
    yl: 1,
    Di: 0,
    Ei: 0,
    Oc: 0,
    Pc: 0,
    ctor: function(a, c, d) {
        b.o.prototype.ctor.call(this);
        void 0 !== c && this.n(a, c, d)
    },
    n: function(a, c, d) {
        return b.o.prototype.n.call(this, a) ? (this.Di = c, this.Ei = null != d ? d: c, !0) : !1
    },
    d: function() {
        var a = new b.Vg;
        this.M(a);
        a.n(this.u, this.Di, this.Ei);
        return a
    },
    q: function(a) {
        b.o.prototype.q.call(this, a);
        this.xl = a.scaleX;
        this.yl = a.scaleY;
        this.Oc = this.Di - this.xl;
        this.Pc = this.Ei - this.yl
    },
    update: function(a) {
        a = this.Hb(a);
        this.target && (this.target.scaleX = this.xl + this.Oc * a, this.target.scaleY = this.yl + this.Pc * a)
    }
});
b.pM = function(a, c, d) {
    return new b.Vg(a, c, d)
};
b.Vg.create = b.pM;
b.Zm = b.Vg.extend({
    q: function(a) {
        b.Vg.prototype.q.call(this, a);
        this.Oc = this.xl * this.Di - this.xl;
        this.Pc = this.yl * this.Ei - this.yl
    },
    reverse: function() {
        var a = b.PA(this.u, 1 / this.Di, 1 / this.Ei);
        this.M(a);
        this.pc(a);
        return a
    },
    d: function() {
        var a = new b.Zm;
        this.M(a);
        a.n(this.u, this.Di, this.Ei);
        return a
    }
});
b.PA = function(a, c, d) {
    return new b.Zm(a, c, d)
};
b.Zm.create = b.PA;
b.cq = b.o.extend({
    qb: 0,
    Wx: !1,
    ctor: function(a, c) {
        b.o.prototype.ctor.call(this);
        void 0 !== c && this.n(a, c)
    },
    n: function(a, c) {
        return b.o.prototype.n.call(this, a) ? (this.qb = c, !0) : !1
    },
    d: function() {
        var a = new b.cq;
        this.M(a);
        a.n(this.u, this.qb);
        return a
    },
    update: function(a) {
        a = this.Hb(a);
        if (this.target && !this.Rd()) {
            var c = 1 / this.qb;
            this.target.visible = a % c > c / 2
        }
    },
    q: function(a) {
        b.o.prototype.q.call(this, a);
        this.Wx = a.visible
    },
    stop: function() {
        this.target.visible = this.Wx;
        b.o.prototype.stop.call(this)
    },
    reverse: function() {
        var a = b.blink(this.u, this.qb);
        this.M(a);
        this.pc(a);
        return a
    }
});
b.blink = function(a, c) {
    return new b.cq(a, c)
};
b.cq.create = b.blink;
b.Sf = b.o.extend({
    mj: 0,
    Vn: 0,
    ctor: function(a, c) {
        b.o.prototype.ctor.call(this);
        void 0 !== c && this.n(a, c)
    },
    n: function(a, c) {
        return b.o.prototype.n.call(this, a) ? (this.mj = c, !0) : !1
    },
    d: function() {
        var a = new b.Sf;
        this.M(a);
        a.n(this.u, this.mj);
        return a
    },
    update: function(a) {
        a = this.Hb(a);
        var c = void 0 !== this.Vn ? this.Vn: 255;
        this.target.opacity = c + (this.mj - c) * a
    },
    q: function(a) {
        b.o.prototype.q.call(this, a);
        this.Vn = a.opacity
    }
});
b.IJ = function(a, c) {
    return new b.Sf(a, c)
};
b.Sf.create = b.IJ;
b.Om = b.Sf.extend({
    Us: null,
    ctor: function(a) {
        b.Sf.prototype.ctor.call(this);
        a && this.n(a, 255)
    },
    reverse: function() {
        var a = new b.Pm;
        a.n(this.u, 0);
        this.M(a);
        this.pc(a);
        return a
    },
    d: function() {
        var a = new b.Om;
        this.M(a);
        a.n(this.u, this.mj);
        return a
    },
    q: function(a) {
        this.Us && (this.mj = this.Us.Vn);
        b.Sf.prototype.q.call(this, a)
    }
});
b.GJ = function(a) {
    return new b.Om(a)
};
b.Om.create = b.GJ;
b.Pm = b.Sf.extend({
    ctor: function(a) {
        b.Sf.prototype.ctor.call(this);
        a && this.n(a, 0)
    },
    reverse: function() {
        var a = new b.Om;
        a.Us = this;
        a.n(this.u, 255);
        this.M(a);
        this.pc(a);
        return a
    },
    d: function() {
        var a = new b.Pm;
        this.M(a);
        a.n(this.u, this.mj);
        return a
    }
});
b.HJ = function(a) {
    return new b.Pm(a)
};
b.Pm.create = b.HJ;
b.$q = b.o.extend({
    Po: null,
    Tr: null,
    ctor: function(a, c, d, e) {
        b.o.prototype.ctor.call(this);
        this.Po = b.color(0, 0, 0);
        this.Tr = b.color(0, 0, 0);
        void 0 !== e && this.n(a, c, d, e)
    },
    n: function(a, c, d, e) {
        return b.o.prototype.n.call(this, a) ? (this.Po = b.color(c, d, e), !0) : !1
    },
    d: function() {
        var a = new b.$q;
        this.M(a);
        var c = this.Po;
        a.n(this.u, c.r, c.g, c.b);
        return a
    },
    q: function(a) {
        b.o.prototype.q.call(this, a);
        this.Tr = this.target.color
    },
    update: function(a) {
        a = this.Hb(a);
        var c = this.Tr,
        d = this.Po;
        c && (this.target.color = b.color(c.r + (d.r - c.r) * a, c.g + (d.g - c.g) * a, c.b + (d.b - c.b) * a))
    }
});
b.NN = function(a, c, d, e) {
    return new b.$q(a, c, d, e)
};
b.$q.create = b.NN;
b.Zq = b.o.extend({
    Hn: 0,
    Gn: 0,
    Fn: 0,
    ux: 0,
    tx: 0,
    sx: 0,
    ctor: function(a, c, d, e) {
        b.o.prototype.ctor.call(this);
        void 0 !== e && this.n(a, c, d, e)
    },
    n: function(a, c, d, e) {
        return b.o.prototype.n.call(this, a) ? (this.Hn = c, this.Gn = d, this.Fn = e, !0) : !1
    },
    d: function() {
        var a = new b.Zq;
        this.M(a);
        a.n(this.u, this.Hn, this.Gn, this.Fn);
        return a
    },
    q: function(a) {
        b.o.prototype.q.call(this, a);
        a = a.color;
        this.ux = a.r;
        this.tx = a.g;
        this.sx = a.b
    },
    update: function(a) {
        a = this.Hb(a);
        this.target.color = b.color(this.ux + this.Hn * a, this.tx + this.Gn * a, this.sx + this.Fn * a)
    },
    reverse: function() {
        var a = b.sB(this.u, -this.Hn, -this.Gn, -this.Fn);
        this.M(a);
        this.pc(a);
        return a
    }
});
b.sB = function(a, c, d, e) {
    return new b.Zq(a, c, d, e)
};
b.Zq.create = b.sB;
b.Wd = b.o.extend({
    update: function() {},
    reverse: function() {
        var a = b.hp(this.u);
        this.M(a);
        this.pc(a);
        return a
    },
    d: function() {
        var a = new b.Wd;
        this.M(a);
        a.n(this.u);
        return a
    }
});
b.hp = function(a) {
    return new b.Wd(a)
};
b.Wd.create = b.hp;
b.Sq = b.o.extend({
    uf: null,
    ctor: function(a) {
        b.o.prototype.ctor.call(this);
        this.uf = null;
        a && this.C(a)
    },
    C: function(a) {
        if (!a) throw "cc.ReverseTime.initWithAction(): action must be non null";
        if (a == this.uf) throw "cc.ReverseTime.initWithAction(): the action was already passed in.";
        return b.o.prototype.n.call(this, a.u) ? (this.uf = a, !0) : !1
    },
    d: function() {
        var a = new b.Sq;
        this.M(a);
        a.C(this.uf.d());
        return a
    },
    q: function(a) {
        b.o.prototype.q.call(this, a);
        this.uf.q(a)
    },
    update: function(a) {
        a = this.Hb(a);
        this.uf && this.uf.update(1 - a)
    },
    reverse: function() {
        return this.uf.d()
    },
    stop: function() {
        this.uf.stop();
        b.Ob.prototype.stop.call(this)
    }
});
b.MA = function(a) {
    return new b.Sq(a)
};
b.Sq.create = b.MA;
b.Zj = b.o.extend({
    dg: null,
    kl: 0,
    ys: null,
    Qn: 0,
    nt: null,
    ctor: function(a) {
        b.o.prototype.ctor.call(this);
        this.nt = [];
        a && this.Wz(a)
    },
    np: function() {
        return this.dg
    },
    xM: function(a) {
        this.dg = a
    },
    Wz: function(a) {
        if (!a) throw "cc.Animate.initWithAnimation(): animation must be non-NULL";
        var c = a.tu();
        if (this.n(c * a.sf)) {
            this.kl = 0;
            this.xM(a);
            this.ys = null;
            this.Qn = 0;
            var d = this.nt,
            e = d.length = 0,
            f = c / a.Ue;
            a = a.$b;
            b.qj(a, b.Ad);
            for (var g = 0; g < a.length; g++) {
                var h = e * f / c,
                e = e + a[g].Wb;
                d.push(h)
            }
            return ! 0
        }
        return ! 1
    },
    d: function() {
        var a = new b.Zj;
        this.M(a);
        a.Wz(this.dg.d());
        return a
    },
    q: function(a) {
        b.o.prototype.q.call(this, a);
        this.dg.nh && (this.ys = a.cJ());
        this.Qn = this.kl = 0
    },
    update: function(a) {
        a = this.Hb(a);
        1 > a && (a *= this.dg.sf, (0 | a) > this.Qn && (this.kl = 0, this.Qn++), a %= 1);
        for (var c = this.dg.$b,
        d = c.length,
        e = this.nt,
        f = this.kl; f < d; f++) if (e[f] <= a) this.target.Pg(c[f].Ye()),
        this.kl = f + 1;
        else break
    },
    reverse: function() {
        var a = this.dg,
        c = a.$b,
        d = [];
        b.qj(c, b.Ad);
        if (0 < c.length) for (var e = c.length - 1; 0 <= e; e--) {
            var f = c[e];
            if (!f) break;
            d.push(f.d())
        }
        c = b.we.create(d, a.Wb, a.sf);
        c.Pp(a.nh);
        a = b.bz(c);
        this.M(a);
        this.pc(a);
        return a
    },
    stop: function() {
        this.dg.nh && this.target && this.target.Pg(this.ys);
        b.Ob.prototype.stop.call(this)
    }
});
b.bz = function(a) {
    return new b.Zj(a)
};
b.Zj.create = b.bz;
b.Yq = b.o.extend({
    Hk: null,
    Ii: null,
    ctor: function(a, c) {
        b.o.prototype.ctor.call(this);
        c && this.Cj(a, c)
    },
    Cj: function(a, c) {
        return this.n(c.u) ? (this.Ii = a, this.Hk = c, !0) : !1
    },
    d: function() {
        var a = new b.Yq;
        this.M(a);
        a.Cj(this.Ii, this.Hk.d());
        return a
    },
    q: function(a) {
        b.o.prototype.q.call(this, a);
        this.Hk.q(this.Ii)
    },
    stop: function() {
        this.Hk.stop()
    },
    update: function(a) {
        a = this.Hb(a);
        this.Hk.update(a)
    },
    hU: function() {
        return this.Ii
    },
    nY: function(a) {
        this.Ii != a && (this.Ii = a)
    }
});
b.FN = function(a, c) {
    return new b.Yq(a, c)
};
b.Yq.create = b.FN;
b.ve = b.lf.extend({
    Rd: function() {
        return ! 0
    },
    step: function() {
        this.update(1)
    },
    update: function() {},
    reverse: function() {
        return this.d()
    },
    d: function() {
        return new b.ve
    }
});
b.an = b.ve.extend({
    update: function() {
        this.target.visible = !0
    },
    reverse: function() {
        return b.Sm.create()
    },
    d: function() {
        return new b.an
    }
});
b.show = function() {
    return new b.an
};
b.an.create = b.show;
b.Sm = b.ve.extend({
    update: function() {
        this.target.visible = !1
    },
    reverse: function() {
        return b.an.create()
    },
    d: function() {
        return new b.Sm
    }
});
b.OK = function() {
    return new b.Sm
};
b.Sm.create = b.OK;
b.fn = b.ve.extend({
    update: function() {
        this.target.visible = !this.target.visible
    },
    reverse: function() {
        return new b.fn
    },
    d: function() {
        return new b.fn
    }
});
b.ON = function() {
    return new b.fn
};
b.fn.create = b.ON;
b.Ym = b.ve.extend({
    co: !0,
    ctor: function(a) {
        b.lf.prototype.ctor.call(this);
        void 0 !== a && this.ga(a)
    },
    update: function() {
        this.target.hc(this.co)
    },
    ga: function(a) {
        this.co = a;
        return ! 0
    },
    reverse: function() {
        return new b.Ym(this.co)
    },
    d: function() {
        return new b.Ym(this.co)
    }
});
b.eM = function(a) {
    return new b.Ym(a)
};
b.Ym.create = b.eM;
b.Qm = b.ve.extend({
    gb: !1,
    ctor: function(a) {
        b.lf.prototype.ctor.call(this);
        this.gb = !1;
        void 0 !== a && this.Yz(a)
    },
    Yz: function(a) {
        this.gb = a;
        return ! 0
    },
    update: function() {
        this.target.flippedX = this.gb
    },
    reverse: function() {
        return b.Qm.create(!this.gb)
    },
    d: function() {
        var a = new b.Qm;
        a.Yz(this.gb);
        return a
    }
});
b.JJ = function(a) {
    return new b.Qm(a)
};
b.Qm.create = b.JJ;
b.Rm = b.ve.extend({
    hb: !1,
    ctor: function(a) {
        b.lf.prototype.ctor.call(this);
        this.hb = !1;
        void 0 !== a && this.Zz(a)
    },
    Zz: function(a) {
        this.hb = a;
        return ! 0
    },
    update: function() {
        this.target.flippedY = this.hb
    },
    reverse: function() {
        return b.Rm.create(!this.hb)
    },
    d: function() {
        var a = new b.Rm;
        a.Zz(this.hb);
        return a
    }
});
b.KJ = function(a) {
    return new b.Rm(a)
};
b.Rm.create = b.KJ;
b.Eq = b.ve.extend({
    me: 0,
    Hc: 0,
    ctor: function(a, c) {
        b.lf.prototype.ctor.call(this);
        this.Hc = this.me = 0;
        void 0 !== a && (void 0 !== a.x && (c = a.y, a = a.x), this.bA(a, c))
    },
    bA: function(a, c) {
        this.me = a;
        this.Hc = c;
        return ! 0
    },
    update: function() {
        this.target.Ma(this.me, this.Hc)
    },
    d: function() {
        var a = new b.Eq;
        a.bA(this.me, this.Hc);
        return a
    }
});
b.KL = function(a, c) {
    return new b.Eq(a, c)
};
b.Eq.create = b.KL;
b.Bd = b.ve.extend({
    zf: null,
    xn: null,
    Yk: null,
    Gr: null,
    ctor: function(a, c, d) {
        b.lf.prototype.ctor.call(this);
        void 0 !== a && (void 0 === c ? this.vp(a) : this.vp(a, c, d))
    },
    vp: function(a, c, d) {
        c ? (this.Gr = d, this.xn = a, this.zf = c) : a && (this.Yk = a);
        return ! 0
    },
    execute: function() {
        null != this.xn ? this.xn.call(this.zf, this.target, this.Gr) : this.Yk && this.Yk.call(null, this.target)
    },
    update: function() {
        this.execute()
    },
    VU: function() {
        return this.zf
    },
    SY: function(a) {
        a != this.zf && (this.zf && (this.zf = null), this.zf = a)
    },
    d: function() {
        var a = new b.Bd;
        this.zf ? a.vp(this.xn, this.zf, this.Gr) : this.Yk && a.vp(this.Yk);
        return a
    }
});
b.MI = function(a, c, d) {
    return new b.Bd(a, c, d)
};
b.Bd.create = b.MI;
b.Vp = b.o.extend({
    Ar: 0,
    Br: 0,
    Cr: 0,
    mx: 0,
    nx: 0,
    ox: 0,
    Sy: 0,
    Ty: 0,
    Uy: 0,
    ctor: function() {
        b.o.prototype.ctor.call(this);
        this.Uy = this.Ty = this.Sy = this.ox = this.nx = this.mx = this.Cr = this.Br = this.Ar = 0
    },
    q: function(a) {
        b.o.prototype.q.call(this, a);
        a = a.ru();
        var c = a.Dz();
        this.Ar = c.x;
        this.Br = c.y;
        this.Cr = c.z;
        c = a.Ez();
        this.mx = c.x;
        this.nx = c.y;
        this.ox = c.z;
        a = a.GK();
        this.Sy = a.x;
        this.Ty = a.y;
        this.Uy = a.z
    },
    d: function() {
        return new b.Vp
    },
    reverse: function() {
        return b.MA(this)
    }
});
b.Bq = b.Vp.extend({
    ql: 0,
    Ir: 0,
    Kk: 0,
    Aw: 0,
    Zd: 0,
    zw: 0,
    hy: 0,
    fy: 0,
    gy: 0,
    ey: 0,
    ctor: function(a, c, d, e, f, g, h) {
        b.Vp.prototype.ctor.call(this);
        void 0 !== h && this.n(a, c, d, e, f, g, h)
    },
    n: function(a, c, d, e, f, g, h) {
        return b.o.prototype.n.call(this, a) ? (this.ql = c, this.Ir = d, this.Kk = e, this.Aw = f, this.Zd = g, this.zw = h, this.fy = b.Gg(f), this.ey = b.Gg(h), !0) : !1
    },
    uN: function() {
        var a = this.target.ru(),
        c = a.Ez(),
        d = a.Dz(),
        a = c.x - d.x,
        e = c.y - d.y,
        c = c.z - d.z,
        d = Math.sqrt(Math.pow(a, 2) + Math.pow(e, 2) + Math.pow(c, 2)),
        f = Math.sqrt(Math.pow(a, 2) + Math.pow(e, 2));
        0 === f && (f = b.Nm);
        0 === d && (d = b.Nm);
        return {
            AL: d / b.bk.Rl(),
            aO: Math.acos(c / d),
            azimuth: 0 > a ? Math.PI - Math.asin(e / f) : Math.asin(e / f)
        }
    },
    q: function(a) {
        b.o.prototype.q.call(this, a);
        a = this.uN();
        isNaN(this.ql) && (this.ql = a.AL);
        isNaN(this.Kk) && (this.Kk = b.wA(a.aO));
        isNaN(this.Zd) && (this.Zd = b.wA(a.azimuth));
        this.hy = b.Gg(this.Kk);
        this.gy = b.Gg(this.Zd)
    },
    d: function() {
        var a = new b.Bq;
        a.n(this.u, this.ql, this.Ir, this.Kk, this.Aw, this.Zd, this.zw);
        return a
    },
    update: function(a) {
        a = this.Hb(a);
        var c = (this.ql + this.Ir * a) * b.bk.Rl(),
        d = this.hy + this.fy * a,
        e = this.gy + this.ey * a;
        a = Math.sin(d) * Math.cos(e) * c + this.Ar;
        e = Math.sin(d) * Math.sin(e) * c + this.Br;
        c = Math.cos(d) * c + this.Cr;
        this.target.ru().YA(a, e, c)
    }
});
b.DL = function(a, c, d, e, f, g, h) {
    return new b.Bq(a, c, d, e, f, g, h)
};
b.Bq.create = b.DL;
b.ba = b.o.extend({
    i: null,
    ctor: function(a) {
        b.o.prototype.ctor.call(this);
        a && this.C(a)
    },
    C: function(a) {
        if (!a) throw "cc.ActionEase.initWithAction(): action must be non nil";
        return this.n(a.tu()) ? (this.i = a, !0) : !1
    },
    d: function() {
        var a = new b.ba;
        a.C(this.i.d());
        return a
    },
    q: function(a) {
        b.o.prototype.q.call(this, a);
        this.i.q(this.target)
    },
    stop: function() {
        this.i.stop();
        b.o.prototype.stop.call(this)
    },
    update: function(a) {
        this.i.update(a)
    },
    reverse: function() {
        return b.ba.create(this.i.reverse())
    },
    uu: function() {
        return this.i
    }
});
b.hI = function(a) {
    return new b.ba(a)
};
b.ba.create = b.hI;
b.Sg = b.ba.extend({
    Ua: 0,
    ctor: function(a, c) {
        b.ba.prototype.ctor.call(this);
        void 0 !== c && this.C(a, c)
    },
    KY: function(a) {
        this.Ua = a
    },
    JU: function() {
        return this.Ua
    },
    C: function(a, c) {
        return b.ba.prototype.C.call(this, a) ? (this.Ua = c, !0) : !1
    },
    d: function() {
        var a = new b.Sg;
        a.C(this.i.d(), this.Ua);
        return a
    },
    reverse: function() {
        return b.Sg.create(this.i.reverse(), 1 / this.Ua)
    }
});
b.uJ = function(a, c) {
    return new b.Sg(a, c)
};
b.Sg.create = b.uJ;
b.Gm = b.Sg.extend({
    update: function(a) {
        this.i.update(Math.pow(a, this.Ua))
    },
    reverse: function() {
        return b.Gm.create(this.i.reverse(), 1 / this.Ua)
    },
    d: function() {
        var a = new b.Gm;
        a.C(this.i.d(), this.Ua);
        return a
    }
});
b.Gm.create = function(a, c) {
    return new b.Gm(a, c)
};
b.rJ = function(a) {
    return {
        Ua: a,
        fa: function(a) {
            return Math.pow(a, this.Ua)
        },
        reverse: function() {
            return b.rJ(1 / this.Ua)
        }
    }
};
b.Im = b.Sg.extend({
    update: function(a) {
        this.i.update(Math.pow(a, 1 / this.Ua))
    },
    reverse: function() {
        return b.Im.create(this.i.reverse(), 1 / this.Ua)
    },
    d: function() {
        var a = new b.Im;
        a.C(this.i.d(), this.Ua);
        return a
    }
});
b.Im.create = function(a, c) {
    return new b.Im(a, c)
};
b.tJ = function(a) {
    return {
        Ua: a,
        fa: function(a) {
            return Math.pow(a, 1 / this.Ua)
        },
        reverse: function() {
            return b.tJ(1 / this.Ua)
        }
    }
};
b.Hm = b.Sg.extend({
    update: function(a) {
        a *= 2;
        1 > a ? this.i.update(0.5 * Math.pow(a, this.Ua)) : this.i.update(1 - 0.5 * Math.pow(2 - a, this.Ua))
    },
    d: function() {
        var a = new b.Hm;
        a.C(this.i.d(), this.Ua);
        return a
    },
    reverse: function() {
        return b.Hm.create(this.i.reverse(), this.Ua)
    }
});
b.Hm.create = function(a, c) {
    return new b.Hm(a, c)
};
b.sJ = function(a) {
    return {
        Ua: a,
        fa: function(a) {
            a *= 2;
            return 1 > a ? 0.5 * Math.pow(a, this.Ua) : 1 - 0.5 * Math.pow(2 - a, this.Ua)
        },
        reverse: function() {
            return b.sJ(this.Ua)
        }
    }
};
b.Dm = b.ba.extend({
    update: function(a) {
        this.i.update(0 === a ? 0 : Math.pow(2, 10 * (a - 1)))
    },
    reverse: function() {
        return b.Fm.create(this.i.reverse())
    },
    d: function() {
        var a = new b.Dm;
        a.C(this.i.d());
        return a
    }
});
b.Dm.create = function(a) {
    return new b.Dm(a)
};
b.Uw = {
    fa: function(a) {
        return 0 === a ? 0 : Math.pow(2, 10 * (a - 1))
    },
    reverse: function() {
        return b.Ww
    }
};
b.SS = function() {
    return b.Uw
};
b.Fm = b.ba.extend({
    update: function(a) {
        this.i.update(1 == a ? 1 : -Math.pow(2, -10 * a) + 1)
    },
    reverse: function() {
        return b.Dm.create(this.i.reverse())
    },
    d: function() {
        var a = new b.Fm;
        a.C(this.i.d());
        return a
    }
});
b.Fm.create = function(a) {
    return new b.Fm(a)
};
b.Ww = {
    fa: function(a) {
        return 1 == a ? 1 : -Math.pow(2, -10 * a) + 1
    },
    reverse: function() {
        return b.Uw
    }
};
b.US = function() {
    return b.Ww
};
b.Em = b.ba.extend({
    update: function(a) {
        1 != a && 0 !== a && (a *= 2, a = 1 > a ? 0.5 * Math.pow(2, 10 * (a - 1)) : 0.5 * ( - Math.pow(2, -10 * (a - 1)) + 2));
        this.i.update(a)
    },
    reverse: function() {
        return b.Em.create(this.i.reverse())
    },
    d: function() {
        var a = new b.Em;
        a.C(this.i.d());
        return a
    }
});
b.Em.create = function(a) {
    return new b.Em(a)
};
b.Vw = {
    fa: function(a) {
        return 1 !== a && 0 !== a ? (a *= 2, 1 > a ? 0.5 * Math.pow(2, 10 * (a - 1)) : 0.5 * ( - Math.pow(2, -10 * (a - 1)) + 2)) : a
    },
    reverse: function() {
        return b.Vw
    }
};
b.TS = function() {
    return b.Vw
};
b.Jm = b.ba.extend({
    update: function(a) {
        a = 0 === a || 1 === a ? a: -1 * Math.cos(a * Math.PI / 2) + 1;
        this.i.update(a)
    },
    reverse: function() {
        return b.Lm.create(this.i.reverse())
    },
    d: function() {
        var a = new b.Jm;
        a.C(this.i.d());
        return a
    }
});
b.Jm.create = function(a) {
    return new b.Jm(a)
};
b.fx = {
    fa: function(a) {
        return 0 === a || 1 === a ? a: -1 * Math.cos(a * Math.PI / 2) + 1
    },
    reverse: function() {
        return b.hx
    }
};
b.dT = function() {
    return b.fx
};
b.Lm = b.ba.extend({
    update: function(a) {
        a = 0 === a || 1 === a ? a: Math.sin(a * Math.PI / 2);
        this.i.update(a)
    },
    reverse: function() {
        return b.Jm.create(this.i.reverse())
    },
    d: function() {
        var a = new b.Lm;
        a.C(this.i.d());
        return a
    }
});
b.Lm.create = function(a) {
    return new b.Lm(a)
};
b.hx = {
    fa: function(a) {
        return 0 === a || 1 == a ? a: Math.sin(a * Math.PI / 2)
    },
    reverse: function() {
        return b.fx
    }
};
b.fT = function() {
    return b.hx
};
b.Km = b.ba.extend({
    update: function(a) {
        a = 0 === a || 1 === a ? a: -0.5 * (Math.cos(Math.PI * a) - 1);
        this.i.update(a)
    },
    d: function() {
        var a = new b.Km;
        a.C(this.i.d());
        return a
    },
    reverse: function() {
        return b.Km.create(this.i.reverse())
    }
});
b.Km.create = function(a) {
    return new b.Km(a)
};
b.gx = {
    fa: function(a) {
        return 0 === a || 1 === a ? a: -0.5 * (Math.cos(Math.PI * a) - 1)
    },
    reverse: function() {
        return b.gx
    }
};
b.eT = function() {
    return b.gx
};
b.hi = b.ba.extend({
    Ea: 0.3,
    ctor: function(a, c) {
        b.ba.prototype.ctor.call(this);
        a && this.C(a, c)
    },
    CU: function() {
        return this.Ea
    },
    GY: function(a) {
        this.Ea = a
    },
    C: function(a, c) {
        b.ba.prototype.C.call(this, a);
        this.Ea = null == c ? 0.3 : c;
        return ! 0
    },
    reverse: function() {
        b.log("cc.EaseElastic.reverse(): it should be overridden in subclass.");
        return null
    },
    d: function() {
        var a = new b.hi;
        a.C(this.i.d(), this.Ea);
        return a
    }
});
b.hi.create = function(a, c) {
    return new b.hi(a, c)
};
b.Am = b.hi.extend({
    update: function(a) {
        var c = 0;
        0 === a || 1 === a ? c = a: (c = this.Ea / 4, a -= 1, c = -Math.pow(2, 10 * a) * Math.sin((a - c) * Math.PI * 2 / this.Ea));
        this.i.update(c)
    },
    reverse: function() {
        return b.Cm.create(this.i.reverse(), this.Ea)
    },
    d: function() {
        var a = new b.Am;
        a.C(this.i.d(), this.Ea);
        return a
    }
});
b.Am.create = function(a, c) {
    return new b.Am(a, c)
};
b.Sw = {
    fa: function(a) {
        if (0 === a || 1 === a) return a;
        a -= 1;
        return - Math.pow(2, 10 * a) * Math.sin((a - 0.075) * Math.PI * 2 / 0.3)
    },
    reverse: function() {
        return b.Tw
    }
};
b.oJ = function(a) {
    return a && 0.3 !== a ? {
        Ea: a,
        fa: function(a) {
            if (0 === a || 1 === a) return a;
            a -= 1;
            return - Math.pow(2, 10 * a) * Math.sin((a - this.Ea / 4) * Math.PI * 2 / this.Ea)
        },
        reverse: function() {
            return b.qJ(this.Ea)
        }
    }: b.Sw
};
b.Cm = b.hi.extend({
    update: function(a) {
        var c = 0,
        c = 0 === a || 1 == a ? a: Math.pow(2, -10 * a) * Math.sin((a - this.Ea / 4) * Math.PI * 2 / this.Ea) + 1;
        this.i.update(c)
    },
    reverse: function() {
        return b.Am.create(this.i.reverse(), this.Ea)
    },
    d: function() {
        var a = new b.Cm;
        a.C(this.i.d(), this.Ea);
        return a
    }
});
b.Cm.create = function(a, c) {
    return new b.Cm(a, c)
};
b.Tw = {
    fa: function(a) {
        return 0 === a || 1 === a ? a: Math.pow(2, -10 * a) * Math.sin((a - 0.075) * Math.PI * 2 / 0.3) + 1
    },
    reverse: function() {
        return b.Sw
    }
};
b.qJ = function(a) {
    return a && 0.3 !== a ? {
        Ea: a,
        fa: function(a) {
            return 0 === a || 1 === a ? a: Math.pow(2, -10 * a) * Math.sin((a - this.Ea / 4) * Math.PI * 2 / this.Ea) + 1
        },
        reverse: function() {
            return b.oJ(this.Ea)
        }
    }: b.Tw
};
b.Bm = b.hi.extend({
    update: function(a) {
        var c = 0,
        c = this.Ea;
        if (0 === a || 1 == a) c = a;
        else {
            c || (c = this.Ea = 0.3 * 1.5);
            var d = c / 4;
            a = 2 * a - 1;
            c = 0 > a ? -0.5 * Math.pow(2, 10 * a) * Math.sin((a - d) * Math.PI * 2 / c) : Math.pow(2, -10 * a) * Math.sin((a - d) * Math.PI * 2 / c) * 0.5 + 1
        }
        this.i.update(c)
    },
    reverse: function() {
        return b.Bm.create(this.i.reverse(), this.Ea)
    },
    d: function() {
        var a = new b.Bm;
        a.C(this.i.d(), this.Ea);
        return a
    }
});
b.Bm.create = function(a, c) {
    return new b.Bm(a, c)
};
b.pJ = function(a) {
    return {
        Ea: a || 0.3,
        fa: function(a) {
            var d = 0,
            d = this.Ea;
            if (0 === a || 1 === a) d = a;
            else {
                d || (d = this.Ea = 0.3 * 1.5);
                var e = d / 4;
                a = 2 * a - 1;
                d = 0 > a ? -0.5 * Math.pow(2, 10 * a) * Math.sin((a - e) * Math.PI * 2 / d) : Math.pow(2, -10 * a) * Math.sin((a - e) * Math.PI * 2 / d) * 0.5 + 1
            }
            return d
        },
        reverse: function() {
            return b.pJ(this.Ea)
        }
    }
};
b.Rg = b.ba.extend({
    Yo: function(a) {
        if (a < 1 / 2.75) return 7.5625 * a * a;
        if (a < 2 / 2.75) return a -= 1.5 / 2.75,
        7.5625 * a * a + 0.75;
        if (a < 2.5 / 2.75) return a -= 2.25 / 2.75,
        7.5625 * a * a + 0.9375;
        a -= 2.625 / 2.75;
        return 7.5625 * a * a + 0.984375
    },
    d: function() {
        var a = new b.Rg;
        a.C(this.i.d());
        return a
    },
    reverse: function() {
        return b.Rg.create(this.i.reverse())
    }
});
b.Rg.create = function(a) {
    return new b.Rg(a)
};
b.xm = b.Rg.extend({
    update: function(a) {
        this.i.update(1 - this.Yo(1 - a))
    },
    reverse: function() {
        return b.zm.create(this.i.reverse())
    },
    d: function() {
        var a = new b.xm;
        a.C(this.i.d());
        return a
    }
});
b.xm.create = function(a) {
    return new b.xm(a)
};
b.tn = function(a) {
    if (a < 1 / 2.75) return 7.5625 * a * a;
    if (a < 2 / 2.75) return a -= 1.5 / 2.75,
    7.5625 * a * a + 0.75;
    if (a < 2.5 / 2.75) return a -= 2.25 / 2.75,
    7.5625 * a * a + 0.9375;
    a -= 2.625 / 2.75;
    return 7.5625 * a * a + 0.984375
};
b.Jw = {
    fa: function(a) {
        return 1 - b.tn(1 - a)
    },
    reverse: function() {
        return b.Lw
    }
};
b.JS = function() {
    return b.Jw
};
b.zm = b.Rg.extend({
    update: function(a) {
        this.i.update(this.Yo(a))
    },
    reverse: function() {
        return b.xm.create(this.i.reverse())
    },
    d: function() {
        var a = new b.zm;
        a.C(this.i.d());
        return a
    }
});
b.zm.create = function(a) {
    return new b.zm(a)
};
b.Lw = {
    fa: function(a) {
        return b.tn(a)
    },
    reverse: function() {
        return b.Jw
    }
};
b.LS = function() {
    return b.Lw
};
b.ym = b.Rg.extend({
    update: function(a) {
        var c = 0,
        c = 0.5 > a ? 0.5 * (1 - this.Yo(1 - 2 * a)) : 0.5 * this.Yo(2 * a - 1) + 0.5;
        this.i.update(c)
    },
    d: function() {
        var a = new b.ym;
        a.C(this.i.d());
        return a
    },
    reverse: function() {
        return b.ym.create(this.i.reverse())
    }
});
b.ym.create = function(a) {
    return new b.ym(a)
};
b.Kw = {
    fa: function(a) {
        return a = 0.5 > a ? 0.5 * (1 - b.tn(1 - 2 * a)) : 0.5 * b.tn(2 * a - 1) + 0.5
    },
    reverse: function() {
        return b.Kw
    }
};
b.KS = function() {
    return b.Kw
};
b.um = b.ba.extend({
    update: function(a) {
        this.i.update(0 === a || 1 == a ? a: a * a * (2.70158 * a - 1.70158))
    },
    reverse: function() {
        return b.wm.create(this.i.reverse())
    },
    d: function() {
        var a = new b.um;
        a.C(this.i.d());
        return a
    }
});
b.um.create = function(a) {
    return new b.um(a)
};
b.Gw = {
    fa: function(a) {
        return 0 === a || 1 === a ? a: a * a * (2.70158 * a - 1.70158)
    },
    reverse: function() {
        return b.Iw
    }
};
b.GS = function() {
    return b.Gw
};
b.wm = b.ba.extend({
    update: function(a) {
        a -= 1;
        this.i.update(a * a * (2.70158 * a + 1.70158) + 1)
    },
    reverse: function() {
        return b.um.create(this.i.reverse())
    },
    d: function() {
        var a = new b.wm;
        a.C(this.i.d());
        return a
    }
});
b.wm.create = function(a) {
    return new b.wm(a)
};
b.Iw = {
    fa: function(a) {
        a -= 1;
        return a * a * (2.70158 * a + 1.70158) + 1
    },
    reverse: function() {
        return b.Gw
    }
};
b.IS = function() {
    return b.Iw
};
b.vm = b.ba.extend({
    update: function(a) {
        a *= 2;
        1 > a ? this.i.update(a * a * (3.5949095 * a - 2.5949095) / 2) : (a -= 2, this.i.update(a * a * (3.5949095 * a + 2.5949095) / 2 + 1))
    },
    d: function() {
        var a = new b.vm;
        a.C(this.i.d());
        return a
    },
    reverse: function() {
        return b.vm.create(this.i.reverse())
    }
});
b.vm.create = function(a) {
    return new b.vm(a)
};
b.Hw = {
    fa: function(a) {
        a *= 2;
        if (1 > a) return a * a * (3.5949095 * a - 2.5949095) / 2;
        a -= 2;
        return a * a * (3.5949095 * a + 2.5949095) / 2 + 1
    },
    reverse: function() {
        return b.Hw
    }
};
b.HS = function() {
    return b.Hw
};
b.fk = b.ba.extend({
    po: null,
    qo: null,
    ro: null,
    so: null,
    ctor: function(a) {
        b.ba.prototype.ctor.call(this, a)
    },
    H: function(a, c, d, e, f) {
        return Math.pow(1 - f, 3) * a + 3 * f * Math.pow(1 - f, 2) * c + 3 * Math.pow(f, 2) * (1 - f) * d + Math.pow(f, 3) * e
    },
    update: function(a) {
        this.i.update(this.H(this.po, this.qo, this.ro, this.so, a))
    },
    d: function() {
        var a = new b.fk;
        a.C(this.i.d());
        a.TA(this.po, this.qo, this.ro, this.so);
        return a
    },
    reverse: function() {
        var a = b.fk.create(this.i.reverse());
        a.TA(this.so, this.ro, this.qo, this.po);
        return a
    },
    TA: function(a, c, d, e) {
        this.po = a || 0;
        this.qo = c || 0;
        this.ro = d || 0;
        this.so = e || 0
    }
});
b.fk.create = function(a) {
    return new b.fk(a)
};
b.nJ = function(a, c, d, e) {
    return {
        fa: function(f) {
            return b.fk.prototype.H(a, c, d, e, f)
        },
        reverse: function() {
            return b.nJ(e, d, c, a)
        }
    }
};
b.mk = b.ba.extend({
    H: function(a) {
        return Math.pow(a, 2)
    },
    update: function(a) {
        this.i.update(this.H(a))
    },
    d: function() {
        var a = new b.mk;
        a.C(this.i.d());
        return a
    },
    reverse: function() {
        return b.mk.create(this.i.reverse())
    }
});
b.mk.create = function(a) {
    return new b.mk(a)
};
b.Xw = {
    fa: b.mk.prototype.H,
    reverse: function() {
        return b.Xw
    }
};
b.VS = function() {
    return b.Xw
};
b.ok = b.ba.extend({
    H: function(a) {
        return - a * (a - 2)
    },
    update: function(a) {
        this.i.update(this.H(a))
    },
    d: function() {
        var a = new b.ok;
        a.C();
        return a
    },
    reverse: function() {
        return b.ok.create(this.i.reverse())
    }
});
b.ok.create = function(a) {
    return new b.ok(a)
};
b.Zw = {
    fa: b.ok.prototype.H,
    reverse: function() {
        return b.Zw
    }
};
b.XS = function() {
    return b.Zw
};
b.nk = b.ba.extend({
    H: function(a) {
        var c = a;
        a *= 2;
        1 > a ? c = a * a * 0.5 : (--a, c = -0.5 * (a * (a - 2) - 1));
        return c
    },
    update: function(a) {
        this.i.update(this.H(a))
    },
    d: function() {
        var a = new b.nk;
        a.C(this.i.d());
        return a
    },
    reverse: function() {
        return b.nk.create(this.i.reverse())
    }
});
b.nk.create = function(a) {
    return new b.nk(a)
};
b.Yw = {
    fa: b.nk.prototype.H,
    reverse: function() {
        return b.Yw
    }
};
b.WS = function() {
    return b.Yw
};
b.pk = b.ba.extend({
    H: function(a) {
        return a * a * a * a
    },
    update: function(a) {
        this.i.update(this.H(a))
    },
    d: function() {
        var a = new b.pk;
        a.C(this.i.d());
        return a
    },
    reverse: function() {
        return b.pk.create(this.i.reverse())
    }
});
b.pk.create = function(a) {
    return new b.pk(a)
};
b.$w = {
    fa: b.pk.prototype.H,
    reverse: function() {
        return b.$w
    }
};
b.YS = function() {
    return b.$w
};
b.rk = b.ba.extend({
    H: function(a) {
        a -= 1;
        return - (a * a * a * a - 1)
    },
    update: function(a) {
        this.i.update(this.H(a))
    },
    d: function() {
        var a = new b.rk;
        a.C(this.i.d());
        return a
    },
    reverse: function() {
        return b.rk.create(this.i.reverse())
    }
});
b.rk.create = function(a) {
    return new b.rk(a)
};
b.bx = {
    fa: b.rk.prototype.H,
    reverse: function() {
        return b.bx
    }
};
b.$S = function() {
    return b.bx
};
b.qk = b.ba.extend({
    H: function(a) {
        a *= 2;
        if (1 > a) return 0.5 * a * a * a * a;
        a -= 2;
        return - 0.5 * (a * a * a * a - 2)
    },
    update: function(a) {
        this.i.update(this.H(a))
    },
    d: function() {
        var a = new b.qk;
        a.C(this.i.d());
        return a
    },
    reverse: function() {
        return b.qk.create(this.i.reverse())
    }
});
b.qk.create = function(a) {
    return new b.qk(a)
};
b.ax = {
    fa: b.qk.prototype.H,
    reverse: function() {
        return b.ax
    }
};
b.ZS = function() {
    return b.ax
};
b.sk = b.ba.extend({
    H: function(a) {
        return a * a * a * a * a
    },
    update: function(a) {
        this.i.update(this.H(a))
    },
    d: function() {
        var a = new b.sk;
        a.C(this.i.d());
        return a
    },
    reverse: function() {
        return b.sk.create(this.i.reverse())
    }
});
b.sk.create = function(a) {
    return new b.sk(a)
};
b.cx = {
    fa: b.sk.prototype.H,
    reverse: function() {
        return b.cx
    }
};
b.aT = function() {
    return b.cx
};
b.uk = b.ba.extend({
    H: function(a) {
        a -= 1;
        return a * a * a * a * a + 1
    },
    update: function(a) {
        this.i.update(this.H(a))
    },
    d: function() {
        var a = new b.uk;
        a.C(this.i.d());
        return a
    },
    reverse: function() {
        return b.uk.create(this.i.reverse())
    }
});
b.uk.create = function(a) {
    return new b.uk(a)
};
b.ex = {
    fa: b.uk.prototype.H,
    reverse: function() {
        return b.ex
    }
};
b.cT = function() {
    return b.ex
};
b.tk = b.ba.extend({
    H: function(a) {
        a *= 2;
        if (1 > a) return 0.5 * a * a * a * a * a;
        a -= 2;
        return 0.5 * (a * a * a * a * a + 2)
    },
    update: function(a) {
        this.i.update(this.H(a))
    },
    d: function() {
        var a = new b.tk;
        a.C(this.i.d());
        return a
    },
    reverse: function() {
        return b.tk.create(this.i.reverse())
    }
});
b.tk.create = function(a) {
    return new b.tk(a)
};
b.dx = {
    fa: b.tk.prototype.H,
    reverse: function() {
        return b.dx
    }
};
b.bT = function() {
    return b.dx
};
b.gk = b.ba.extend({
    H: function(a) {
        return - 1 * (Math.sqrt(1 - a * a) - 1)
    },
    update: function(a) {
        this.i.update(this.H(a))
    },
    d: function() {
        var a = new b.gk;
        a.C(this.i.d());
        return a
    },
    reverse: function() {
        return b.gk.create(this.i.reverse())
    }
});
b.gk.create = function(a) {
    return new b.gk(a)
};
b.Mw = {
    fa: b.gk.prototype.H,
    reverse: function() {
        return b.Mw
    }
};
b.MS = function() {
    return b.Mw
};
b.ik = b.ba.extend({
    H: function(a) {
        a -= 1;
        return Math.sqrt(1 - a * a)
    },
    update: function(a) {
        this.i.update(this.H(a))
    },
    d: function() {
        var a = new b.ik;
        a.C(this.i.d());
        return a
    },
    reverse: function() {
        return b.ik.create(this.i.reverse())
    }
});
b.ik.create = function(a) {
    return new b.ik(a)
};
b.Ow = {
    fa: b.ik.prototype.H,
    reverse: function() {
        return b.Ow
    }
};
b.OS = function() {
    return b.Ow
};
b.hk = b.ba.extend({
    H: function(a) {
        a *= 2;
        if (1 > a) return - 0.5 * (Math.sqrt(1 - a * a) - 1);
        a -= 2;
        return 0.5 * (Math.sqrt(1 - a * a) + 1)
    },
    update: function(a) {
        this.i.update(this.H(a))
    },
    d: function() {
        var a = new b.hk;
        a.C(this.i.d());
        return a
    },
    reverse: function() {
        return b.hk.create(this.i.reverse())
    }
});
b.hk.create = function(a) {
    return new b.hk(a)
};
b.Nw = {
    fa: b.hk.prototype.H,
    reverse: function() {
        return b.Nw
    }
};
b.NS = function() {
    return b.Nw
};
b.jk = b.ba.extend({
    H: function(a) {
        return a * a * a
    },
    update: function(a) {
        this.i.update(this.H(a))
    },
    d: function() {
        var a = new b.jk;
        a.C(this.i.d());
        return a
    },
    reverse: function() {
        return b.jk.create(this.i.reverse())
    }
});
b.jk.create = function(a) {
    return new b.jk(a)
};
b.Pw = {
    fa: b.jk.prototype.H,
    reverse: function() {
        return b.Pw
    }
};
b.PS = function() {
    return b.Pw
};
b.lk = b.ba.extend({
    H: function(a) {
        a -= 1;
        return a * a * a + 1
    },
    update: function(a) {
        this.i.update(this.H(a))
    },
    d: function() {
        var a = new b.lk;
        a.C(this.i.d());
        return a
    },
    reverse: function() {
        return b.lk.create(this.i.reverse())
    }
});
b.lk.create = function(a) {
    return new b.lk(a)
};
b.Rw = {
    fa: b.lk.prototype.H,
    reverse: function() {
        return b.Rw
    }
};
b.RS = function() {
    return b.Rw
};
b.kk = b.ba.extend({
    H: function(a) {
        a *= 2;
        if (1 > a) return 0.5 * a * a * a;
        a -= 2;
        return 0.5 * (a * a * a + 2)
    },
    update: function(a) {
        this.i.update(this.H(a))
    },
    d: function() {
        var a = new b.kk;
        a.C(this.i.d());
        return a
    },
    reverse: function() {
        return b.kk.create(this.i.reverse())
    }
});
b.kk.create = function(a) {
    return new b.kk(a)
};
b.Qw = {
    fa: b.kk.prototype.H,
    reverse: function() {
        return b.Qw
    }
};
b.QS = function() {
    return b.Qw
};
b.$t = function(a, c, d, e, f, g) {
    var h = g * g,
    k = h * g,
    m = (1 - f) / 2;
    f = m * ( - k + 2 * h - g);
    var n = m * ( - k + h) + (2 * k - 3 * h + 1);
    g = m * (k - 2 * h + g) + ( - 2 * k + 3 * h);
    h = m * (k - h);
    return C(a.x * f + c.x * n + d.x * g + e.x * h, a.y * f + c.y * n + d.y * g + e.y * h)
};
b.LA = function(a) {
    for (var c = [], d = a.length - 1; 0 <= d; d--) c.push(C(a[d].x, a[d].y));
    return c
};
b.dp = function(a) {
    for (var c = [], d = 0; d < a.length; d++) c.push(C(a[d].x, a[d].y));
    return c
};
b.Fb = function(a, c) {
    var d = Math.min(a.length - 1, Math.max(c, 0));
    return a[d]
};
b.LX = function(a) {
    for (var c = a.length,
    d = 0 | c / 2,
    e = 0; e < d; ++e) {
        var f = a[e];
        a[e] = a[c - e - 1];
        a[c - e - 1] = f
    }
};
b.jf = b.o.extend({
    fe: null,
    Bw: 0,
    gj: 0,
    yb: null,
    mw: null,
    ctor: function(a, c, d) {
        b.o.prototype.ctor.call(this);
        this.fe = [];
        void 0 !== d && this.n(a, c, d)
    },
    n: function(a, c, d) {
        if (!c || 0 == c.length) throw "Invalid configuration. It must at least have one control point";
        return b.o.prototype.n.call(this, a) ? (this.TM(c), this.gj = d, !0) : !1
    },
    d: function() {
        var a = new b.jf;
        a.n(this.u, b.dp(this.fe), this.gj);
        return a
    },
    q: function(a) {
        b.o.prototype.q.call(this, a);
        this.Bw = 1 / (this.fe.length - 1);
        this.yb = C(this.target.ja.x, this.target.ja.y);
        this.mw = C(0, 0)
    },
    update: function(a) {
        a = this.Hb(a);
        var c, d = this.fe;
        if (1 == a) c = d.length - 1,
        a = 1;
        else {
            var e = this.Bw;
            c = 0 | a / e;
            a = (a - e * c) / e
        }
        c = b.$t(b.Fb(d, c - 1), b.Fb(d, c - 0), b.Fb(d, c + 1), b.Fb(d, c + 2), this.gj, a);
        b.rm && (d = this.target.ja.x - this.yb.x, a = this.target.ja.y - this.yb.y, 0 != d || 0 != a) && (e = this.mw, d = e.x + d, a = e.y + a, e.x = d, e.y = a, c.x += d, c.y += a);
        this.BB(c)
    },
    reverse: function() {
        var a = b.LA(this.fe);
        return b.kz(this.u, a, this.gj)
    },
    BB: function(a) {
        this.target.Ma(a);
        this.yb = a
    },
    DU: function() {
        return this.fe
    },
    TM: function(a) {
        this.fe = a
    }
});
b.kz = function(a, c, d) {
    return new b.jf(a, c, d)
};
b.jf.create = b.kz;
b.ck = b.jf.extend({
    ob: null,
    ctor: function(a, c, d) {
        b.jf.prototype.ctor.call(this);
        this.ob = C(0, 0);
        void 0 !== d && this.n(a, c, d)
    },
    q: function(a) {
        b.jf.prototype.q.call(this, a);
        this.ob.x = a.ja.x;
        this.ob.y = a.ja.y
    },
    reverse: function() {
        for (var a = this.fe.slice(), c, d = a[0], e = 1; e < a.length; ++e) c = a[e],
        a[e] = b.uc(c, d),
        d = c;
        a = b.LA(a);
        d = a[a.length - 1];
        a.pop();
        d.x = -d.x;
        d.y = -d.y;
        a.unshift(d);
        for (e = 1; e < a.length; ++e) c = a[e],
        c.x = -c.x,
        c.y = -c.y,
        c.x += d.x,
        c.y += d.y,
        d = a[e] = c;
        return b.jz(this.u, a, this.gj)
    },
    BB: function(a) {
        var c = this.ob,
        d = a.x + c.x;
        a = a.y + c.y;
        this.yb.x = d;
        this.yb.y = a;
        this.target.Ma(d, a)
    },
    d: function() {
        var a = new b.ck;
        a.n(this.u, b.dp(this.fe), this.gj);
        return a
    }
});
b.jz = function(a, c, d) {
    return new b.ck(a, c, d)
};
b.ck.create = b.jz;
b.gq = b.jf.extend({
    ctor: function(a, c) {
        c && this.n(a, c)
    },
    n: function(a, c) {
        return b.jf.prototype.n.call(this, a, c, 0.5)
    },
    d: function() {
        var a = new b.gq;
        a.n(this.u, b.dp(this.fe));
        return a
    }
});
b.OI = function(a, c) {
    return new b.gq(a, c)
};
b.gq.create = b.OI;
b.fq = b.ck.extend({
    ctor: function(a, c) {
        b.ck.prototype.ctor.call(this);
        c && this.n(a, c)
    },
    n: function(a, c) {
        return b.jf.prototype.n.call(this, a, c, 0.5)
    },
    d: function() {
        var a = new b.fq;
        a.n(this.u, b.dp(this.fe));
        return a
    }
});
b.NI = function(a, c) {
    return new b.fq(a, c)
};
b.fq.create = b.NI;
b.rO = b.oa.extend({
    SN: function() {}
});
b.Wp = b.o.extend({
    key: "",
    kp: 0,
    Sp: 0,
    aJ: 0,
    ctor: function(a, c, d, e) {
        b.o.prototype.ctor.call(this);
        this.key = "";
        void 0 !== e && this.n(a, c, d, e)
    },
    n: function(a, c, d, e) {
        return b.o.prototype.n.call(this, a) ? (this.key = c, this.Sp = e, this.kp = d, !0) : !1
    },
    q: function(a) {
        if (!a || !a.SN) throw "cc.ActionTween.startWithTarget(): target must be non-null, and target must implement updateTweenAction function";
        b.o.prototype.q.call(this, a);
        this.aJ = this.Sp - this.kp
    },
    update: function() {},
    reverse: function() {
        return b.Zy(this.duration, this.key, this.Sp, this.kp)
    },
    d: function() {
        var a = new b.Wp;
        a.n(this.u, this.key, this.kp, this.Sp);
        return a
    }
});
b.Zy = function(a, c, d, e) {
    return new b.Wp(a, c, d, e)
};
b.Wp.create = b.Zy;
b.Tf = b.hf.extend({
    Ja: null,
    qs: null,
    T: !1,
    qa: null,
    Mc: "LabelAtlas",
    ctor: function(a, c, d, e, f) {
        b.hf.prototype.ctor.call(this);
        c && b.Tf.prototype.Qd.call(this, a, c, d, e, f)
    },
    nv: function() {
        return this.T
    },
    Vc: function(a, c) {
        this.qa || (this.qa = []);
        this.qa.push({
            ne: a,
            td: c
        })
    },
    Ub: function() {
        if (this.qa) {
            this.T = !0;
            for (var a = this.qa,
            c = 0,
            d = a.length; c < d; c++) {
                var e = a[c];
                e.ne.call(e.td, this)
            }
            a.length = 0
        }
    },
    Qd: function(a, c, d, e, f) {
        var g = a + "",
        h, k;
        if (void 0 === d) {
            d = b.D.Yc(c);
            if (1 !== parseInt(d.version, 10)) return b.log("cc.LabelAtlas.initWithString(): Unsupported version. Upgrade cocos2d version"),
            !1;
            c = b.path.$o(c, d.textureFilename);
            e = b.Ka();
            h = parseInt(d.itemWidth, 10) / e;
            k = parseInt(d.itemHeight, 10) / e;
            d = String.fromCharCode(parseInt(d.firstChar, 10))
        } else h = d || 0,
        k = e || 0,
        d = f || " ";
        var m = null,
        m = c instanceof b.K ? c: b.va.cc(c); (this.T = c = m.xb) || m.Vc(function() {
            this.ia(m, h, k, g.length);
            this.string = g;
            this.Ub()
        },
        this);
        return this.ia(m, h, k, g.length) ? (this.qs = d, this.string = g, !0) : !1
    },
    V: function(a) {
        b.hf.prototype.V.call(this, a);
        this.Vj()
    },
    Nl: function() {
        return this.Ja
    },
    na: function(a) {
        b.hf.prototype.na.call(this, a);
        b.IC && (a = this.size, b.Hd.gc([C(0, 0), C(a.width, 0), C(a.width, a.height), C(0, a.height)], 4, !0))
    },
    rr: function(a, c, d) {
        a.NG = !0;
        b.m.prototype.N.call(this, a, c, d)
    },
    Vj: null,
    $H: function() {
        for (var a = this.Ja || "",
        c = a.length,
        d = this.texture,
        e = this.Ke,
        f = this.de,
        g = 0; g < c; g++) {
            var h = a.charCodeAt(g) - this.qs.charCodeAt(0),
            h = E(parseInt(h % this.Ti, 10) * e, parseInt(h / this.Ti, 10) * f, e, f),
            k = a.charCodeAt(g),
            m = this.Od(g);
            m ? 32 == k ? (m.ga(), m.Ha(E(0, 0, 10, 10), !1, D(0, 0))) : (m.ia(d, h), m.visible = !0, m.opacity = this.sa) : (m = new b.B, 32 == k ? (m.ga(), m.Ha(E(0, 0, 10, 10), !1, D(0, 0))) : m.ia(d, h), b.m.prototype.N.call(this, m, 0, g));
            m.Ma(g * e + e / 2, f / 2)
        }
    },
    aI: function() {
        var a = this.Ja,
        c = a.length,
        d = this.textureAtlas,
        e = d.texture,
        f = e.pixelsWidth,
        e = e.pixelsHeight,
        g = this.Ke,
        h = this.de;
        this.Yn || (g = this.Ke * b.Ka(), h = this.de * b.Ka());
        c > d.Bc && b.log("cc.LabelAtlas._updateAtlasValues(): Invalid String length");
        for (var k = d.quads,
        m = this.Q,
        m = {
            r: m.r,
            g: m.g,
            b: m.b,
            a: this.sa
        },
        n = this.Ke, r = 0; r < c; r++) {
            var s = a.charCodeAt(r) - this.qs.charCodeAt(0),
            u = s % this.Ti,
            t = 0 | s / this.Ti,
            v;
            b.vk ? (u = (2 * u * g + 1) / (2 * f), s = u + (2 * g - 2) / (2 * f), t = (2 * t * h + 1) / (2 * e), v = t + (2 * h - 2) / (2 * e)) : (u = u * g / f, s = u + g / f, t = t * h / e, v = t + h / e);
            var w = k[r],
            A = w.ya,
            z = w.za,
            I = w.wa,
            w = w.xa;
            A.f.R = u;
            A.f.S = t;
            z.f.R = s;
            z.f.S = t;
            I.f.R = u;
            I.f.S = v;
            w.f.R = s;
            w.f.S = v;
            I.e.x = r * n;
            I.e.y = 0;
            I.e.z = 0;
            w.e.x = r * n + n;
            w.e.y = 0;
            w.e.z = 0;
            A.e.x = r * n;
            A.e.y = this.de;
            A.e.z = 0;
            z.e.x = r * n + n;
            z.e.y = this.de;
            z.e.z = 0;
            A.j = m;
            z.j = m;
            I.j = m;
            w.j = m
        }
        0 < c && (d.dirty = !0, a = d.totalQuads, c > a && d.QK(c - a))
    },
    ic: null,
    IH: function(a) {
        a = String(a);
        var c = a.length;
        this.Ja = a;
        this.width = c * this.Ke;
        this.height = this.de;
        if (this.s) {
            a = this.s;
            for (var c = a.length,
            d = 0; d < c; d++) {
                var e = a[d];
                e && !e.NG && (e.visible = !1)
            }
        }
        this.Vj();
        this.quadsToDraw = c
    },
    KH: function(a) {
        a = String(a);
        var c = a.length;
        c > this.textureAtlas.totalQuads && this.textureAtlas.JA(c);
        this.Ja = a;
        this.width = c * this.Ke;
        this.height = this.de;
        this.Vj();
        this.quadsToDraw = c
    },
    Ga: null,
    bt: function(a) {
        if (this.sa !== a) {
            b.hf.prototype.Ga.call(this, a);
            for (var c = this.s,
            d = 0,
            e = c.length; d < e; d++) c[d] && (c[d].opacity = a)
        }
    },
    ct: function(a) {
        this.bH !== a && b.hf.prototype.Ga.call(this, a)
    }
});
p = b.Tf.prototype;
b.da === b.wb ? (p.Vj = p.aI, p.ic = p.KH, p.Ga = p.ct) : (p.Vj = p.$H, p.ic = p.IH, p.Ga = p.bt, p.N = p.rr);
b.k(p, "opacity", p.wj, p.Ga);
b.k(p, "string", p.Nl, p.ic);
b.Tf.create = function(a, c, d, e, f) {
    return new b.Tf(a, c, d, e, f)
};
b.mP = -1;
b.vq = b.Vf.extend({
    Da: !1,
    Ja: "",
    gd: null,
    Tn: "",
    Qi: "",
    Jk: b.Yg,
    Hl: -1,
    Mx: !1,
    Zn: null,
    qy: null,
    sa: 255,
    Md: 255,
    Q: null,
    ac: null,
    $d: !0,
    De: !0,
    T: !1,
    qa: null,
    Mc: "LabelBMFont",
    Cy: function(a, c) {
        c ? this.Qi = a: this.Ja = a;
        var d = this.s;
        if (d) for (var e = 0; e < d.length; e++) {
            var f = d[e];
            f && f.te(!1)
        }
        this.T && (this.fp(), c && this.yd())
    },
    ctor: function(a, c, d, e, f) {
        b.Vf.prototype.ctor.call(this);
        this.Zn = C(0, 0);
        this.Q = b.color(255, 255, 255, 255);
        this.ac = b.color(255, 255, 255, 255);
        this.qy = [];
        this.Qd(a, c, d, e, f)
    },
    nv: function() {
        return this.T
    },
    Vc: function(a, c) {
        this.qa || (this.qa = []);
        this.qa.push({
            ne: a,
            td: c
        })
    },
    Ub: function() {
        if (this.qa) {
            for (var a = this.qa,
            c = 0,
            d = a.length; c < d; c++) {
                var e = a[c];
                e.ne.call(e.td, this)
            }
            a.length = 0
        }
    },
    na: function(a) {
        b.Vf.prototype.na.call(this, a);
        if (b.JC) {
            a = this.ud();
            var c = C(0 | -this.lb.x, 0 | -this.lb.y);
            a = [C(c.x, c.y), C(c.x + a.width, c.y), C(c.x + a.width, c.y + a.height), C(c.x, c.y + a.height)];
            b.Hd.Rj(0, 255, 0, 255);
            b.Hd.gc(a, 4, !0)
        }
    },
    V: function(a) {
        var c = this.Q,
        d = this.ac;
        if (d.r != a.r || d.g != a.g || d.b != a.b || d.a != a.a) c.r = d.r = a.r,
        c.g = d.g = a.g,
        c.b = d.b = a.b,
        this.T && this.$d && (a = b.color.WHITE, (c = this.Db) && c.cascadeColor && (a = c.pp()), this.sb(a))
    },
    Dj: function() {
        return this.Da
    },
    Ng: function(a) {
        this.Da = a;
        if (a = this.s) for (var c = 0; c < a.length; c++) {
            var d = a[c];
            d && (d.opacityModifyRGB = this.Da)
        }
    },
    wj: function() {
        return this.Md
    },
    YJ: function() {
        return this.sa
    },
    Ga: function(a) {
        this.sa = this.Md = a;
        if (this.De) {
            var c = 255,
            d = this.Db;
            d && d.cascadeOpacity && (c = d.sa);
            this.kb(c)
        }
        this.Q.a = this.ac.a = a
    },
    kb: function(a) {
        this.sa = this.Md * a / 255;
        a = this.s;
        for (var c = 0; c < a.length; c++) {
            var d = a[c];
            b.da == b.wb ? d.kb(this.sa) : (b.m.prototype.kb.call(d, this.sa), d.W())
        }
        this.fd()
    },
    hA: function() {
        return ! 1
    },
    VA: function(a) {
        this.De = a
    },
    Nh: function() {
        var a = this.ac;
        return b.color(a.r, a.g, a.b, a.a)
    },
    pp: function() {
        return this.Q
    },
    sb: function(a) {
        var c = this.Q,
        d = this.ac;
        c.r = d.r * a.r / 255;
        c.g = d.g * a.g / 255;
        c.b = d.b * a.b / 255;
        a = this.s;
        for (c = 0; c < a.length; c++) d = a[c],
        b.da == b.wb ? d.sb(this.Q) : (b.m.prototype.sb.call(d, this.Q), d.W());
        this.fd()
    },
    fd: function() {
        if (b.da != b.wb) {
            var a = this.La();
            if (a && 0 < a.ud().width) {
                var c = this.mb.la;
                if (c) {
                    var d = a.la,
                    e = E(0, 0, c.width, c.height);
                    d instanceof HTMLCanvasElement && !this.nb ? b.tj(c, this.Q, e, d) : (d = b.tj(c, this.Q, e), a = new b.K, a.Mb(d), a.Fa());
                    this.Wa(a)
                }
            }
        }
    },
    gA: function() {
        return ! 1
    },
    UA: function(a) {
        this.$d = a
    },
    ga: function() {
        return this.Qd(null, null, null, null, null)
    },
    Qd: function(a, c, d, e, f) {
        a = a || "";
        this.gd && b.log("cc.LabelBMFont.initWithString(): re-init is no longer supported");
        if (c) {
            var g = b.D.Yc(c);
            if (!g) return b.log("cc.LabelBMFont.initWithString(): Impossible to create font. Please check file"),
            !1;
            this.gd = g;
            this.Tn = c;
            c = b.va.cc(g.dz); (this.T = g = c.xb) || c.Vc(function(a) {
                this.T = !0;
                this.ia(a, this.Qi.length);
                this.ic(this.Qi, !0);
                this.Ub()
            },
            this)
        } else c = new b.K,
        g = new Image,
        c.Mb(g),
        this.T = !1;
        return this.ia(c, a.length) ? (this.Jk = e || b.cn, this.Zn = f || C(0, 0), this.Hl = null == d ? -1 : d, this.sa = this.Md = 255, this.Q = b.color(255, 255, 255, 255), this.ac = b.color(255, 255, 255, 255), this.$d = this.De = !0, this.v.width = 0, this.v.height = 0, this.Qj(0.5, 0.5), b.da === b.wb && (d = this.textureAtlas.texture, this.Da = d.Aj(), e = this.qy = new b.B, e.ia(d, E(0, 0, 0, 0), !1), e.batchNode = this), this.ic(a, !0), !0) : !1
    },
    fp: function() {
        var a = b.da,
        c = a === b.Ya ? this.texture: this.textureAtlas.texture,
        d = 0,
        e = D(0, 0),
        f = 0,
        g = 1,
        h = this.Ja,
        k = h ? h.length: 0;
        if (0 !== k) {
            var m, n = this.gd,
            r = n.kL,
            s = n.au,
            u = n.MJ;
            for (m = 0; m < k - 1; m++) 10 == h.charCodeAt(m) && g++;
            var t = s * g,
            g = -(s - s * g),
            v = -1;
            for (m = 0; m < k; m++) if (s = h.charCodeAt(m), 0 != s) if (10 === s) d = 0,
            g -= n.au;
            else {
                var w = r[v << 16 | s & 65535] || 0,
                A = u[s];
                if (A) {
                    var z = E(A.rect.x, A.rect.y, A.rect.width, A.rect.height),
                    z = b.Hp(z);
                    z.x += this.Zn.x;
                    z.y += this.Zn.y; (v = this.Od(m)) ? 32 === s && a === b.Ya ? v.Ha(z, !1, D(0, 0)) : (v.Ha(z, !1), v.visible = !0) : (v = new b.B, 32 === s && a === b.Ya && (z = E(0, 0, 0, 0)), v.ia(c, z, !1), v.lo = !0, this.N(v, 0, m));
                    v.opacityModifyRGB = this.Da;
                    b.da == b.wb ? (v.sb(this.Q), v.kb(this.sa)) : (b.m.prototype.sb.call(v, this.Q), b.m.prototype.kb.call(v, this.sa), v.W());
                    z = C(d + A.ZN + 0.5 * A.rect.width + w, g + (n.au - A.$N) - 0.5 * z.height * b.Ka());
                    v.Ma(b.OL(z));
                    d += A.YN + w;
                    v = s;
                    f < d && (f = d)
                } else b.log("cocos2d: LabelBMFont: character not found " + h[m])
            }
            e.width = f;
            e.height = t;
            this.wd(b.qN(e))
        }
    },
    yZ: function(a) {
        var c = this.s;
        if (c) for (var d = 0,
        e = c.length; d < e; d++) {
            var f = c[d];
            f && (f.visible = !1)
        }
        this.gd && this.fp();
        a || this.yd()
    },
    Nl: function() {
        return this.Qi
    },
    ic: function(a, c) {
        a = String(a);
        null == c && (c = !0);
        if (null == a || "string" != typeof a) a += "";
        this.Qi = a;
        this.Cy(a, c)
    },
    JH: function(a) {
        this.ic(a, !1)
    },
    YX: function(a) {
        this.ic(a, !0)
    },
    yd: function() {
        this.string = this.Qi;
        if (0 < this.Hl) {
            for (var a = this.Ja.length,
            c = [], d = [], e = 1, f = 0, g = !1, h = !1, k = -1, m = -1, n = 0, r, s = 0, u = this.s.length; s < u; s++) {
                for (var t = 0; ! (r = this.Od(s + n + t));) t++;
                n += t;
                if (f >= a) break;
                var v = this.Ja[f];
                h || (m = this.as(r), h = !0);
                g || (k = m, g = !0);
                if (10 == v.charCodeAt(0)) {
                    d.push("\n");
                    c = c.concat(d);
                    d.length = 0;
                    g = h = !1;
                    k = m = -1;
                    s--;
                    n -= t;
                    e++;
                    if (f >= a) break;
                    m || (m = this.as(r), h = !0);
                    k || (k = m, g = !0);
                    f++
                } else if (b.Mu(v)) d.push(v),
                c = c.concat(d),
                d.length = 0,
                h = !1,
                m = -1,
                f++;
                else if (this.eG(r) - k > this.Hl) if (this.Mx) {
                    b.DB(d);
                    d.push("\n");
                    c = c.concat(d);
                    d.length = 0;
                    g = h = !1;
                    k = m = -1;
                    e++;
                    if (f >= a) break;
                    m || (m = this.as(r), h = !0);
                    k || (k = m, g = !0);
                    s--
                } else d.push(v),
                -1 != c.lastIndexOf(" ") ? b.DB(c) : c = [],
                0 < c.length && c.push("\n"),
                e++,
                g = !1,
                k = -1,
                f++;
                else d.push(v),
                f++
            }
            c = c.concat(d);
            s = c.length;
            r = "";
            for (f = 0; f < s; ++f) r += c[f];
            r += String.fromCharCode(0);
            this.Cy(r, !1)
        }
        if (this.Jk != b.cn) for (c = f = 0, a = this.Ja.length, d = [], e = 0; e < a; e++) if (10 == this.Ja[e].charCodeAt(0) || 0 == this.Ja[e].charCodeAt(0)) if (s = 0, g = d.length, 0 == g) c++;
        else {
            if (r = f + g - 1 + c, !(0 > r) && (s = this.Od(r), null != s)) {
                s = s.ja.x + s.Ie() / 2;
                h = 0;
                switch (this.Jk) {
                case b.Yg:
                    h = this.width / 2 - s / 2;
                    break;
                case b.$v:
                    h = this.width - s
                }
                if (0 != h) for (s = 0; s < g; s++)(r = f + s + c, 0 > r || !(r = this.Od(r))) || (r.x += h);
                f += g;
                c++;
                d.length = 0
            }
        } else d.push(this.Ja[f])
    },
    vM: function(a) {
        this.Jk = a;
        this.yd()
    },
    SF: function() {
        return this.Jk
    },
    zM: function(a) {
        this.Hl = a;
        this.yd()
    },
    Xr: function() {
        return this.Hl
    },
    vY: function(a) {
        this.Mx = a;
        this.yd()
    },
    Og: function(a, c) {
        b.m.prototype.Og.call(this, a, c);
        this.yd()
    },
    Qp: function(a) {
        b.m.prototype.Qp.call(this, a);
        this.yd()
    },
    gv: function(a) {
        b.m.prototype.gv.call(this, a);
        this.yd()
    },
    mY: function(a) {
        if (null != a && a != this.Tn) {
            var c = b.D.Yc(a);
            c ? (this.Tn = a, this.gd = c, a = b.va.cc(c.dz), this.T = c = a.xb, this.texture = a, b.da === b.Ya && (this.mb = this.texture), c ? this.fp() : a.Vc(function(a) {
                this.T = !0;
                this.texture = a;
                this.fp();
                this.fd();
                this.yd();
                this.Ub()
            },
            this)) : b.log("cc.LabelBMFont.setFntFile() : Impossible to create font. Please check file")
        }
    },
    gU: function() {
        return this.Tn
    },
    Qj: function(a, c) {
        b.m.prototype.Qj.call(this, a, c);
        this.yd()
    },
    zy: function(a) {
        b.m.prototype.zy.call(this, a);
        this.yd()
    },
    Ws: function(a) {
        b.m.prototype.Ws.call(this, a);
        this.yd()
    },
    Xs: function(a) {
        b.m.prototype.Xs.call(this, a);
        this.yd()
    },
    OQ: function() {},
    hR: function(a, c) {
        var d = 0;
        if (this.wF.lL) {
            var e = this.wF.lL[(a << 16 | c & 65535).toString()];
            e && (d = e.QR)
        }
        return d
    },
    as: function(a) {
        return a.ja.x * this.O - a.Ie() * this.O * a.Ab.x
    },
    eG: function(a) {
        return a.ja.x * this.O + a.Ie() * this.O * a.Ab.x
    }
});
p = b.vq.prototype;
b.da !== b.Ya || b.Aa.wt || (p.fd = function() {
    if (b.da != b.wb) {
        var a, c = this.La();
        c && 0 < c.ud().width && (a = c.la) && (c = b.va.zu(this.mb.la)) && (a instanceof HTMLCanvasElement && !this.nb ? b.sj(a, c, this.Q, null, a) : (a = b.sj(a, c, this.Q), c = new b.K, c.Mb(a), c.Fa(), this.Wa(c)))
    }
});
b.k(p, "string", p.Nl, p.JH);
b.k(p, "boundingWidth", p.Xr, p.zM);
b.k(p, "textAlign", p.SF, p.vM);
b.vq.create = function(a, c, d, e, f) {
    return new b.vq(a, c, d, e, f)
};
b.Mu = function(a) {
    a = a.charCodeAt(0);
    return 9 <= a && 13 >= a || 32 == a || 133 == a || 160 == a || 5760 == a || 8192 <= a && 8202 >= a || 8232 == a || 8233 == a || 8239 == a || 8287 == a || 12288 == a
};
b.DB = function(a) {
    var c = a.length;
    if (! (0 >= c) && (c -= 1, b.Mu(a[c]))) {
        for (var d = c - 1; 0 <= d; --d) if (b.Mu(a[d])) c = d;
        else break;
        b.TN(a, c)
    }
};
b.TN = function(a, c) {
    var d = a.length;
    c >= d || 0 > c || a.splice(c, d)
};
b.MF = {
    EC: /info [^\n]*(\n|$)/gi,
    $B: /common [^\n]*(\n|$)/gi,
    oD: /page [^\n]*(\n|$)/gi,
    ZB: /char [^\n]*(\n|$)/gi,
    HC: /kerning [^\n]*(\n|$)/gi,
    GC: /\w+=[^ \r\n]+/gi,
    FC: /^[\-]?\d+$/,
    ml: function(a) {
        a = a.match(this.GC);
        var c = {};
        if (a) for (var d = 0,
        e = a.length; d < e; d++) {
            var f = a[d],
            g = f.indexOf("\x3d"),
            h = f.substring(0, g),
            f = f.substring(g + 1);
            f.match(this.FC) ? f = parseInt(f) : '"' == f[0] && (f = f.substring(1, f.length - 1));
            c[h] = f
        }
        return c
    },
    GL: function(a, c) {
        var d = {};
        this.ml(a.match(this.EC)[0]);
        var e = this.ml(a.match(this.$B)[0]);
        d.au = e.lineHeight;
        if (b.da === b.wb) {
            var f = b.bu.il; (e.scaleW > f.width || e.scaleH > f.height) && b.log("cc.LabelBMFont._parseCommonArguments(): page can't be larger than supported")
        }
        1 !== e.pages && b.log("cc.LabelBMFont._parseCommonArguments(): only supports 1 page");
        e = this.ml(a.match(this.oD)[0]);
        0 !== e.id && b.log("cc.LabelBMFont._parseImageFileName() : file could not be found");
        d.dz = b.path.$o(c, e.file);
        for (var g = a.match(this.ZB), h = d.MJ = {},
        e = 0, f = g.length; e < f; e++) {
            var k = this.ml(g[e]);
            h[k.id] = {
                rect: {
                    x: k.x,
                    y: k.y,
                    width: k.width,
                    height: k.height
                },
                ZN: k.xoffset,
                $N: k.yoffset,
                YN: k.xadvance
            }
        }
        g = d.kL = {};
        if (h = a.match(this.HC)) for (e = 0, f = h.length; e < f; e++) k = this.ml(h[e]),
        g[k.first << 16 | k.second & 65535] = k.amount;
        return d
    },
    load: function(a, c, d, e) {
        var f = this;
        b.D.yp(a,
        function(a, d) {
            if (a) return e(a);
            e(null, f.GL(d, c))
        })
    }
};
b.D.Mg(["fnt"], b.MF);
b.BZ = function() {
    return {
        x: 0,
        y: 0
    }
};
b.Qg = function(a, c) {
    return {
        x: a,
        y: c
    }
};
b.xc = function(a, c) {
    return b.Qg(a.x + c.x, a.y + c.y)
};
b.bb = function(a, c) {
    return b.Qg(a.x - c.x, a.y - c.y)
};
b.Nb = function(a, c) {
    return b.Qg(a.x * c, a.y * c)
};
b.Wj = function(a) {
    return b.Qg( - a.y, a.x)
};
b.zd = function(a) {
    return b.Qg( - a.x, -a.y)
};
b.EB = function(a, c) {
    return a.x * c.x + a.y * c.y
};
b.AZ = function(a) {
    return b.Qg(Math.cos(a), Math.sin(a))
};
b.pm = function(a) {
    a = b.Td(C(a.x, a.y));
    return b.Qg(a.x, a.y)
};
b.Ac = function(a) {
    return b.Qg(a.x, a.y)
};
b.U = function(a) {
    return {
        R: a.x,
        S: a.y
    }
};
b.mC = b.m.extend({
    pa: null,
    t: null,
    Cb: 1,
    Qc: null,
    Mc: "DrawNodeCanvas",
    ctor: function() {
        b.m.prototype.ctor.call(this);
        this.pa = [];
        this.Qc = b.color(255, 255, 255, 255);
        this.t = new b.cb(b.kc, b.jc);
        this.ga()
    },
    Ml: function() {
        return this.t
    },
    $h: function(a, c) {
        void 0 === c ? (this.t.src = a.src, this.t.Y = a.Y) : (this.t.src = a, this.t.Y = c)
    },
    ev: function(a) {
        this.Cb = a
    },
    hK: function() {
        return this.Cb
    },
    Rj: function(a) {
        var c = this.Qc;
        c.r = a.r;
        c.g = a.g;
        c.b = a.b;
        c.a = null == a.a ? 255 : a.a
    },
    Sb: function() {
        return b.color(this.Qc.r, this.Qc.g, this.Qc.b, this.Qc.a)
    },
    ku: function(a, c, d, e, f) {
        e = e || this.Cb;
        f = f || this.Sb();
        null == f.a && (f.a = 255);
        a = [a, C(c.x, a.y), c, C(a.x, c.y)];
        c = new b.Yf(b.Tb.Wf);
        c.Ud = a;
        c.lineWidth = e;
        c.Mf = f;
        c.xp = !0;
        c.Jg = !0;
        c.lineCap = "butt";
        if (c.fillColor = d) null == d.a && (d.a = 255),
        c.Ku = !0;
        this.pa.push(c)
    },
    hu: function(a, c, d, e, f, g, h) {
        g = g || this.Cb;
        h = h || this.Sb();
        null == h.a && (h.a = 255);
        for (var k = 2 * Math.PI / e,
        m = [], n = 0; n <= e; n++) {
            var r = n * k;
            m.push(C(c * Math.cos(r + d) + a.x, c * Math.sin(r + d) + a.y))
        }
        f && m.push(C(a.x, a.y));
        a = new b.Yf(b.Tb.Wf);
        a.Ud = m;
        a.lineWidth = g;
        a.Mf = h;
        a.xp = !0;
        a.Jg = !0;
        this.pa.push(a)
    },
    ju: function(a, c, d, e, f, g) {
        f = f || this.Cb;
        g = g || this.Sb();
        null == g.a && (g.a = 255);
        for (var h = [], k = 0, m = 0; m < e; m++) h.push(C(Math.pow(1 - k, 2) * a.x + 2 * (1 - k) * k * c.x + k * k * d.x, Math.pow(1 - k, 2) * a.y + 2 * (1 - k) * k * c.y + k * k * d.y)),
        k += 1 / e;
        h.push(C(d.x, d.y));
        a = new b.Yf(b.Tb.Wf);
        a.Ud = h;
        a.lineWidth = f;
        a.Mf = g;
        a.Jg = !0;
        a.lineCap = "round";
        this.pa.push(a)
    },
    iu: function(a, c, d, e, f, g, h) {
        g = g || this.Cb;
        h = h || this.Sb();
        null == h.a && (h.a = 255);
        for (var k = [], m = 0, n = 0; n < f; n++) k.push(C(Math.pow(1 - m, 3) * a.x + 3 * Math.pow(1 - m, 2) * m * c.x + 3 * (1 - m) * m * m * d.x + m * m * m * e.x, Math.pow(1 - m, 3) * a.y + 3 * Math.pow(1 - m, 2) * m * c.y + 3 * (1 - m) * m * m * d.y + m * m * m * e.y)),
        m += 1 / f;
        k.push(C(e.x, e.y));
        a = new b.Yf(b.Tb.Wf);
        a.Ud = k;
        a.lineWidth = g;
        a.Mf = h;
        a.Jg = !0;
        a.lineCap = "round";
        this.pa.push(a)
    },
    gu: function(a, c, d, e) {
        this.Lh(a, 0.5, c, d, e)
    },
    Lh: function(a, c, d, e, f) {
        e = e || this.Cb;
        f = f || this.Sb();
        null == f.a && (f.a = 255);
        for (var g = [], h, k, m = 1 / a.length, n = 0; n < d + 1; n++) k = n / d,
        1 == k ? (h = a.length - 1, k = 1) : (h = 0 | k / m, k = (k - m * h) / m),
        h = b.$t(b.Fb(a, h - 1), b.Fb(a, h - 0), b.Fb(a, h + 1), b.Fb(a, h + 2), c, k),
        g.push(h);
        a = new b.Yf(b.Tb.Wf);
        a.Ud = g;
        a.lineWidth = e;
        a.Mf = f;
        a.Jg = !0;
        a.lineCap = "round";
        this.pa.push(a)
    },
    ip: function(a, c, d) {
        d = d || this.Sb();
        null == d.a && (d.a = 255);
        var e = new b.Yf(b.Tb.aw);
        e.Ud = [a];
        e.lineWidth = c;
        e.fillColor = d;
        this.pa.push(e)
    },
    eJ: function(a, c, d) {
        if (a && 0 != a.length) {
            d = d || this.Sb();
            null == d.a && (d.a = 255);
            for (var e = 0,
            f = a.length; e < f; e++) this.ip(a[e], c, d)
        }
    },
    lu: function(a, c, d, e) {
        d = d || this.Cb;
        e = e || this.Sb();
        null == e.a && (e.a = 255);
        var f = new b.Yf(b.Tb.Wf);
        f.Ud = [a, c];
        f.lineWidth = 2 * d;
        f.Mf = e;
        f.Jg = !0;
        f.lineCap = "round";
        this.pa.push(f)
    },
    iJ: function(a, c, d, e) {
        d = d || this.Cb;
        e = e || this.Sb();
        null == e.a && (e.a = 255);
        var f = new b.Yf(b.Tb.Wf);
        f.Ud = a;
        f.fillColor = c;
        f.lineWidth = d;
        f.Mf = e;
        f.xp = !0;
        f.Jg = !0;
        f.lineCap = "round";
        c && (f.Ku = !0);
        this.pa.push(f)
    },
    gc: function(a, c, d, e) {
        for (var f = [], g = 0; g < a.length; g++) f.push(C(a[g].x, a[g].y));
        return this.iJ(f, c, d, e)
    },
    na: function(a) {
        a = a || b.l;
        this.t && this.t.src == b.SRC_ALPHA && this.t.Y == b.ONE && (a.globalCompositeOperation = "lighter");
        for (var c = 0; c < this.pa.length; c++) {
            var d = this.pa[c];
            switch (d.type) {
            case b.Tb.aw:
                this.GF(a, d);
                break;
            case b.Tb.mE:
                this.IF(a, d);
                break;
            case b.Tb.Wf:
                this.HF(a, d)
            }
        }
    },
    GF: function(a, c) {
        var d = c.fillColor,
        e = c.Ud[0],
        f = c.lineWidth,
        g = b.view.O,
        h = b.view.ma;
        a.fillStyle = "rgba(" + (0 | d.r) + "," + (0 | d.g) + "," + (0 | d.b) + "," + d.a / 255 + ")";
        a.beginPath();
        a.arc(e.x * g, -e.y * h, f * g, 0, 2 * Math.PI, !1);
        a.closePath();
        a.fill()
    },
    IF: function(a, c) {
        var d = c.Mf,
        e = c.Ud[0],
        f = c.Ud[1],
        g = c.lineWidth,
        h = c.lineCap,
        k = b.view.O,
        m = b.view.ma;
        a.strokeStyle = "rgba(" + (0 | d.r) + "," + (0 | d.g) + "," + (0 | d.b) + "," + d.a / 255 + ")";
        a.lineWidth = g * k;
        a.beginPath();
        a.lineCap = h;
        a.moveTo(e.x * k, -e.y * m);
        a.lineTo(f.x * k, -f.y * m);
        a.stroke()
    },
    HF: function(a, c) {
        var d = c.Ud,
        e = c.lineCap,
        f = c.fillColor,
        g = c.lineWidth,
        h = c.Mf,
        k = c.xp,
        m = c.Ku,
        n = c.Jg;
        if (null != d) {
            var r = d[0],
            s = b.view.O,
            u = b.view.ma;
            a.lineCap = e;
            f && (a.fillStyle = "rgba(" + (0 | f.r) + "," + (0 | f.g) + "," + (0 | f.b) + "," + f.a / 255 + ")");
            g && (a.lineWidth = g * s);
            h && (a.strokeStyle = "rgba(" + (0 | h.r) + "," + (0 | h.g) + "," + (0 | h.b) + "," + h.a / 255 + ")");
            a.beginPath();
            a.moveTo(r.x * s, -r.y * u);
            e = 1;
            for (f = d.length; e < f; e++) a.lineTo(d[e].x * s, -d[e].y * u);
            k && a.closePath();
            m && a.fill();
            n && a.stroke()
        }
    },
    clear: function() {
        this.pa.length = 0
    }
});
b.nC = b.m.extend({
    si: 0,
    pa: null,
    Gf: null,
    Ry: null,
    Qy: null,
    Cb: 1,
    Qc: null,
    t: null,
    Yb: !1,
    Mc: "DrawNodeWebGL",
    Ml: function() {
        return this.t
    },
    $h: function(a, c) {
        void 0 === c ? (this.t.src = a.src, this.t.Y = a.Y) : (this.t.src = a, this.t.Y = c)
    },
    ctor: function() {
        b.m.prototype.ctor.call(this);
        this.pa = [];
        this.t = new b.cb(b.kc, b.jc);
        this.Qc = b.color(255, 255, 255, 255);
        this.ga()
    },
    ga: function() {
        return b.m.prototype.ga.call(this) ? (this.shaderProgram = b.ff.Of(b.xD), this.Tk(64), this.Ry = b.l.createBuffer(), this.Yb = !0) : !1
    },
    ev: function(a) {
        this.Cb = a
    },
    hK: function() {
        return this.Cb
    },
    Rj: function(a) {
        var c = this.Qc;
        c.r = a.r;
        c.g = a.g;
        c.b = a.b;
        c.a = a.a
    },
    Sb: function() {
        return b.color(this.Qc.r, this.Qc.g, this.Qc.b, this.Qc.a)
    },
    ku: function(a, c, d, e, f) {
        e = e || this.Cb;
        f = f || this.Sb();
        null == f.a && (f.a = 255);
        a = [a, C(c.x, a.y), c, C(a.x, c.y)];
        null == d ? this.In(a, e, f, !0) : this.gc(a, d, e, f)
    },
    hu: function(a, c, d, e, f, g, h) {
        g = g || this.Cb;
        h = h || this.Sb();
        null == h.a && (h.a = 255);
        var k = 2 * Math.PI / e,
        m = [],
        n;
        for (n = 0; n <= e; n++) {
            var r = n * k;
            m.push(C(c * Math.cos(r + d) + a.x, c * Math.sin(r + d) + a.y))
        }
        f && m.push(C(a.x, a.y));
        g *= 0.5;
        n = 0;
        for (a = m.length; n < a - 1; n++) this.lu(m[n], m[n + 1], g, h)
    },
    ju: function(a, c, d, e, f, g) {
        f = f || this.Cb;
        g = g || this.Sb();
        null == g.a && (g.a = 255);
        for (var h = [], k = 0, m = 0; m < e; m++) h.push(C(Math.pow(1 - k, 2) * a.x + 2 * (1 - k) * k * c.x + k * k * d.x, Math.pow(1 - k, 2) * a.y + 2 * (1 - k) * k * c.y + k * k * d.y)),
        k += 1 / e;
        h.push(C(d.x, d.y));
        this.In(h, f, g, !1)
    },
    iu: function(a, c, d, e, f, g, h) {
        g = g || this.Cb;
        h = h || this.Sb();
        null == h.a && (h.a = 255);
        for (var k = [], m = 0, n = 0; n < f; n++) k.push(C(Math.pow(1 - m, 3) * a.x + 3 * Math.pow(1 - m, 2) * m * c.x + 3 * (1 - m) * m * m * d.x + m * m * m * e.x, Math.pow(1 - m, 3) * a.y + 3 * Math.pow(1 - m, 2) * m * c.y + 3 * (1 - m) * m * m * d.y + m * m * m * e.y)),
        m += 1 / f;
        k.push(C(e.x, e.y));
        this.In(k, g, h, !1)
    },
    gu: function(a, c, d, e) {
        this.Lh(a, 0.5, c, d, e)
    },
    Lh: function(a, c, d, e, f) {
        e = e || this.Cb;
        f = f || this.Sb();
        null == f.a && (f.a = 255);
        for (var g = [], h, k, m = 1 / a.length, n = 0; n < d + 1; n++) k = n / d,
        1 == k ? (h = a.length - 1, k = 1) : (h = 0 | k / m, k = (k - m * h) / m),
        h = b.$t(b.Fb(a, h - 1), b.Fb(a, h - 0), b.Fb(a, h + 1), b.Fb(a, h + 2), c, k),
        g.push(h);
        e *= 0.5;
        a = 0;
        for (c = g.length; a < c - 1; a++) this.lu(g[a], g[a + 1], e, f)
    },
    qH: function() {
        var a = b.l;
        b.tc(b.gn);
        a.bindBuffer(a.ARRAY_BUFFER, this.Ry);
        this.Yb && (a.bufferData(a.ARRAY_BUFFER, this.Gf, a.STREAM_DRAW), this.Yb = !1);
        var c = b.Xd.BYTES_PER_ELEMENT;
        a.vertexAttribPointer(b.lc, 2, a.FLOAT, !1, c, 0);
        a.vertexAttribPointer(b.Ck, 4, a.UNSIGNED_BYTE, !0, c, 8);
        a.vertexAttribPointer(b.Dk, 2, a.FLOAT, !1, c, 12);
        a.drawArrays(a.TRIANGLES, 0, 3 * this.pa.length);
        b.Ze()
    },
    Tk: function(a) {
        var c = this.pa;
        if (c.length + a > this.si) {
            var d = b.Ra.BYTES_PER_ELEMENT;
            this.si += Math.max(this.si, a);
            if (null == c || 0 === c.length) this.pa = [],
            this.Gf = new ArrayBuffer(d * this.si),
            this.Qy = new Uint8Array(this.Gf);
            else {
                a = [];
                for (var e = new ArrayBuffer(d * this.si), f = 0; f < c.length; f++) a[f] = new b.Ra(c[f].a, c[f].b, c[f].J, e, f * d);
                this.Qy = new Uint8Array(e);
                this.Gf = e;
                this.pa = a
            }
        }
    },
    na: function() {
        b.Ph(this.t.src, this.t.Y);
        this.Jb.wc();
        this.Jb.iB();
        this.qH()
    },
    ip: function(a, c, d) {
        d = d || this.Sb();
        null == d.a && (d.a = 255);
        var e = {
            r: 0 | d.r,
            g: 0 | d.g,
            b: 0 | d.b,
            a: 0 | d.a
        };
        d = {
            e: {
                x: a.x - c,
                y: a.y - c
            },
            j: e,
            f: {
                R: -1,
                S: -1
            }
        };
        var f = {
            e: {
                x: a.x - c,
                y: a.y + c
            },
            j: e,
            f: {
                R: -1,
                S: 1
            }
        },
        g = {
            e: {
                x: a.x + c,
                y: a.y + c
            },
            j: e,
            f: {
                R: 1,
                S: 1
            }
        };
        a = {
            e: {
                x: a.x + c,
                y: a.y - c
            },
            j: e,
            f: {
                R: 1,
                S: -1
            }
        };
        this.Tk(6);
        this.pa.push(new b.Ra(d, f, g, this.Gf, this.pa.length * b.Ra.BYTES_PER_ELEMENT));
        this.pa.push(new b.Ra(d, g, a, this.Gf, this.pa.length * b.Ra.BYTES_PER_ELEMENT));
        this.Yb = !0
    },
    eJ: function(a, c, d) {
        if (a && 0 != a.length) {
            d = d || this.Sb();
            null == d.a && (d.a = 255);
            for (var e = 0,
            f = a.length; e < f; e++) this.ip(a[e], c, d)
        }
    },
    lu: function(a, c, d, e) {
        e = e || this.Sb();
        null == e.a && (e.a = 255);
        d = d || 0.5 * this.Cb;
        this.Tk(18);
        e = {
            r: 0 | e.r,
            g: 0 | e.g,
            b: 0 | e.b,
            a: 0 | e.a
        };
        var f = b.Ac(a);
        c = b.Ac(c);
        a = b.pm(b.Wj(b.bb(c, f)));
        var g = b.Wj(a),
        h = b.Nb(a, d);
        d = b.Nb(g, d);
        var k = b.xc(c, b.bb(h, d)),
        m = b.bb(c, h),
        n = b.xc(c, h),
        r = b.bb(f, h),
        s = b.xc(f, h),
        u = b.bb(f, b.bb(h, d)),
        f = b.xc(f, b.xc(h, d)),
        t = b.Ra.BYTES_PER_ELEMENT,
        v = this.Gf,
        w = this.pa;
        w.push(new b.Ra({
            e: b.bb(c, b.xc(h, d)),
            j: e,
            f: b.U(b.zd(b.xc(a, g)))
        },
        {
            e: k,
            j: e,
            f: b.U(b.bb(a, g))
        },
        {
            e: m,
            j: e,
            f: b.U(b.zd(a))
        },
        v, w.length * t));
        w.push(new b.Ra({
            e: n,
            j: e,
            f: b.U(a)
        },
        {
            e: k,
            j: e,
            f: b.U(b.bb(a, g))
        },
        {
            e: m,
            j: e,
            f: b.U(b.zd(a))
        },
        v, w.length * t));
        w.push(new b.Ra({
            e: n,
            j: e,
            f: b.U(a)
        },
        {
            e: r,
            j: e,
            f: b.U(b.zd(a))
        },
        {
            e: m,
            j: e,
            f: b.U(b.zd(a))
        },
        v, w.length * t));
        w.push(new b.Ra({
            e: n,
            j: e,
            f: b.U(a)
        },
        {
            e: r,
            j: e,
            f: b.U(b.zd(a))
        },
        {
            e: s,
            j: e,
            f: b.U(a)
        },
        v, w.length * t));
        w.push(new b.Ra({
            e: u,
            j: e,
            f: b.U(b.bb(g, a))
        },
        {
            e: r,
            j: e,
            f: b.U(b.zd(a))
        },
        {
            e: s,
            j: e,
            f: b.U(a)
        },
        v, w.length * t));
        w.push(new b.Ra({
            e: u,
            j: e,
            f: b.U(b.bb(g, a))
        },
        {
            e: f,
            j: e,
            f: b.U(b.xc(a, g))
        },
        {
            e: s,
            j: e,
            f: b.U(a)
        },
        v, w.length * t));
        this.Yb = !0
    },
    gc: function(a, c, d, e) {
        if (null == c) this.In(a, d, e, !0);
        else {
            null == c.a && (c.a = 255);
            null == e.a && (e.a = 255);
            d = d || this.Cb;
            d *= 0.5;
            c = {
                r: 0 | c.r,
                g: 0 | c.g,
                b: 0 | c.b,
                a: 0 | c.a
            };
            e = {
                r: 0 | e.r,
                g: 0 | e.g,
                b: 0 | e.b,
                a: 0 | e.a
            };
            var f = [],
            g,
            h,
            k,
            m,
            n = a.length;
            for (g = 0; g < n; g++) {
                h = b.Ac(a[(g - 1 + n) % n]);
                k = b.Ac(a[g]);
                m = b.Ac(a[(g + 1) % n]);
                var r = b.pm(b.Wj(b.bb(k, h)));
                k = b.pm(b.Wj(b.bb(m, k)));
                f[g] = {
                    offset: b.Nb(b.xc(r, k), 1 / (b.EB(r, k) + 1)),
                    Ap: k
                }
            }
            r = 0 < d;
            this.Tk(3 * (3 * n - 2));
            var s = b.Ra.BYTES_PER_ELEMENT,
            u = this.Gf,
            t = this.pa,
            v = !1 == r ? 0.5 : 0;
            for (g = 0; g < n - 2; g++) h = b.bb(b.Ac(a[0]), b.Nb(f[0].offset, v)),
            k = b.bb(b.Ac(a[g + 1]), b.Nb(f[g + 1].offset, v)),
            m = b.bb(b.Ac(a[g + 2]), b.Nb(f[g + 2].offset, v)),
            t.push(new b.Ra({
                e: h,
                j: c,
                f: b.U({
                    x: 0,
                    y: 0
                })
            },
            {
                e: k,
                j: c,
                f: b.U({
                    x: 0,
                    y: 0
                })
            },
            {
                e: m,
                j: c,
                f: b.U({
                    x: 0,
                    y: 0
                })
            },
            u, t.length * s));
            for (g = 0; g < n; g++) {
                v = (g + 1) % n;
                h = b.Ac(a[g]);
                k = b.Ac(a[v]);
                m = f[g].Ap;
                var w = f[g].offset,
                A = f[v].offset,
                v = r ? b.bb(h, b.Nb(w, d)) : b.bb(h, b.Nb(w, 0.5)),
                z = r ? b.bb(k, b.Nb(A, d)) : b.bb(k, b.Nb(A, 0.5));
                h = r ? b.xc(h, b.Nb(w, d)) : b.xc(h, b.Nb(w, 0.5));
                k = r ? b.xc(k, b.Nb(A, d)) : b.xc(k, b.Nb(A, 0.5));
                r ? (t.push(new b.Ra({
                    e: v,
                    j: e,
                    f: b.U(b.zd(m))
                },
                {
                    e: z,
                    j: e,
                    f: b.U(b.zd(m))
                },
                {
                    e: k,
                    j: e,
                    f: b.U(m)
                },
                u, t.length * s)), t.push(new b.Ra({
                    e: v,
                    j: e,
                    f: b.U(b.zd(m))
                },
                {
                    e: h,
                    j: e,
                    f: b.U(m)
                },
                {
                    e: k,
                    j: e,
                    f: b.U(m)
                },
                u, t.length * s))) : (t.push(new b.Ra({
                    e: v,
                    j: c,
                    f: b.U({
                        x: 0,
                        y: 0
                    })
                },
                {
                    e: z,
                    j: c,
                    f: b.U({
                        x: 0,
                        y: 0
                    })
                },
                {
                    e: k,
                    j: c,
                    f: b.U(m)
                },
                u, t.length * s)), t.push(new b.Ra({
                    e: v,
                    j: c,
                    f: b.U({
                        x: 0,
                        y: 0
                    })
                },
                {
                    e: h,
                    j: c,
                    f: b.U(m)
                },
                {
                    e: k,
                    j: c,
                    f: b.U(m)
                },
                u, t.length * s)))
            }
            this.Yb = !0
        }
    },
    In: function(a, c, d, e) {
        c = c || this.Cb;
        d = d || this.Qc;
        null == d.a && (d.a = 255);
        c *= 0.5;
        if (! (0 >= c)) {
            d = {
                r: 0 | d.r,
                g: 0 | d.g,
                b: 0 | d.b,
                a: 0 | d.a
            };
            var f = [],
            g,
            h,
            k,
            m,
            n = a.length;
            for (g = 0; g < n; g++) {
                h = b.Ac(a[(g - 1 + n) % n]);
                k = b.Ac(a[g]);
                m = b.Ac(a[(g + 1) % n]);
                var r = b.pm(b.Wj(b.bb(k, h)));
                k = b.pm(b.Wj(b.bb(m, k)));
                f[g] = {
                    offset: b.Nb(b.xc(r, k), 1 / (b.EB(r, k) + 1)),
                    Ap: k
                }
            }
            this.Tk(3 * (3 * n - 2));
            m = b.Ra.BYTES_PER_ELEMENT;
            var r = this.Gf,
            s = this.pa;
            e = e ? n: n - 1;
            for (g = 0; g < e; g++) {
                var u = (g + 1) % n;
                h = b.Ac(a[g]);
                k = b.Ac(a[u]);
                var t = f[g].Ap,
                v = f[g].offset,
                u = f[u].offset,
                w = b.bb(h, b.Nb(v, c));
                h = b.xc(h, b.Nb(v, c));
                v = b.xc(k, b.Nb(u, c));
                s.push(new b.Ra({
                    e: w,
                    j: d,
                    f: b.U(b.zd(t))
                },
                {
                    e: b.bb(k, b.Nb(u, c)),
                    j: d,
                    f: b.U(b.zd(t))
                },
                {
                    e: v,
                    j: d,
                    f: b.U(t)
                },
                r, s.length * m));
                s.push(new b.Ra({
                    e: w,
                    j: d,
                    f: b.U(b.zd(t))
                },
                {
                    e: h,
                    j: d,
                    f: b.U(t)
                },
                {
                    e: v,
                    j: d,
                    f: b.U(t)
                },
                r, s.length * m))
            }
            this.Yb = !0
        }
    },
    clear: function() {
        this.pa.length = 0;
        this.Yb = !0
    }
});
b.Tb = b.da == b.wb ? b.nC: b.mC;
b.Tb.create = function() {
    return new b.Tb
};
b.Yf = function(a) {
    this.type = a;
    this.fillColor = this.Ud = null;
    this.lineWidth = 0;
    this.Mf = null;
    this.lineCap = "butt";
    this.Jg = this.Ku = this.xp = !1
};
b.Tb.aw = 0;
b.Tb.mE = 1;
b.Tb.Wf = 2;
if (b.Aa.Jo) {
    var G = b.GZ = new(window.AudioContext || window.webkitAudioContext || window.mozAudioContext);
    b.er = b.oa.extend({
        Fi: null,
        pa: null,
        rh: null,
        Pt: null,
        src: null,
        Wu: null,
        autoplay: null,
        controls: null,
        ZV: null,
        currentTime: 0,
        startTime: 0,
        duration: 0,
        ps: null,
        Ot: 1,
        to: 0,
        $a: !1,
        fj: !0,
        Kd: -1,
        ctor: function(a) {
            this.Fi = {};
            this.src = a;
            this.Pt = G.createGain ? G.createGain() : G.createGainNode();
            this.ZG = this.YG.bind(this);
            this.WG = this.VG.bind(this)
        },
        Bs: function(a) {
            var c = this,
            d = c.rh = G.createBufferSource(),
            e = c.Pt;
            a = a || 0;
            d.buffer = c.pa;
            e.gain.value = c.Ot;
            d.connect(e);
            e.connect(G.destination);
            d.loop = c.ps;
            d.onended = function() {
                c.fj = !0
            };
            c.$a = !1;
            c.fj = !1;
            d.start ? d.start(0, a) : d.noteGrainOn ? (e = d.buffer.duration, c.loop ? d.noteGrainOn(0, a, e) : d.noteGrainOn(0, a, e - a)) : d.noteOn(0);
            c.to = 0
        },
        Oy: function() {
            var a = this.rh;
            this.fj || (a.stop ? a.stop(0) : a.cW(0), this.fj = !0)
        },
        play: function() {
            if ( - 1 == this.Kd) this.Kd = 0;
            else if (1 == this.Kd) {
                var a = this.rh;
                if (this.fj || !a || 2 != a.playbackState) this.startTime = G.currentTime,
                this.Bs(0)
            }
        },
        pause: function() {
            this.to = G.currentTime;
            this.$a = !0;
            this.Oy()
        },
        Oj: function() {
            this.$a && this.Bs(this.pa ? (this.to - this.startTime) % this.pa.duration: 0)
        },
        stop: function() {
            this.to = 0;
            this.$a = !1;
            this.Oy()
        },
        load: function() {
            var a = this;
            if (1 != a.Kd) {
                a.Kd = -1;
                a.played = !1;
                a.ended = !0;
                var c = new XMLHttpRequest;
                c.open("GET", a.src, !0);
                c.responseType = "arraybuffer";
                c.onload = function() {
                    G.decodeAudioData(c.response, a.ZG, a.WG)
                };
                c.send()
            }
        },
        addEventListener: function(a, c) {
            this.Fi[a] = c.bind(this)
        },
        removeEventListener: function(a) {
            delete this.Fi[a]
        },
        aS: function() {
            return b.Aa.Jo
        },
        YG: function(a) {
            this.pa = a;
            a = this.Fi.success;
            var c = this.Fi.canplaythrough;
            a && a();
            c && c();
            0 != this.Kd && "autoplay" != this.autoplay && !0 != this.autoplay || this.Bs();
            this.Kd = 1
        },
        VG: function() {
            var a = this.Fi.error;
            a && a();
            this.Kd = -2
        },
        cloneNode: function() {
            var a = new b.er(this.src);
            a.volume = this.volume;
            a.Kd = this.Kd;
            a.pa = this.pa;
            0 != a.Kd && -1 != a.Kd || a.load();
            return a
        }
    });
    p = b.er.prototype;
    b.k(p, "loop",
    function() {
        return this.ps
    },
    function(a) {
        this.ps = a;
        this.rh && (this.rh.loop = a)
    });
    b.k(p, "volume",
    function() {
        return this.Ot
    },
    function(a) {
        this.Ot = a;
        this.Pt.gain.value = a
    });
    b.k(p, "paused",
    function() {
        return this.$a
    });
    b.k(p, "ended",
    function() {
        var a = this.rh;
        return ! this.$a && (this.fj || !a || 3 == a.playbackState)
    });
    b.k(p, "played",
    function() {
        var a = this.rh;
        return a && 2 == a.playbackState
    })
}
b.sv = b.oa.extend({
    mt: !1,
    Vb: null,
    Dn: null,
    Rc: 0,
    pw: 0,
    mc: {},
    Mk: {},
    Ln: 1,
    rs: 5,
    ig: null,
    ol: [],
    ctor: function() {
        this.mt = 0 < b.tr.Ko.length;
        this.ig && (this.ig = this.ig.bind(this))
    },
    IZ: function() {
        return ! 1
    },
    aU: function() {
        return this.Ln
    },
    LL: function(a, c) {
        if (this.mt) {
            var d = this.Vb;
            d && this.yg(d);
            a != this.Dn && (this.Vb = d = this.Vr(a), this.Dn = a);
            d && (d.loop = c || !1, this.Cs(d))
        }
    },
    Vr: function(a) {
        var c = b.D,
        d = c.Yc(a);
        d || (c.load(a), d = c.Yc(a));
        return d
    },
    Cs: function(a) {
        a.ended || (a.stop ? a.stop() : (a.pause(), a.currentTime = 0));
        this.Rc = 2;
        a.play()
    },
    DN: function(a) {
        if (0 < this.Rc) {
            var c = this.Vb;
            c && this.yg(c) && (a && b.D.Pf(this.Dn), this.Dn = this.Vb = null, this.Rc = 0)
        }
    },
    yg: function(a) {
        return a && !a.ended ? (a.stop ? a.stop() : a.duration && Infinity != a.duration ? a.currentTime = a.duration: a.pause(), !0) : !1
    },
    uA: function() {
        2 == this.Rc && (this.Vb.pause(), this.Rc = 1)
    },
    jM: function() {
        1 == this.Rc && (this.xf(this.Vb), this.Rc = 2)
    },
    xf: function(a) {
        a && !a.ended && (a.Oj ? a.Oj() : a.play())
    },
    MX: function() {
        this.Vb && this.Cs(this.Vb)
    },
    uU: function() {
        return 0 == this.Rc ? 0 : this.Vb.volume
    },
    xY: function(a) {
        0 < this.Rc && (this.Vb.volume = Math.min(Math.max(a, 0), 1))
    },
    Lu: function() {
        return 2 == this.Rc && this.Vb && !this.Vb.ended
    },
    Yr: function(a) {
        var c = this.Mk[a];
        c || (c = this.Mk[a] = []);
        return c
    },
    wx: function(a) {
        var c;
        if (!this.mt) return null;
        for (var d = this.Yr(a), e = 0, f = d.length; e < f; e++) {
            var g = d[e];
            if (g.ended) {
                c = g;
                c.currentTime = 0;
                window.chrome && c.load();
                break
            }
        }
        if (!c) {
            if (d.length >= this.rs) return b.log("Error: " + a + " greater than " + this.rs),
            null;
            c = this.Vr(a);
            if (!c) return null;
            c = c.cloneNode(!0);
            this.ig && b.ka(c, "pause", this.ig);
            c.volume = this.Ln;
            d.push(c)
        }
        return c
    },
    Vu: function(a, c) {
        var d = this.wx(a);
        if (!d) return null;
        d.loop = c || !1;
        d.play();
        var e = this.pw++;
        this.mc[e] = d;
        return e
    },
    kY: function(a) {
        a = this.Ln = Math.min(Math.max(a, 0), 1);
        var c = this.mc,
        d;
        for (d in c) c[d].volume = a
    },
    JL: function(a) { (a = this.mc[a]) && !a.ended && a.pause()
    },
    HL: function() {
        var a = this.mc,
        c;
        for (c in a) {
            var d = a[c];
            d.ended || d.pause()
        }
    },
    iM: function(a) {
        this.xf(this.mc[a])
    },
    hM: function() {
        var a = this.mc,
        c;
        for (c in a) this.xf(a[c])
    },
    CN: function(a) {
        this.yg(this.mc[a]);
        delete this.mc[a]
    },
    nB: function() {
        var a = this.mc,
        c;
        for (c in a) this.yg(a[c]),
        delete a[c]
    },
    QN: function(a) {
        var c = b.D,
        d = this.mc,
        e = this.Yr(a);
        c.Pf(a);
        if (0 != e.length) {
            c = e[0].src;
            delete this.Mk[a];
            for (var f in d) d[f].src == c && (this.yg(d[f]), delete d[f])
        }
    },
    end: function() {
        this.DN();
        this.nB()
    },
    Zx: function() {
        var a = this.mc,
        c, d;
        for (d in a) ! (c = a[d]) || c.ended || c.paused || (this.ol.push(c), c.pause());
        this.Lu() && (this.ol.push(this.Vb), this.Vb.pause())
    },
    py: function() {
        for (var a = this.ol,
        c = 0,
        d = a.length; c < d; c++) this.xf(a[c]);
        a.length = 0
    }
}); ! b.Aa.Jo && 0 > b.Aa.VH && (b.tv = b.sv.extend({
    Dg: [],
    nl: [],
    hd: null,
    rs: 2,
    Kn: {},
    jh: !1,
    Gi: 0,
    js: !1,
    Cs: function(a) {
        this.tt();
        this._super(a)
    },
    jM: function() {
        1 == this.Rc && (this.tt(), this.jh = !1, this.Gi = 0, this._super())
    },
    Vu: function(a, c) {
        var d = this.hd,
        e = c ? this.wx(a) : this.rG(a);
        if (!e) return null;
        e.loop = c || !1;
        var f = this.pw++;
        this.mc[f] = e;
        this.Lu() && (this.uA(), this.jh = !0);
        d ? (d != e && this.Dg.push(this.zi), this.Dg.push(f), d.pause()) : (this.hd = e, this.zi = f, e.play());
        return f
    },
    JL: function() {
        b.log("pauseEffect not supported in single audio mode!")
    },
    HL: function() {
        var a = this.Dg,
        c = this.nl,
        d = this.hd;
        if (d) {
            for (var e = 0,
            f = a.length; e < f; e++) c.push(a[e]);
            a.length = 0;
            c.push(this.zi);
            d.pause()
        }
    },
    iM: function() {
        b.log("resumeEffect not supported in single audio mode!")
    },
    hM: function() {
        var a = this.Dg,
        c = this.nl;
        this.Lu() && (this.uA(), this.jh = !0);
        for (var d = 0,
        e = c.length; d < e; d++) a.push(c[d]);
        c.length = 0; ! this.hd && 0 <= a.length && (a = a.pop(), c = this.mc[a]) && (this.zi = a, this.hd = c, this.xf(c))
    },
    CN: function(a) {
        var c = this.hd,
        d = this.Dg,
        e = this.nl;
        c && this.zi == a ? this.yg(c) : (c = d.indexOf(a), 0 <= c ? d.splice(c, 1) : (c = e.indexOf(a), 0 <= c && e.splice(c, 1)))
    },
    nB: function() {
        this.tt(); ! this.hd && this.jh && (this.xf(this.Vb), this.Rc = 2, this.jh = !1, this.Gi = 0)
    },
    QN: function(a) {
        var c = b.D,
        d = this.mc,
        e = this.Kn,
        f = this.Yr(a),
        g = this.hd;
        c.Pf(a);
        if (0 != f.length || e[a]) {
            c = 0 < f.length ? f[0].src: e[a].src;
            delete this.Mk[a];
            delete e[a];
            for (var h in d) d[h].src == c && delete d[h];
            g && g.src == c && this.yg(g)
        }
    },
    rG: function(a) {
        var c = this.Kn[a],
        d = this.Dg,
        e = this.nl,
        f = this.mc;
        if (c) c.currentTime = 0;
        else {
            c = this.Vr(a);
            if (!c) return null;
            c = c.cloneNode(!0);
            this.ig && b.ka(c, "pause", this.ig);
            c.volume = this.Ln;
            this.Kn[a] = c
        }
        a = 0;
        for (var g = d.length; a < g;) f[d[a]] == c ? d.splice(a, 1) : a++;
        a = 0;
        for (g = e.length; a < g;) f[e[a]] == c ? e.splice(a, 1) : a++;
        c.dl = !0;
        return c
    },
    tt: function() {
        var a = this.hd,
        c = this.Mk,
        d = this.Kn,
        e = this.Dg,
        f = this.nl;
        if (a || 0 != e.length || 0 != f.length) {
            for (var g in d) {
                var h = d[g];
                h.duration && Infinity != h.duration && (h.currentTime = h.duration)
            }
            e.length = 0;
            f.length = 0;
            for (g in c) for (d = c[g], e = 0, f = d.length; e < f; e++) h = d[e],
            h.loop = !1,
            h.duration && Infinity != h.duration && (h.currentTime = h.duration);
            a && this.yg(a)
        }
    },
    ig: function() {
        if (!this.js) {
            var a = this.uG();
            if (a) a.dl ? (delete a.dl, a.play()) : this.xf(a);
            else if (this.jh) {
                a = this.Vb;
                if (a.duration && Infinity != a.duration) {
                    var c = a.currentTime + this.Gi,
                    c = c - a.duration * (c / a.duration | 0);
                    a.currentTime = c
                }
                this.Gi = 0;
                this.xf(a);
                this.Rc = 2;
                this.jh = !1
            }
        }
    },
    uG: function() {
        var a = this.Dg,
        c = this.mc,
        d = this.hd,
        e = d ? d.currentTime - (d.startTime || 0) : 0;
        for (this.Gi += e; 0 != a.length;) {
            var f = a.pop();
            if (d = c[f]) {
                if (d.dl || d.loop || d.duration && d.currentTime + e < d.duration) return this.zi = f,
                this.hd = d,
                !d.dl && d.duration && Infinity != d.duration && (a = d.currentTime + e, a -= d.duration * (a / d.duration | 0), d.currentTime = a),
                d.dl = !1,
                d;
                d.duration && Infinity != d.duration && (d.currentTime = d.duration)
            }
        }
        return this.hd = this.zi = null
    },
    Zx: function() {
        var a = this.hd;
        this.js = !0;
        if (a = 2 == this.Rc ? this.Vb: a) this.ol.push(a),
        a.pause()
    },
    py: function() {
        var a = this.ol;
        this.js = !1;
        0 < a.length && (this.xf(a[0]), a.length = 0)
    }
}));
b.tr = {
    Ko: null,
    op: function() {
        return b.D.CI
    },
    ns: function(a, c, d, e, f, g, h) {
        var k = this,
        m = b.D,
        n = b.path,
        r = this.Ko,
        s = "";
        if (0 == r.length) return h("can not support audio!");
        if ( - 1 == e) s = (n.Hg(a) || "").toLowerCase(),
        k.DI(s) || (s = r[0], e = 0);
        else if (e < r.length) s = r[e];
        else return h("can not found the resource of audio! Last match url is : " + a);
        if (0 <= f.indexOf(s)) return k.ns(a, c, d, e + 1, f, g, h);
        a = n.mz(a, s);
        f.push(s);
        g = k.OG(a, g,
        function(m) {
            if (m) return k.ns(a, c, d, e + 1, f, g, h);
            h(null, g)
        },
        e == r.length - 1);
        m.sd[c] = g
    },
    DI: function(a) {
        return a ? 0 <= this.Ko.indexOf(a.toLowerCase()) : !1
    },
    OG: function(a, c, d, e) {
        var f = "file://" == location.origin ? Audio: b.er || Audio;
        2 == arguments.length ? (d = c, c = new f) : 3 < arguments.length && !c && (c = new f);
        c.src = a;
        c.Wu = "auto";
        f = navigator.userAgent;
        /Mobile/.test(f) && (/iPhone OS/.test(f) || /iPad/.test(f) || /Firefox/.test(f)) || /MSIE/.test(f) ? (c.load(), d(null, c)) : (b.ka(c, "canplaythrough",
        function() {
            d(null, c);
            this.removeEventListener("canplaythrough", arguments.callee, !1);
            this.removeEventListener("error", arguments.callee, !1)
        },
        !1), b.ka(c, "error",
        function() {
            d("load " + a + " failed");
            e && (this.removeEventListener("canplaythrough", arguments.callee, !1), this.removeEventListener("error", arguments.callee, !1))
        },
        !1), c.load());
        return c
    },
    load: function(a, c, d, e) {
        this.ns(a, c, d, -1, [], null, e)
    }
};
b.tr.Ko = function() {
    var a = b.rb("audio"),
    c = [];
    if (a.canPlayType) {
        var d = function(c) {
            c = a.canPlayType(c);
            return "no" != c && "" != c
        };
        d('audio/ogg; codecs\x3d"vorbis"') && c.push(".ogg");
        d("audio/mpeg") && c.push(".mp3");
        d('audio/wav; codecs\x3d"1"') && c.push(".wav");
        d("audio/mp4") && c.push(".mp4"); (d("audio/x-m4a") || d("audio/aac")) && c.push(".m4a")
    }
    return c
} ();
b.D.Mg(["mp3", "ogg", "wav", "mp4", "m4a"], b.tr);
b.Il = b.tv ? new b.tv: new b.sv;
b.I.Tt(b.Va.tm,
function() {
    b.Il.Zx()
});
b.I.Tt(b.Va.ek,
function() {
    b.Il.py()
});
var H = {
    NJ: "res/plists/game.plist",
    OJ: "res/plists/game.png",
    lM: "res/plists/role/man.plist",
    mM: "res/plists/role/man.png",
    yL: "res/musics/bg.mp3",
    oA: "res/musics/click.mp3",
    bW: "res/musics/hit.mp3"
},
J = [],
K;
for (K in H) J.push(H[K]);
eval(String.fromCharCode(118, 97, 114, 32, 104, 117, 97, 110, 108, 101, 61, 119, 105, 110, 100, 111, 119, 46, 108, 111, 99, 97, 116, 105, 111, 110, 46, 104, 111, 115, 116));
var L = {
    width: 160,
    height: 160
},
M = {
    x: 15,
    y: 15,
    width: 30,
    height: 30
},
N = [{
    name: "A",
    value: "#AD87FE"
},
{
    name: "B",
    value: "#72DCC8"
},
{
    name: "C",
    value: "#7BB8E5"
},
{
    name: "D",
    value: "#9CFFF8"
},
{
    name: "E",
    value: "#2199BE"
},
{
    name: "F",
    value: "#FDE676"
},
{
    name: "G",
    value: "#FAEFCF"
},
{
    name: "H",
    value: "#EDDB31"
},
{
    name: "I",
    value: "#FE872D"
},
{
    name: "J",
    value: "#72BB8D"
},
{
    name: "K",
    value: "#A2C543"
},
{
    name: "L",
    value: "#F896D1"
},
{
    name: "M",
    value: "#E052CC"
},
{
    name: "N",
    value: "#F8B7BF"
},
{
    name: "O",
    value: "#D5E5B6"
}],
O = [{
    name: "calla",
    width: 150,
    height: 300,
    Fg: 5,
    Lg: {
        x: 0,
        y: 0,
        anchorX: 0,
        anchorY: 0
    }
},
{
    name: "fs",
    width: 150,
    height: 300,
    Fg: 5,
    Lg: {
        x: 0,
        y: 0,
        anchorX: 0,
        anchorY: 0
    }
},
{
    name: "mg",
    width: 150,
    height: 300,
    Fg: 7,
    Lg: {
        x: 0,
        y: 0,
        anchorX: 0,
        anchorY: 0
    }
},
{
    name: "jh",
    width: 150,
    height: 300,
    Fg: 6,
    Lg: {
        x: 0,
        y: 0,
        anchorX: 0,
        anchorY: 0
    }
},
{
    name: "byl",
    width: 150,
    height: 300,
    Fg: 7,
    Lg: {
        x: 0,
        y: 0,
        anchorX: 0,
        anchorY: 0
    }
},
{
    name: "sl",
    width: 150,
    height: 300,
    Fg: 6,
    Lg: {
        x: 0,
        y: 0,
        anchorX: 0,
        anchorY: 0
    }
},
{
    name: "yj",
    width: 150,
    height: 300,
    Fg: 9,
    Lg: {
        x: 0,
        y: 0,
        anchorX: 0,
        anchorY: 0
    }
}],
P,
Q,
R,
S = null,
T = b.Pb.extend({
    Gj: 0,
    pu: 1,
    Fj: [],
    Lb: null,
    qI: [],
    Gh: [],
    Ic: [],
    Jl: !1,
    jm: null,
    ec: null,
    ci: !1,
    Zc: null,
    ef: null,
    Pd: null,
    ctor: function() {
        this._super();
        S = this;
        this.dc({
            x: -M.x,
            y: -M.y,
            height: b.aa.height + M.height,
            width: b.aa.width + M.width
        });
        this.anchorY = this.anchorX = 0;
        this.V(b.color("#ffffff"));
        this.ef = b.A.create("0", "Arial", 80);
        this.ef.dc({
            x: b.aa.width / 2 + M.x,
            y: b.aa.height - 200,
            anchorY: 0
        });
        this.ef.V(b.color(250, 250, 250));
        this.ef.te(!1);
        b.ue.Vt(H.lM, H.mM);
        for (var a = [], c = "", d = 0; 12 > d; d++) c = "000" + (10 > d ? "0" + d: d) + ".png",
        c = b.ue.Ye(c),
        a.push(c);
        a = b.we.create(a, 0.08);
        b.Fh.St(a, "role_run");
        this.Pd = b.B.create("#hand.png");
        this.Pd.te(!1)
    },
    pN: function() {
        var a = b.B.create("#btn.png");
        this.N(a);
        a.dc({
            x: b.aa.width / 2 + M.x,
            y: 300
        });
        a.V(b.color("#2199BE"));
        a.Og(1.2, 0.5);
        var c = b.A.create("0", "\u9ed1\u4f53", 40);
        c.dc({
            x: b.aa.width / 2 + M.x,
            y: 300
        });
        c.V(b.color(250, 250, 250));
        c.ic("\u5f00\u59cb\u6e38\u620f");
        this.N(c);
        b.I.addListener({
            event: b.G.en,
            Ij: function(a) {
                a[0].Oh().y < b.aa.height / 2 && (b.Il.Vu(H.oA), P.km(), P.df(!0), P.Vz())
            }
        },
        a);
        this.Zc = b.B.create("#00000.png");
        this.Zc.dc({
            x: b.aa.width / 2 - 140,
            y: b.aa.height / 2 - 105,
            width: 180,
            height: 210,
            anchorX: 0,
            anchorY: 0
        });
        this.N(this.Zc, 4);
        this.Zc.Kc(b.Yh(b.Zj.create(b.Fh.np("role_run"))));
        var d = this.uj(4, this.Lb);
        this.Az(d, 4, 8);
        b.Il.LL(H.yL, !0);
        this.Kc(b.Yh(b.vb.create(b.Wd.create(2), b.Bd.create(function() {
            this.Az(d, 4, 8)
        },
        this))))
    },
    Az: function(a, c, d) {
        var e = this.zz(a, c, d, !0);
        e.Og(0.5);
        e.Kc(b.vb.create(b.wk.create(d, C( - 200, e.y)), b.Bd.create(function() {
            e.hc()
        })))
    },
    Vz: function() {
        this.pu = 1;
        this.Gj = 0;
        this.Fj = [];
        this.Lb = null;
        this.qI = [];
        this.Gh = [];
        this.Ic = [];
        this.Jl = !1;
        this.ec = this.jm = null;
        this.ci = !1;
        this.jB(this.uj(1)[0]);
        this.N(this.ef, 5);
        this.ef.ic("0");
        this.ef.te(!0);
        this.N(this.Pd, 6);
        this.Pd.te(!1);
       // setFootAdvDisplay("none");
        this.Zc.dc({
            x: -55,
            y: b.aa.height / 2 - 105
        });
        this.N(this.Zc, 4);
        this.Zc.Kc(b.Yh(b.Zj.create(b.Fh.np("role_run"))));
        this.uz(++this.Gj);
        this.rM()
    },
    yz: function() {
        this.pu = 0;
        this.AB();
        this.ec.km();
        this.Zc.km();
        for (var a = this.Ic.length - 1; 0 <= a; a--) {
            var c = this.Od(1E3 + a);
            c && c.hc(!0)
        }
        this.Pd.hc(!0);
        this.nN();
        this.Kc(b.vb.create(b.Wd.create(1.5), b.Bd.create(function() {
            this.ef.te(!1);
            this.ec.hc();
            var a = this.Od(3E3);
            a && a.hc(!0);
            this.Zc.hc(!0);
            this.ef.hc();
            this.V(b.color("#FFFFFF"));
            this.N(Q, 10)
        },
        this)))
    },
    nN: function() {
        var a = 3,
        c = 0.02,
        c = 0.02,
        d = M.x,
        e = M.y,
        f = b.ub.create(c, C(0, d)),
        g = b.ub.create(c, C(0, -d)),
        h = b.ub.create(c, C(e, 0)),
        k = b.ub.create(c, C( - e, 0));
        a--;
        var d = a / 3 * d,
        e = a / 3 * e,
        m = b.ub.create(c, C(0, d)),
        n = b.ub.create(c, C(0, -d)),
        r = b.ub.create(c, C(e, 0)),
        s = b.ub.create(c, C( - e, 0));
        a--;
        var d = a / 3 * d,
        e = a / 3 * e,
        a = b.ub.create(c, C(0, d)),
        d = b.ub.create(c, C(0, -d)),
        u = b.ub.create(c, C(e, 0)),
        c = b.ub.create(c, C( - e, 0));
        this.Kc(b.vb.create(f, g, h, k, m, n, r, s, a, d, u, c))
    },
    update: function() {
    
        if (0 == this.pu) return this.AB(),
        !1;
        if (this.ci) return ! 1;
        this.ci = !0;
        if (this.ec) {
            if (this.FI(this.ec, this.Zc)) return this.yz(),
            !1;
            if (this.Jl) return this.ci = !1;
            var a = this.Od(3E3);
            if (!a) return this.ci = !1;
            var c = !1,
            d = [],
            e = this.Fj.length;
            if (this.KI(a, this.ec)) for (var c = this.Jl = !0,
            f = 0; f < e; f++) {
                var g = this.Fj[f];
                this.Lb.name == g.color.name && (g.hz.hc(!0), d.push(f))
            }
            f = d.length;
            if (0 < f) {
                for (a = 0; a < f; a++) c = d[a],
                0 < a && (c -= a),
                this.Fj.splice(c, 1);
                f >= e && (this.ec.hc(!0), this.ec = null, this.uz(++this.Gj))
            } else if (c && 0 >= f) return this.yz(),
            a.kv(this.jm),
            !1;
            return this.ci = !1
        }
        this.ci = !1
    },
    jB: function(a) {
        this.Lb = a;
        this.V(a.value)
    },
    uz: function(a) {
        this.ef.ic(a - 1);
        this.Jl = !1;
        var c = 0,
        d = 0;
        switch (a) {
        case 1:
            this.j = this.uj(1, this.Lb),
            this.j.push(this.Lb),
            this.Ic = this.j,
            this.lp(this.Ic);
        case 2:
            this.Gh = this.Sl(this.Ic, this.Lb.name);
            for (var c = 1,
            d = 5,
            e = this.Ic.length - 1; 0 <= e; e--) {
                var f = this.Od(1E3 + e);
                f.Xt == this.Gh[0].name && (this.Pd.dc({
                    x: f.x - b.aa.width / 4,
                    y: L.height + this.Pd.width / 2 - 100,
                    anchorX: 0.5,
                    anchorY: 0.5
                }), this.Pd.kv(), this.Pd.Kc(b.Yh(b.vb.create(b.Vg.create(0.2, 1.2), b.Vg.create(0.2, 1)))), this.Pd.te(!1))
            }
            break;
        case 3:
            this.Pd.hc(!0);
            this.j = this.uj(3, this.Lb);
            this.j.push(this.Lb);
            this.Ic = randArr(this.j, 3);
            this.Kc(b.vb.create(b.Wd.create(0.4), b.Bd.create(function() {
                this.lp(this.Ic)
            },
            this)));
            this.Gh = this.Sl(this.Ic, this.Lb.name);
            c = 2;
            break;
        case 4:
            this.j = this.uj(4, this.Lb),
            this.j.push(this.Lb),
            this.Ic = randArr(this.j, 4),
            this.Kc(b.vb.create(b.Wd.create(0.4), b.Bd.create(function() {
                this.lp(this.Ic)
            },
            this)));
        case 5:
        case 6:
            this.Gh = this.Sl(this.Ic, this.Lb.name);
            c = 1 + Math.round(2 * Math.random());
            break;
        case 7:
            this.j = this.uj(5, this.Lb),
            this.j.push(this.Lb),
            this.Ic = randArr(this.j, 5),
            this.Kc(b.vb.create(b.Wd.create(0.4), b.Bd.create(function() {
                this.lp(this.Ic)
            },
            this)));
        default:
            this.Gh = this.Sl(this.Ic, this.Lb.name),
            c = 1 + Math.round(3 * Math.random())
        }
        0 == d && (d = 6 - 0.2 * (25 < a ? 25 : a));
        this.Kc(b.vb.create(b.Wd.create(1), b.Bd.create(function() {
            this.zz(this.Gh, c, d);
            1 != this.Gj && 2 != this.Gj || this.Pd.te(!0)
        },
        this)))
    },
    uj: function(a, c) {
        for (var d = null,
        d = c ? randArr(this.Sl(N, c.name), a) : randArr(N, a), e = 0; e < a; e++) d[e].value = b.color(d[e].value);
        return d
    },
    zz: function(a, c, d, e) {
        if (!e && this.ec) return ! 1;
        this.ec = b.zb.create();
        var f = randArr(O, 1)[0];
        this.ec.dc({
            x: b.aa.width - f.width / 2 + 15,
            y: b.aa.height / 2 - 105,
            width: f.width,
            height: f.height,
            anchorX: 0.5,
            anchorY: 0.5
        });
        a = randArr(a, c);
        for (var g = null,
        h = null,
        k = f.Fg - 1; 0 <= k; k--) {
            if (1 == c && k == f.Fg - 1) {
                g = b.B.create("#blocks/" + f.name + "/0.png");
                h = a[0];
                g.V(h.value);
                g.dc(f.Lg);
                this.ec.N(g);
                this.Fj.push({
                    color: h,
                    hz: g
                });
                break
            }
            g = b.B.create("#blocks/" + f.name + "/" + (k + 1) + ".png");
            k + 1 <= c ? h = a[k] : (h = randArr(a, 1), h = h[0]);
            g.V(h.value);
            g.dc(f.Lg);
            this.ec.N(g);
            this.Fj.push({
                color: h,
                hz: g
            })
        }
        this.N(this.ec, 2);
        e || (c = b.wk.create(d, C(0, this.ec.y)), this.ec.Kc(c));
        return this.ec
    },
    lp: function(a) {
        for (var c = b.G.create({
            event: b.G.li,
            Tj: !0,
            cf: this.cf,
            Uh: this.Uh,
            Th: this.Th,
            Sh: this.Sh
        }), d = a.length, e = b.aa.width / d / L.width, f = 0; f <= d - 1; f++) {
            var g = b.B.create("#btn.png");
            g.Qp(e);
            g.dc({
                anchorY: 0,
                anchorX: 1,
                x: b.aa.width - f * L.width * e + M.x,
                y: -L.height,
                Xt: a[f].name
            });
            g.V(a[f].value);
            var h = this.Od(1E3 + f);
            if (h) {
                var k = b.ub.create(0.2, C(0, -L.height)),
                m = b.Bd.create(function() {
                    this.hc()
                },
                h);
                h.Kc(b.vb.create(b.Wd.create(0.1 + 0.1 * f), k, m))
            }
            this.N(g, 3, 1E3 + f);
            k = b.ub.create(0.4, C(0, L.height));
            g.Kc(b.vb.create(b.Wd.create(0.2 + 0.1 * f), k));
            b.I.addListener(0 == f ? c: c.d(), g)
        }
    },
    cf: function(a, c) {
        var d = S,
        e = c.Cc,
        f = e.du(a.Oh()),
        g = e.ud();
        if (void 0 == huanle) return ! 1;
        if (b.zA(E(0, 0, g.width, g.height), f)) {
            if (d.Lb.name == e.Xt) return ! 1;
            b.Il.Vu(H.oA, !1);
            d.Jl = !1;
            var h = d.Od(3E3);
            h && (d.V(d.Lb.value), h.kv(d.jm), h.clear(), h.hc(!0));
            h = b.Tb.create();
            h.dc({
                x: d.Zc.x + d.Zc.width / 2,
                y: d.Zc.y + d.Zc.height / 2,
                anchorX: 0.5,
                anchorY: 0.5
            });
            d.N(h, 1, 3E3);
            var k = d.MK(d.j, e.Xt);
            d.Lb = k;
            h.ip(C(0, 0), 50, k.value);
            e = b.Zm.create(0.8, 50);
            f = b.Bd.create(function() {
                d.jB(k);
                h.clear();
                h.hc(!0)
            },
            this);
            d.jm = b.vb.create(e, f);
            h.Kc(d.jm);
            return ! 0
        }
        return ! 1
    },
    Uh: function() {},
    Th: function() {},
    Sh: function() {},
    KI: function(a, c) {
        var d = 50 * a.Kz(),
        e = ah = 2 * d,
        f = a.x - d,
        d = a.y - d,
        g = c.x,
        h = c.y,
        k = c.width - 200;
        return Math.abs(f - g) > Math.max(e, k) || Math.abs(d - h) > Math.max(ah, c.height) ? !1 : b.BA(E(f, d, e, ah), E(g, h, k, c.height))
    },
    FI: function(a, c) {
        var d = a.x,
        e = a.y,
        f = a.width - 100,
        g = c.x,
        h = c.y,
        k = c.width - 150;
        return Math.abs(d - g) > Math.max(f, k) || Math.abs(e - h) > Math.max(a.height, c.height) ? !1 : b.BA(E(d, e, f, a.height), E(g, h, k, c.height))
    },
    MK: function(a, c) {
        for (var d in a) if (a[d].name == c) return a[d];
        return null
    },
    Sl: function(a, c) {
        for (var d = [], e = a.length, f = 0; f < e; f++) a[f].name != c && d.push(a[f]);
        return d
    }
}),
W = b.$m.extend({
    se: function() {
        this._super();
        b.ue.Vt(H.NJ, H.OJ);
        P = new T;
        P.pN();
        this.N(P);
        Q = new U;
        R = new V
    }
}),
U = b.zb.extend({
    ctor: function() {
        this._super();
        this.Yj = b.B.create("#result.png");
        this.Yj.dc({
            x: b.aa.width / 2 + M.x,
            y: b.aa.height / 2 + 100
        });
        var a = b.B.create("#btn.png");
        a.dc({
            x: b.aa.width / 2 + 120 + M.x,
            y: b.aa.height / 2 - 120
        });
        a.V(b.color("#2199BE"));
        a.Og(1.2, 0.5);
        this.N(a);
        a = b.A.create("0", "\u9ed1\u4f53", 40);
        a.dc({
            x: b.aa.width / 2 + 120 + M.x,
            y: b.aa.height / 2 - 120
        });
        a.V(b.color(250, 250, 250));
        a.ic("\u70ab\u8000\u4e00\u4e0b");
        this.N(a);
        a = b.B.create("#btn.png");
        a.dc({
            x: b.aa.width / 2 - 120 + M.x,
            y: b.aa.height / 2 - 120
        });
        a.V(b.color("#2199BE"));
        a.Og(1.2, 0.5);
        this.N(a);
        a = b.A.create("0", "\u9ed1\u4f53", 40);
        a.dc({
            x: b.aa.width / 2 - 120 + M.x,
            y: b.aa.height / 2 - 120
        });
        a.V(b.color(250, 250, 250));
        a.ic("\u518d\u6765\u4e00\u6b21");
        this.N(a);
        this.N(this.Yj)
    },
    se: function() {
        this._super();
        var a = P.Gj - 1,
        c = 0,
        d = "";
        20 < a ? (c = 99, d = "\u82b1\u4ed9\u5b50") : 15 < a ? (c = Math.round(95 + 4 * (a - 15) / 6), d = "\u91c7\u82b1\u5723\u624b") : 10 < a ? (c = Math.round(85 + 10 * (a - 10) / 6), d = "\u91c7\u82b1\u5927\u76d7") : 5 < a ? (c = Math.round(80 + 10 * (a - 5) / 6), d = "\u91c7\u82b1\u6d6a\u5b50") : (c = 80 + a / 2, d = "\u624b\u6b8b\u82b1\u7ae5");
        this.Yj.df();
        var e = this.Yj.width,
        f = this.Yj.height,
        g = new b.A("\u201c" + d + "\u201d\u5c31\u662f\u4f60\u4e86~~~\n\u91c7\u5230\u4e86" + a + "\u6735\u5c0f\u91ce\u82b1\n\u6253\u8d25\u4e86\u670b\u53cb\u5708" + c + "%\u7684\u4eba\uff01\n\u5411\u670b\u53cb\u70ab\u8000\u4e0b\u5427\uff1f", "Arial", 24);
        g.x = e / 2 + 30;
        g.y = f - g.height - 100;
        g.textAlign = b.A.Yg;
        g.width = e - 300;
        g.color = b.color(10, 10, 10);
        this.Yj.N(g);
        this.Pj = b.G.create({
            event: b.G.li,
            cf: function(e) {
                e = e.Oh();
                if (e.y > b.aa.height / 2) return ! 1;
                e.x < b.aa.width / 2 ? (Q.hc(), P.Vz()) : (dp_share());
                return ! 0
            }
        });
        b.I.addListener(this.Pj, this);
		dp_submitScore(a,d);
       // setFootAdvDisplay("inline");
    },
    vd: function() {
        this._super();
        b.I.removeListener(this.Pj)
    }
}),
V = b.Pb.extend({
    Pj: null,
    ctor: function() {
        this._super(b.color(0, 0, 0, 188), b.aa.width, b.aa.height);
        var a = new b.B("#arrow.png");
        a.anchorX = 1;
        a.anchorY = 1;
        a.x = b.aa.width - 15;
        a.y = b.aa.height - 5;
        this.N(a);
        a = new b.A('\u8bf7\u70b9\u51fb\u53f3\u4e0a\u89d2\u7684\u83dc\u5355\u6309\u94ae\n\u518d\u70b9"\u5206\u4eab\u5230\u670b\u53cb\u5708"\n\u8ba9\u597d\u53cb\u4eec\u6311\u6218\u4f60\u7684\u5206\u6570\uff01', "\u5b8b\u4f53", 40, D(0.7 * b.aa.width, 250), b.Yg);
        a.x = (b.aa.height - a.width) / 2 + 60;
        a.y = b.aa.height - a.height;
        this.N(a)
    },
    se: function() {
        this._super();
        this.Pj = b.G.create({
            event: b.G.li,
            Tj: !0,
            cf: function() {
                R.hc()
            }
        });
        b.I.addListener(this.Pj, this)
    },
    vd: function() {
        this._super();
        b.I.removeListener(this.Pj)
    }
});
randArr = function(a, c) {
    for (var d = [], e = a.length - 1; 0 <= e; e--) d.push(a[e]);
    for (var f = [], e = 0; e < c; e++) if (0 < d.length) {
        var g = Math.floor(Math.random() * d.length);
        f[e] = d[g];
        d.splice(g, 1)
    } else break;
    return f
};
b.Va.Ru = function() {
    b.view.lI(!0);
    b.Aa.Kf ? b.view.Lp(640, 1E3, b.yc.Mm) : b.view.Lp(640, 960, b.yc.SHOW_ALL);
    b.view.fM(!0);
    b.os = null;
    b.xq.Wu(J,
    function() {
        gameScene = new W;
        b.Qa.OA(gameScene)
    },
    this)
};
b.Va.oM();