/**
 * @license
 * lodash 3.10.1 (Custom Build) <https://lodash.com/>
 * Build: `lodash compat exports="amd" -d -o /rdisks/sf-netapp01-jenkinbuild/workspace/SkateboardPlatform-MessageBus-mainline/target/checkout/target/messagebus/lodash.js include="main,after,arraySome,debounce,createForEach,arrayEach,baseEach,baseAssign,arrayFilter,isEqual,keys,arrayMap,throttle,root,isObject,now,bindCallback,isArray,baseForOwn,createBaseEach,baseCopy,baseIsEqual,getNative,isArrayLike,shimKeys,each,extend,bind,reduce,defaults,map,any,filter,find,contains,clone,without,cloneDeep,isPlainObject"`
 * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
 * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
 * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
 * Available under MIT license <https://lodash.com/license>
 */

/*!
 *
 * Copyright 2009-2012 Kris Kowal under the terms of the MIT
 * license found at http://github.com/kriskowal/q/raw/master/LICENSE
 *
 * With parts by Tyler Close
 * Copyright 2007-2009 Tyler Close under the terms of the MIT X license found
 * at http://www.opensource.org/licenses/mit-license.html
 * Forked at ref_send.js version: 2009-05-11
 *
 * With parts by Mark Miller
 * Copyright (C) 2011 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */

//     Underscore.js 1.8.3
//     http://underscorejs.org
//     (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
//     Underscore may be freely distributed under the MIT license.

/**
 * riveter - Mix-in, inheritance and constructor extend behavior for your JavaScript enjoyment.
 * © 2012 - Copyright appendTo, LLC 
 * Author(s): Jim Cowart, Nicholas Cloud, Doug Neiner
 * Version: v0.1.2
 * Url: https://github.com/a2labs/riveter
 * License(s): MIT
 */

/**
 * Fast UUID generator, RFC4122 version 4 compliant.
 * @author Jeff Ward (jcward.com).
 * @license MIT license
 * @link http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136
 **/

/*!
 * pixi.js - v4.8.8
 * Compiled Sun, 02 Jun 2019 22:42:56 UTC
 *
 * pixi.js is licensed under the MIT License.
 * http://www.opensource.org/licenses/mit-license
 */

/*! howler.js v2.1.2 | (c) 2013-2019, James Simpson of GoldFire Studios | MIT License | howlerjs.com */

/*! Spatial Plugin */

/*!
 * VERSION: 1.20.1
 * DATE: 2017-06-29
 * UPDATES AND DOCS AT: http://greensock.com
 * 
 * Includes all of the following: TweenLite, TweenMax, TimelineLite, TimelineMax, EasePack, CSSPlugin, RoundPropsPlugin, BezierPlugin, AttrPlugin, DirectionalRotationPlugin
 *
 * @license Copyright (c) 2008-2017, GreenSock. All rights reserved.
 * This work is subject to the terms at http://greensock.com/standard-license or for
 * Club GreenSock members, the software agreement that was issued with your membership.
 * 
 * @author: Jack Doyle, jack@greensock.com
 **/

/*!
 * pixi-particles - v2.1.5
 * Compiled Tue, 14 Mar 2017 22:08:59 UTC
 *
 * pixi-particles is licensed under the MIT License.
 * http://www.opensource.org/licenses/mit-license
 */

/*!
 * VERSION: 1.20.1
 * DATE: 2017-06-29
 * UPDATES AND DOCS AT: http://greensock.com
 *
 * @license Copyright (c) 2008-2017, GreenSock. All rights reserved.
 * This work is subject to the terms at http://greensock.com/standard-license or for
 * Club GreenSock members, the software agreement that was issued with your membership.
 * 
 * @author: Jack Doyle, jack@greensock.com
 */

/*!
 * VERSION: 0.1.2
 * DATE: 2017-06-29
 * UPDATES AND DOCS AT: http://greensock.com
 *
 * @license Copyright (c) 2008-2017, GreenSock. All rights reserved.
 * PixiPlugin is subject to the terms at http://greensock.com/standard-license or for
 * Club GreenSock members, the software agreement that was issued with your membership.
 *
 * @author: Jack Doyle, jack@greensock.com
 */

! function() {
    define("skbJet/component/utils/Map", [], function() {
            function e() {
                var e = {};
                this.clear = function() {
                    for (var t in e) delete e[t]
                }, this.set = function(t, i) {
                    e[t] = i
                }, this.get = function(t) {
                    return e[t]
                }, this.delete = function(t) {
                    delete e[t]
                }, this.keys = function() {
                    var t = [];
                    for (var i in e) t.push(i);
                    return t
                }, this.size = function() {
                    return this.keys().length
                }
            }
            return window.Map ? window.Map : (window.Map = e, e)
        }), define("skbJet/component/gameMsgBus/GameMsgBus", ["skbJet/component/utils/Map"], function(e) {
            function t(e) {
                setTimeout(function() {
                    o.publish("error", {
                        errorCode: "GM-003",
                        message: "" + e
                    })
                }, 3)
            }

            function i(e, t) {
                setTimeout(function() {
                    t(e)
                }, 0)
            }

            function n(e, t, i) {
                setTimeout(function() {
                    a[e](t, i)
                }, 0)
            }
            var r = new e,
                o = {},
                a = [];
            return o.subscribe = function(e, t) {
                if (!e) return o;
                if (!t) return o;
                var i = r.get(e);
                return i || (i = [], r.set(e, i)), i.indexOf(t) < 0 && i.push(t), o
            }, o.unsubscribe = function(e, t) {
                var i = r.get(e);
                if (i) {
                    var n = i.indexOf(t);
                    n >= 0 && i.splice(n, 1)
                }
                return o
            }, o.publish = function(e, s, l) {
                var u = r.get(e);
                if (!u) return o;
                for (var c = 0; c < a.length; c++) n(c, e, s);
                for (c = 0; c < u.length; c++) try {
                    l ? i(s, u[c]) : u[c](s)
                } catch (e) {
                    t(e)
                }
                return o
            }, o.addWireTap = function(e) {
                "function" == typeof e && a.push(e)
            }, o.removeWireTap = function(e) {
                a.splice(a.indexOf(e), 1)
            }, o
        }),
        function() {
            function e(e, t, i) {
                for (var n = e.length, r = i ? n : -1; i ? r-- : ++r < n;)
                    if (t(e[r], r, e)) return r;
                return -1
            }

            function t(e, t, i) {
                if (t !== t) return n(e, i);
                for (var r = i - 1, o = e.length; ++r < o;)
                    if (e[r] === t) return r;
                return -1
            }

            function i(e) {
                return null == e ? "" : e + ""
            }

            function n(e, t, i) {
                for (var n = e.length, r = t + (i ? 0 : -1); i ? r-- : ++r < n;) {
                    var o = e[r];
                    if (o !== o) return r
                }
                return -1
            }

            function r(e) {
                return !!e && "object" == typeof e
            }

            function o(e, t) {
                for (var i = -1, n = e.length, r = -1, o = []; ++i < n;) e[i] === t && (e[i] = Mt, o[++r] = i);
                return o
            }

            function a(e) {
                if (r(e) && !un(e) && !(e instanceof u)) {
                    if (e instanceof l) return e;
                    if (Si.call(e, "__chain__") && Si.call(e, "__wrapped__")) return De(e)
                }
                return new l(e)
            }

            function s() {}

            function l(e, t, i) {
                this.__wrapped__ = e, this.__actions__ = i || [], this.__chain__ = !!t
            }

            function u(e) {
                this.__wrapped__ = e, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = !1, this.__iteratees__ = [], this.__takeCount__ = Gi, this.__views__ = []
            }

            function c() {
                var e = new u(this.__wrapped__);
                return e.__actions__ = g(this.__actions__), e.__dir__ = this.__dir__, e.__filtered__ = this.__filtered__, e.__iteratees__ = g(this.__iteratees__), e.__takeCount__ = this.__takeCount__, e.__views__ = g(this.__views__), e
            }

            function h() {
                if (this.__filtered__) {
                    var e = new u(this);
                    e.__dir__ = -1, e.__filtered__ = !0
                } else e = this.clone(), e.__dir__ *= -1;
                return e
            }

            function p() {
                var e = this.__wrapped__.value(),
                    t = this.__dir__,
                    i = un(e),
                    n = t < 0,
                    r = i ? e.length : 0,
                    o = ge(0, r, this.__views__),
                    a = o.start,
                    s = o.end,
                    l = s - a,
                    u = n ? s : a - 1,
                    c = this.__iteratees__,
                    h = c.length,
                    p = 0,
                    f = Fi(l, this.__takeCount__);
                if (!i || r < Ot || r == l && f == l) return K(e, this.__actions__);
                var d = [];
                e: for (; l-- && p < f;) {
                    u += t;
                    for (var _ = -1, m = e[u]; ++_ < h;) {
                        var g = c[_],
                            v = g.iteratee,
                            y = g.type,
                            b = v(m);
                        if (y == It) m = b;
                        else if (!b) {
                            if (y == At) continue e;
                            break e
                        }
                    }
                    d[p++] = m
                }
                return d
            }

            function f(e) {
                var t = e ? e.length : 0;
                for (this.data = {
                        hash: Ci(null),
                        set: new Ri
                    }; t--;) this.push(e[t])
            }

            function d(e, t) {
                var i = e.data;
                return ("string" == typeof t || rt(t) ? i.set.has(t) : i.hash[t]) ? 0 : -1
            }

            function _(e) {
                var t = this.data;
                "string" == typeof e || rt(e) ? t.set.add(e) : t.hash[e] = !0
            }

            function m(e, t) {
                for (var i = -1, n = e.length, r = -1, o = t.length, a = Array(n + o); ++i < n;) a[i] = e[i];
                for (; ++r < o;) a[i++] = t[r];
                return a
            }

            function g(e, t) {
                var i = -1,
                    n = e.length;
                for (t || (t = Array(n)); ++i < n;) t[i] = e[i];
                return t
            }

            function v(e, t) {
                for (var i = -1, n = e.length; ++i < n && !1 !== t(e[i], i, e););
                return e
            }

            function y(e, t) {
                for (var i = -1, n = e.length, r = -1, o = []; ++i < n;) {
                    var a = e[i];
                    t(a, i, e) && (o[++r] = a)
                }
                return o
            }

            function b(e, t) {
                for (var i = -1, n = e.length, r = Array(n); ++i < n;) r[i] = t(e[i], i, e);
                return r
            }

            function x(e, t) {
                for (var i = -1, n = t.length, r = e.length; ++i < n;) e[r + i] = t[i];
                return e
            }

            function S(e, t, i, n) {
                var r = -1,
                    o = e.length;
                for (n && o && (i = e[++r]); ++r < o;) i = t(i, e[r], r, e);
                return i
            }

            function T(e, t) {
                for (var i = -1, n = e.length; ++i < n;)
                    if (t(e[i], i, e)) return !0;
                return !1
            }

            function w(e, t) {
                return e === vt ? t : e
            }

            function E(e, t, i) {
                for (var n = -1, r = pn(t), o = r.length; ++n < o;) {
                    var a = r[n],
                        s = e[a],
                        l = i(s, t[a], a, e, t);
                    (l === l ? l === s : s !== s) && (s !== vt || a in e) || (e[a] = l)
                }
                return e
            }

            function P(e, t) {
                return null == t ? e : R(t, pn(t), e)
            }

            function R(e, t, i) {
                i || (i = {});
                for (var n = -1, r = t.length; ++n < r;) {
                    var o = t[n];
                    i[o] = e[o]
                }
                return i
            }

            function O(e, t, i) {
                var n = typeof e;
                return "function" == n ? t === vt ? e : Z(e, t, i) : null == e ? ft : "object" == n ? W(e) : t === vt ? gt(e) : H(e, t)
            }

            function A(e, t, i, n, r, o, a) {
                var s;
                if (i && (s = r ? i(e, n, r) : i(e)), s !== vt) return s;
                if (!rt(e)) return e;
                var l = un(e);
                if (l) {
                    if (s = ve(e), !t) return g(e, s)
                } else {
                    var u = Ti.call(e),
                        c = u == Bt;
                    if (u != Ut && u != Dt && (!c || r)) return li[u] ? be(e, u, t) : r ? e : {};
                    if (mi(e)) return r ? e : {};
                    if (s = ye(c ? {} : e), !t) return P(s, e)
                }
                o || (o = []), a || (a = []);
                for (var h = o.length; h--;)
                    if (o[h] == e) return a[h];
                return o.push(e), a.push(s), (l ? v : L)(e, function(n, r) {
                    s[r] = A(n, t, i, r, e, o, a)
                }), s
            }

            function I(e, i) {
                var n = e ? e.length : 0,
                    r = [];
                if (!n) return r;
                var o = -1,
                    a = de(),
                    s = a === t,
                    l = s && i.length >= Ot ? re(i) : null,
                    u = i.length;
                l && (a = d, s = !1, i = l);
                e: for (; ++o < n;) {
                    var c = e[o];
                    if (s && c === c) {
                        for (var h = u; h--;)
                            if (i[h] === c) continue e;
                        r.push(c)
                    } else a(i, c, 0) < 0 && r.push(c)
                }
                return r
            }

            function C(e, t) {
                var i = [];
                return Ji(e, function(e, n, r) {
                    t(e, n, r) && i.push(e)
                }), i
            }

            function M(e, t, i, n) {
                var r;
                return i(e, function(e, i, o) {
                    if (t(e, i, o)) return r = n ? i : e, !1
                }), r
            }

            function D(e, t, i, n) {
                n || (n = []);
                for (var o = -1, a = e.length; ++o < a;) {
                    var s = e[o];
                    r(s) && xe(s) && (i || un(s) || tt(s)) ? t ? D(s, t, i, n) : x(n, s) : i || (n[n.length] = s)
                }
                return n
            }

            function N(e, t) {
                return Ki(e, t, ut)
            }

            function L(e, t) {
                return Ki(e, t, pn)
            }

            function k(e, t) {
                for (var i = -1, n = t.length, r = -1, o = []; ++i < n;) {
                    var a = t[i];
                    nt(e[a]) && (o[++r] = a)
                }
                return o
            }

            function F(e, t, i) {
                if (null != e) {
                    e = Ce(e), i !== vt && i in e && (t = [i]);
                    for (var n = 0, r = t.length; null != e && n < r;) e = Ce(e)[t[n++]];
                    return n && n == r ? e : vt
                }
            }

            function B(e, t, i, n, o, a) {
                return e === t || (null == e || null == t || !rt(e) && !r(t) ? e !== e && t !== t : G(e, t, B, i, n, o, a))
            }

            function G(e, t, i, n, r, o, a) {
                var s = un(e),
                    l = un(t),
                    u = Nt,
                    c = Nt;
                s || (u = Ti.call(e), u == Dt ? u = Ut : u != Ut && (s = lt(e))), l || (c = Ti.call(t), c == Dt ? c = Ut : c != Ut && (l = lt(t)));
                var h = u == Ut && !mi(e),
                    p = c == Ut && !mi(t),
                    f = u == c;
                if (f && !s && !h) return ce(e, t, u);
                if (!r) {
                    var d = h && Si.call(e, "__wrapped__"),
                        _ = p && Si.call(t, "__wrapped__");
                    if (d || _) return i(d ? e.value() : e, _ ? t.value() : t, n, r, o, a)
                }
                if (!f) return !1;
                o || (o = []), a || (a = []);
                for (var m = o.length; m--;)
                    if (o[m] == e) return a[m] == t;
                o.push(e), a.push(t);
                var g = (s ? ue : he)(e, t, i, n, r, o, a);
                return o.pop(), a.pop(), g
            }

            function U(e, t, i) {
                var n = t.length,
                    r = n,
                    o = !i;
                if (null == e) return !r;
                for (e = Ce(e); n--;) {
                    var a = t[n];
                    if (o && a[2] ? a[1] !== e[a[0]] : !(a[0] in e)) return !1
                }
                for (; ++n < r;) {
                    a = t[n];
                    var s = a[0],
                        l = e[s],
                        u = a[1];
                    if (o && a[2]) {
                        if (l === vt && !(s in e)) return !1
                    } else {
                        var c = i ? i(l, u, s) : vt;
                        if (!(c === vt ? B(u, l, i, !0) : c)) return !1
                    }
                }
                return !0
            }

            function j(e, t) {
                var i = -1,
                    n = xe(e) ? Array(e.length) : [];
                return Ji(e, function(e, r, o) {
                    n[++i] = t(e, r, o)
                }), n
            }

            function W(e) {
                var t = _e(e);
                if (1 == t.length && t[0][2]) {
                    var i = t[0][0],
                        n = t[0][1];
                    return function(e) {
                        return null != e && (e = Ce(e), e[i] === n && (n !== vt || i in e))
                    }
                }
                return function(e) {
                    return U(e, t)
                }
            }

            function H(e, t) {
                var i = un(e),
                    n = we(e) && Re(t),
                    r = e + "";
                return e = Me(e),
                    function(o) {
                        if (null == o) return !1;
                        var a = r;
                        if (o = Ce(o), (i || !n) && !(a in o)) {
                            if (null == (o = 1 == e.length ? o : F(o, V(e, 0, -1)))) return !1;
                            a = Le(e), o = Ce(o)
                        }
                        return o[a] === t ? t !== vt || a in o : B(t, o[a], vt, !0)
                    }
            }

            function X(e) {
                return function(t) {
                    return null == t ? vt : Ce(t)[e]
                }
            }

            function z(e) {
                var t = e + "";
                return e = Me(e),
                    function(i) {
                        return F(i, e, t)
                    }
            }

            function Y(e, t, i, n, r) {
                return r(e, function(e, r, o) {
                    i = n ? (n = !1, e) : t(i, e, r, o)
                }), i
            }

            function V(e, t, i) {
                var n = -1,
                    r = e.length;
                t = null == t ? 0 : +t || 0, t < 0 && (t = -t > r ? 0 : r + t), i = i === vt || i > r ? r : +i || 0, i < 0 && (i += r), r = t > i ? 0 : i - t >>> 0, t >>>= 0;
                for (var o = Array(r); ++n < r;) o[n] = e[n + t];
                return o
            }

            function q(e, t) {
                var i;
                return Ji(e, function(e, n, r) {
                    return !(i = t(e, n, r))
                }), !!i
            }

            function J(e, t) {
                for (var i = -1, n = t.length, r = Array(n); ++i < n;) r[i] = e[t[i]];
                return r
            }

            function K(e, t) {
                var i = e;
                i instanceof u && (i = i.value());
                for (var n = -1, r = t.length; ++n < r;) {
                    var o = t[n];
                    i = o.func.apply(o.thisArg, x([i], o.args))
                }
                return i
            }

            function $(e, t, i) {
                var n = 0,
                    r = e ? e.length : n;
                if ("number" == typeof t && t === t && r <= ji) {
                    for (; n < r;) {
                        var o = n + r >>> 1,
                            a = e[o];
                        (i ? a <= t : a < t) && null !== a ? n = o + 1 : r = o
                    }
                    return r
                }
                return Q(e, t, ft, i)
            }

            function Q(e, t, i, n) {
                t = i(t);
                for (var r = 0, o = e ? e.length : 0, a = t !== t, s = null === t, l = t === vt; r < o;) {
                    var u = Mi((r + o) / 2),
                        c = i(e[u]),
                        h = c !== vt,
                        p = c === c;
                    if (a) var f = p || n;
                    else f = s ? p && h && (n || null != c) : l ? p && (n || h) : null != c && (n ? c <= t : c < t);
                    f ? r = u + 1 : o = u
                }
                return Fi(o, Ui)
            }

            function Z(e, t, i) {
                if ("function" != typeof e) return ft;
                if (t === vt) return e;
                switch (i) {
                    case 1:
                        return function(i) {
                            return e.call(t, i)
                        };
                    case 3:
                        return function(i, n, r) {
                            return e.call(t, i, n, r)
                        };
                    case 4:
                        return function(i, n, r, o) {
                            return e.call(t, i, n, r, o)
                        };
                    case 5:
                        return function(i, n, r, o, a) {
                            return e.call(t, i, n, r, o, a)
                        }
                }
                return function() {
                    return e.apply(t, arguments)
                }
            }

            function ee(e) {
                var t = new Ei(e.byteLength);
                return new Ai(t).set(new Ai(e)), t
            }

            function te(e, t, i) {
                for (var n = i.length, r = -1, o = ki(e.length - n, 0), a = -1, s = t.length, l = Array(s + o); ++a < s;) l[a] = t[a];
                for (; ++r < n;) l[i[r]] = e[r];
                for (; o--;) l[a++] = e[r++];
                return l
            }

            function ie(e, t, i) {
                for (var n = -1, r = i.length, o = -1, a = ki(e.length - r, 0), s = -1, l = t.length, u = Array(a + l); ++o < a;) u[o] = e[o];
                for (var c = o; ++s < l;) u[c + s] = t[s];
                for (; ++n < r;) u[c + i[n]] = e[o++];
                return u
            }

            function ne(e, t) {
                function i() {
                    return (this && this !== _i && this instanceof i ? n : e).apply(t, arguments)
                }
                var n = oe(e);
                return i
            }

            function re(e) {
                return Ci && Ri ? new f(e) : null
            }

            function oe(e) {
                return function() {
                    var t = arguments;
                    switch (t.length) {
                        case 0:
                            return new e;
                        case 1:
                            return new e(t[0]);
                        case 2:
                            return new e(t[0], t[1]);
                        case 3:
                            return new e(t[0], t[1], t[2]);
                        case 4:
                            return new e(t[0], t[1], t[2], t[3]);
                        case 5:
                            return new e(t[0], t[1], t[2], t[3], t[4]);
                        case 6:
                            return new e(t[0], t[1], t[2], t[3], t[4], t[5]);
                        case 7:
                            return new e(t[0], t[1], t[2], t[3], t[4], t[5], t[6])
                    }
                    var i = qi(e.prototype),
                        n = e.apply(i, t);
                    return rt(n) ? n : i
                }
            }

            function ae(e, t, i, n, r, a, s, l, u, c) {
                function h() {
                    for (var b = arguments.length, x = b, S = Array(b); x--;) S[x] = arguments[x];
                    if (n && (S = te(S, n, r)), a && (S = ie(S, a, s)), _ || v) {
                        var T = h.placeholder,
                            w = o(S, T);
                        if ((b -= w.length) < c) {
                            var E = l ? g(l) : vt,
                                P = ki(c - b, 0),
                                R = _ ? w : vt,
                                O = _ ? vt : w,
                                A = _ ? S : vt,
                                I = _ ? vt : S;
                            t |= _ ? wt : Et, t &= ~(_ ? Et : wt), m || (t &= ~(yt | bt));
                            var C = [e, t, i, A, R, I, O, E, u, P],
                                M = ae.apply(vt, C);
                            return Ee(e) && en(M, C), M.placeholder = T, M
                        }
                    }
                    var D = f ? i : this,
                        N = d ? D[e] : e;
                    return l && (S = Ae(S, l)), p && u < S.length && (S.length = u), this && this !== _i && this instanceof h && (N = y || oe(e)), N.apply(D, S)
                }
                var p = t & Pt,
                    f = t & yt,
                    d = t & bt,
                    _ = t & St,
                    m = t & xt,
                    v = t & Tt,
                    y = d ? vt : oe(e);
                return h
            }

            function se(e, t, i, n) {
                function r() {
                    for (var t = -1, s = arguments.length, l = -1, u = n.length, c = Array(u + s); ++l < u;) c[l] = n[l];
                    for (; s--;) c[l++] = arguments[++t];
                    return (this && this !== _i && this instanceof r ? a : e).apply(o ? i : this, c)
                }
                var o = t & yt,
                    a = oe(e);
                return r
            }

            function le(e, t, i, n, r, o, a, s) {
                var l = t & bt;
                if (!l && "function" != typeof e) throw new TypeError(Ct);
                var u = n ? n.length : 0;
                if (u || (t &= ~(wt | Et), n = r = vt), u -= r ? r.length : 0, t & Et) {
                    var c = n,
                        h = r;
                    n = r = vt
                }
                var p = l ? vt : Qi(e),
                    f = [e, t, i, n, r, c, h, o, a, s];
                if (p && (Oe(f, p), t = f[1], s = f[9]), f[9] = null == s ? l ? 0 : e.length : ki(s - u, 0) || 0, t == yt) var d = ne(f[0], f[2]);
                else d = t != wt && t != (yt | wt) || f[4].length ? ae.apply(vt, f) : se.apply(vt, f);
                return (p ? $i : en)(d, f)
            }

            function ue(e, t, i, n, r, o, a) {
                var s = -1,
                    l = e.length,
                    u = t.length;
                if (l != u && !(r && u > l)) return !1;
                for (; ++s < l;) {
                    var c = e[s],
                        h = t[s],
                        p = n ? n(r ? h : c, r ? c : h, s) : vt;
                    if (p !== vt) {
                        if (p) continue;
                        return !1
                    }
                    if (r) {
                        if (!T(t, function(e) {
                                return c === e || i(c, e, n, r, o, a)
                            })) return !1
                    } else if (c !== h && !i(c, h, n, r, o, a)) return !1
                }
                return !0
            }

            function ce(e, t, i) {
                switch (i) {
                    case Lt:
                    case kt:
                        return +e == +t;
                    case Ft:
                        return e.name == t.name && e.message == t.message;
                    case Gt:
                        return e != +e ? t != +t : e == +t;
                    case jt:
                    case Wt:
                        return e == t + ""
                }
                return !1
            }

            function he(e, t, i, n, r, o, a) {
                var s = pn(e),
                    l = s.length;
                if (l != pn(t).length && !r) return !1;
                for (var u = l; u--;) {
                    var c = s[u];
                    if (!(r ? c in t : Si.call(t, c))) return !1
                }
                for (var h = r; ++u < l;) {
                    c = s[u];
                    var p = e[c],
                        f = t[c],
                        d = n ? n(r ? f : p, r ? p : f, c) : vt;
                    if (!(d === vt ? i(p, f, n, r, o, a) : d)) return !1;
                    h || (h = "constructor" == c)
                }
                if (!h) {
                    var _ = e.constructor,
                        m = t.constructor;
                    if (_ != m && "constructor" in e && "constructor" in t && !("function" == typeof _ && _ instanceof _ && "function" == typeof m && m instanceof m)) return !1
                }
                return !0
            }

            function pe(e, t, i) {
                var n = a.callback || pt;
                return n = n === pt ? O : n, i ? n(e, t, i) : n
            }

            function fe(e) {
                for (var t = e.name + "", i = Xi[t], n = i ? i.length : 0; n--;) {
                    var r = i[n],
                        o = r.func;
                    if (null == o || o == e) return r.name
                }
                return t
            }

            function de(e, i, n) {
                var r = a.indexOf || Ne;
                return r = r === Ne ? t : r, e ? r(e, i, n) : r
            }

            function _e(e) {
                for (var t = ct(e), i = t.length; i--;) t[i][2] = Re(t[i][1]);
                return t
            }

            function me(e, t) {
                var i = null == e ? vt : e[t];
                return ot(i) ? i : vt
            }

            function ge(e, t, i) {
                for (var n = -1, r = i.length; ++n < r;) {
                    var o = i[n],
                        a = o.size;
                    switch (o.type) {
                        case "drop":
                            e += a;
                            break;
                        case "dropRight":
                            t -= a;
                            break;
                        case "take":
                            t = Fi(t, e + a);
                            break;
                        case "takeRight":
                            e = ki(e, t - a)
                    }
                }
                return {
                    start: e,
                    end: t
                }
            }

            function ve(e) {
                var t = e.length,
                    i = new e.constructor(t);
                return t && "string" == typeof e[0] && Si.call(e, "index") && (i.index = e.index, i.input = e.input), i
            }

            function ye(e) {
                var t = e.constructor;
                return "function" == typeof t && t instanceof t || (t = Object), new t
            }

            function be(e, t, i) {
                var n = e.constructor;
                switch (t) {
                    case Ht:
                        return ee(e);
                    case Lt:
                    case kt:
                        return new n(+e);
                    case Xt:
                    case zt:
                    case Yt:
                    case Vt:
                    case qt:
                    case Jt:
                    case Kt:
                    case $t:
                    case Qt:
                        n instanceof n && (n = zi[t]);
                        var r = e.buffer;
                        return new n(i ? ee(r) : r, e.byteOffset, e.length);
                    case Gt:
                    case Wt:
                        return new n(e);
                    case jt:
                        var o = new n(e.source, ni.exec(e));
                        o.lastIndex = e.lastIndex
                }
                return o
            }

            function xe(e) {
                return null != e && Pe(Zi(e))
            }

            function Se(e, t) {
                return e = "number" == typeof e || oi.test(e) ? +e : -1, t = null == t ? Wi : t, e > -1 && e % 1 == 0 && e < t
            }

            function Te(e, t, i) {
                if (!rt(i)) return !1;
                var n = typeof t;
                if ("number" == n ? xe(i) && Se(t, i.length) : "string" == n && t in i) {
                    var r = i[t];
                    return e === e ? e === r : r !== r
                }
                return !1
            }

            function we(e, t) {
                var i = typeof e;
                return !!("string" == i && ei.test(e) || "number" == i) || !un(e) && (!Zt.test(e) || null != t && e in Ce(t))
            }

            function Ee(e) {
                var t = fe(e),
                    i = a[t];
                if ("function" != typeof i || !(t in u.prototype)) return !1;
                if (e === i) return !0;
                var n = Qi(i);
                return !!n && e === n[0]
            }

            function Pe(e) {
                return "number" == typeof e && e > -1 && e % 1 == 0 && e <= Wi
            }

            function Re(e) {
                return e === e && !rt(e)
            }

            function Oe(e, t) {
                var i = e[1],
                    n = t[1],
                    r = i | n,
                    a = r < Pt,
                    s = n == Pt && i == St || n == Pt && i == Rt && e[7].length <= t[8] || n == (Pt | Rt) && i == St;
                if (!a && !s) return e;
                n & yt && (e[2] = t[2], r |= i & yt ? 0 : xt);
                var l = t[3];
                if (l) {
                    var u = e[3];
                    e[3] = u ? te(u, l, t[4]) : g(l), e[4] = u ? o(e[3], Mt) : g(t[4])
                }
                return l = t[5], l && (u = e[5], e[5] = u ? ie(u, l, t[6]) : g(l), e[6] = u ? o(e[5], Mt) : g(t[6])), l = t[7], l && (e[7] = g(l)), n & Pt && (e[8] = null == e[8] ? t[8] : Fi(e[8], t[8])), null == e[9] && (e[9] = t[9]), e[0] = t[0], e[1] = r, e
            }

            function Ae(e, t) {
                for (var i = e.length, n = Fi(t.length, i), r = g(e); n--;) {
                    var o = t[n];
                    e[n] = Se(o, i) ? r[o] : vt
                }
                return e
            }

            function Ie(e) {
                for (var t = ut(e), i = t.length, n = i && e.length, r = !!n && Pe(n) && (un(e) || tt(e) || st(e)), o = -1, a = []; ++o < i;) {
                    var s = t[o];
                    (r && Se(s, n) || Si.call(e, s)) && a.push(s)
                }
                return a
            }

            function Ce(e) {
                if (a.support.unindexedChars && st(e)) {
                    for (var t = -1, i = e.length, n = Object(e); ++t < i;) n[t] = e.charAt(t);
                    return n
                }
                return rt(e) ? e : Object(e)
            }

            function Me(e) {
                if (un(e)) return e;
                var t = [];
                return i(e).replace(ti, function(e, i, n, r) {
                    t.push(n ? r.replace(ii, "$1") : i || e)
                }), t
            }

            function De(e) {
                return e instanceof u ? e.clone() : new l(e.__wrapped__, e.__chain__, g(e.__actions__))
            }

            function Ne(e, i, n) {
                var r = e ? e.length : 0;
                if (!r) return -1;
                if ("number" == typeof n) n = n < 0 ? ki(r + n, 0) : n;
                else if (n) {
                    var o = $(e, i);
                    return o < r && (i === i ? i === e[o] : e[o] !== e[o]) ? o : -1
                }
                return t(e, i, n || 0)
            }

            function Le(e) {
                var t = e ? e.length : 0;
                return t ? e[t - 1] : vt
            }

            function ke(e) {
                var t = a(e);
                return t.__chain__ = !0, t
            }

            function Fe(e, t, i) {
                return t.call(i, e), e
            }

            function Be(e, t, i) {
                return t.call(i, e)
            }

            function Ge() {
                return ke(this)
            }

            function Ue() {
                return new l(this.value(), this.__chain__)
            }

            function je(e) {
                for (var t, i = this; i instanceof s;) {
                    var n = De(i);
                    t ? r.__wrapped__ = n : t = n;
                    var r = n;
                    i = i.__wrapped__
                }
                return r.__wrapped__ = e, t
            }

            function We() {
                var e = this.__wrapped__,
                    t = function(e) {
                        return e.reverse()
                    };
                if (e instanceof u) {
                    var i = e;
                    return this.__actions__.length && (i = new u(this)), i = i.reverse(), i.__actions__.push({
                        func: Be,
                        args: [t],
                        thisArg: vt
                    }), new l(i, this.__chain__)
                }
                return this.thru(t)
            }

            function He() {
                return this.value() + ""
            }

            function Xe() {
                return K(this.__wrapped__, this.__actions__)
            }

            function ze(e, t, i) {
                var n = un(e) ? y : C;
                return t = pe(t, i, 3), n(e, t)
            }

            function Ye(e, t, i, n) {
                var r = e ? Zi(e) : 0;
                return Pe(r) || (e = ht(e), r = e.length), i = "number" != typeof i || n && Te(t, i, n) ? 0 : i < 0 ? ki(r + i, 0) : i || 0, "string" == typeof e || !un(e) && st(e) ? i <= r && e.indexOf(t, i) > -1 : !!r && de(e, t, i) > -1
            }

            function Ve(e, t, i) {
                var n = un(e) ? b : j;
                return t = pe(t, i, 3), n(e, t)
            }

            function qe(e, t, i) {
                var n = un(e) ? T : q;
                return i && Te(e, t, i) && (t = vt), "function" == typeof t && i === vt || (t = pe(t, i, 3)), n(e, t)
            }

            function Je(e, t) {
                if ("function" != typeof t) {
                    if ("function" != typeof e) throw new TypeError(Ct);
                    var i = e;
                    e = t, t = i
                }
                return e = Ni(e = +e) ? e : 0,
                    function() {
                        if (--e < 1) return t.apply(this, arguments)
                    }
            }

            function Ke(e, t, i) {
                function n() {
                    f && clearTimeout(f), u && clearTimeout(u), _ = 0, u = f = d = vt
                }

                function r(t, i) {
                    i && clearTimeout(i), u = f = d = vt, t && (_ = sn(), c = e.apply(p, l), f || u || (l = p = vt))
                }

                function o() {
                    var e = t - (sn() - h);
                    e <= 0 || e > t ? r(d, u) : f = setTimeout(o, e)
                }

                function a() {
                    r(g, f)
                }

                function s() {
                    if (l = arguments, h = sn(), p = this, d = g && (f || !v), !1 === m) var i = v && !f;
                    else {
                        u || v || (_ = h);
                        var n = m - (h - _),
                            r = n <= 0 || n > m;
                        r ? (u && (u = clearTimeout(u)), _ = h, c = e.apply(p, l)) : u || (u = setTimeout(a, n))
                    }
                    return r && f ? f = clearTimeout(f) : f || t === m || (f = setTimeout(o, t)), i && (r = !0, c = e.apply(p, l)), !r || f || u || (l = p = vt), c
                }
                var l, u, c, h, p, f, d, _ = 0,
                    m = !1,
                    g = !0;
                if ("function" != typeof e) throw new TypeError(Ct);
                if (t = t < 0 ? 0 : +t || 0, !0 === i) {
                    var v = !0;
                    g = !1
                } else rt(i) && (v = !!i.leading, m = "maxWait" in i && ki(+i.maxWait || 0, t), g = "trailing" in i ? !!i.trailing : g);
                return s.cancel = n, s
            }

            function $e(e, t) {
                if ("function" != typeof e) throw new TypeError(Ct);
                return t = ki(t === vt ? e.length - 1 : +t || 0, 0),
                    function() {
                        for (var i = arguments, n = -1, r = ki(i.length - t, 0), o = Array(r); ++n < r;) o[n] = i[t + n];
                        switch (t) {
                            case 0:
                                return e.call(this, o);
                            case 1:
                                return e.call(this, i[0], o);
                            case 2:
                                return e.call(this, i[0], i[1], o)
                        }
                        var a = Array(t + 1);
                        for (n = -1; ++n < t;) a[n] = i[n];
                        return a[t] = o, e.apply(this, a)
                    }
            }

            function Qe(e, t, i) {
                var n = !0,
                    r = !0;
                if ("function" != typeof e) throw new TypeError(Ct);
                return !1 === i ? n = !1 : rt(i) && (n = "leading" in i ? !!i.leading : n, r = "trailing" in i ? !!i.trailing : r), Ke(e, t, {
                    leading: n,
                    maxWait: +t,
                    trailing: r
                })
            }

            function Ze(e, t, i, n) {
                return t && "boolean" != typeof t && Te(e, t, i) ? t = !1 : "function" == typeof t && (n = i, i = t, t = !1), "function" == typeof i ? A(e, t, Z(i, n, 3)) : A(e, t)
            }

            function et(e, t, i) {
                return "function" == typeof t ? A(e, !0, Z(t, i, 3)) : A(e, !0)
            }

            function tt(e) {
                return r(e) && xe(e) && Si.call(e, "callee") && !Pi.call(e, "callee")
            }

            function it(e, t, i, n) {
                i = "function" == typeof i ? Z(i, n, 3) : vt;
                var r = i ? i(e, t) : vt;
                return r === vt ? B(e, t, i) : !!r
            }

            function nt(e) {
                return rt(e) && Ti.call(e) == Bt
            }

            function rt(e) {
                var t = typeof e;
                return !!e && ("object" == t || "function" == t)
            }

            function ot(e) {
                return null != e && (nt(e) ? wi.test(xi.call(e)) : r(e) && (mi(e) ? wi : ri).test(e))
            }

            function at(e) {
                var t;
                if (!r(e) || Ti.call(e) != Ut || mi(e) || tt(e) || !Si.call(e, "constructor") && "function" == typeof(t = e.constructor) && !(t instanceof t)) return !1;
                var i;
                return a.support.ownLast ? (N(e, function(e, t, n) {
                    return i = Si.call(n, t), !1
                }), !1 !== i) : (N(e, function(e, t) {
                    i = t
                }), i === vt || Si.call(e, i))
            }

            function st(e) {
                return "string" == typeof e || r(e) && Ti.call(e) == Wt
            }

            function lt(e) {
                return r(e) && Pe(e.length) && !!si[Ti.call(e)]
            }

            function ut(e) {
                if (null == e) return [];
                rt(e) || (e = Object(e));
                var t = e.length,
                    i = a.support;
                t = t && Pe(t) && (un(e) || tt(e) || st(e)) && t || 0;
                for (var n = e.constructor, r = -1, o = nt(n) && n.prototype || yi, s = o === e, l = Array(t), u = t > 0, c = i.enumErrorProps && (e === vi || e instanceof Error), h = i.enumPrototypes && nt(e); ++r < t;) l[r] = r + "";
                for (var p in e) h && "prototype" == p || c && ("message" == p || "name" == p) || u && Se(p, t) || "constructor" == p && (s || !Si.call(e, p)) || l.push(p);
                if (i.nonEnumShadows && e !== yi) {
                    var f = e === bi ? Wt : e === vi ? Ft : Ti.call(e),
                        d = Yi[f] || Yi[Ut];
                    for (f == Ut && (o = yi), t = ai.length; t--;) {
                        p = ai[t];
                        var _ = d[p];
                        s && _ || (_ ? !Si.call(e, p) : e[p] === o[p]) || l.push(p)
                    }
                }
                return l
            }

            function ct(e) {
                e = Ce(e);
                for (var t = -1, i = pn(e), n = i.length, r = Array(n); ++t < n;) {
                    var o = i[t];
                    r[t] = [o, e[o]]
                }
                return r
            }

            function ht(e) {
                return J(e, pn(e))
            }

            function pt(e, t, i) {
                return i && Te(e, t, i) && (t = vt), r(e) ? dt(e) : O(e, t)
            }

            function ft(e) {
                return e
            }

            function dt(e) {
                return W(A(e, !0))
            }

            function _t(e, t, i) {
                if (null == i) {
                    var n = rt(t),
                        r = n ? pn(t) : vt,
                        o = r && r.length ? k(t, r) : vt;
                    (o ? o.length : n) || (o = !1, i = t, t = e, e = this)
                }
                o || (o = k(t, pn(t)));
                var a = !0,
                    s = -1,
                    l = nt(e),
                    u = o.length;
                !1 === i ? a = !1 : rt(i) && "chain" in i && (a = i.chain);
                for (; ++s < u;) {
                    var c = o[s],
                        h = t[c];
                    e[c] = h, l && (e.prototype[c] = function(t) {
                        return function() {
                            var i = this.__chain__;
                            if (a || i) {
                                var n = e(this.__wrapped__);
                                return (n.__actions__ = g(this.__actions__)).push({
                                    func: t,
                                    args: arguments,
                                    thisArg: e
                                }), n.__chain__ = i, n
                            }
                            return t.apply(e, x([this.value()], arguments))
                        }
                    }(h))
                }
                return e
            }

            function mt() {}

            function gt(e) {
                return we(e) ? X(e) : z(e)
            }
            var vt, yt = 1,
                bt = 2,
                xt = 4,
                St = 8,
                Tt = 16,
                wt = 32,
                Et = 64,
                Pt = 128,
                Rt = 256,
                Ot = 200,
                At = 1,
                It = 2,
                Ct = "Expected a function",
                Mt = "__lodash_placeholder__",
                Dt = "[object Arguments]",
                Nt = "[object Array]",
                Lt = "[object Boolean]",
                kt = "[object Date]",
                Ft = "[object Error]",
                Bt = "[object Function]",
                Gt = "[object Number]",
                Ut = "[object Object]",
                jt = "[object RegExp]",
                Wt = "[object String]",
                Ht = "[object ArrayBuffer]",
                Xt = "[object Float32Array]",
                zt = "[object Float64Array]",
                Yt = "[object Int8Array]",
                Vt = "[object Int16Array]",
                qt = "[object Int32Array]",
                Jt = "[object Uint8Array]",
                Kt = "[object Uint8ClampedArray]",
                $t = "[object Uint16Array]",
                Qt = "[object Uint32Array]",
                Zt = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,
                ei = /^\w*$/,
                ti = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g,
                ii = /\\(\\)?/g,
                ni = /\w*$/,
                ri = /^\[object .+?Constructor\]$/,
                oi = /^\d+$/,
                ai = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"],
                si = {};
            si[Xt] = si[zt] = si[Yt] = si[Vt] = si[qt] = si[Jt] = si[Kt] = si[$t] = si[Qt] = !0, si[Dt] = si[Nt] = si[Ht] = si[Lt] = si[kt] = si[Ft] = si[Bt] = si["[object Map]"] = si[Gt] = si[Ut] = si[jt] = si["[object Set]"] = si[Wt] = si["[object WeakMap]"] = !1;
            var li = {};
            li[Dt] = li[Nt] = li[Ht] = li[Lt] = li[kt] = li[Xt] = li[zt] = li[Yt] = li[Vt] = li[qt] = li[Gt] = li[Ut] = li[jt] = li[Wt] = li[Jt] = li[Kt] = li[$t] = li[Qt] = !0, li[Ft] = li[Bt] = li["[object Map]"] = li["[object Set]"] = li["[object WeakMap]"] = !1;
            var ui = {
                    function: !0,
                    object: !0
                },
                ci = ui[typeof exports] && exports && !exports.nodeType && exports,
                hi = ui[typeof module] && module && !module.nodeType && module,
                pi = ci && hi && "object" == typeof global && global && global.Object && global,
                fi = ui[typeof self] && self && self.Object && self,
                di = ui[typeof window] && window && window.Object && window,
                _i = pi || di !== (this && this.window) && di || fi || this,
                mi = function() {
                    try {
                        Object({
                            toString: 0
                        } + "")
                    } catch (e) {
                        return function() {
                            return !1
                        }
                    }
                    return function(e) {
                        return "function" != typeof e.toString && "string" == typeof(e + "")
                    }
                }(),
                gi = Array.prototype,
                vi = Error.prototype,
                yi = Object.prototype,
                bi = String.prototype,
                xi = Function.prototype.toString,
                Si = yi.hasOwnProperty,
                Ti = yi.toString,
                wi = RegExp("^" + xi.call(Si).replace(/[\\^$.*+?()[\]{}|]/g, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"),
                Ei = _i.ArrayBuffer,
                Pi = yi.propertyIsEnumerable,
                Ri = me(_i, "Set"),
                Oi = gi.splice,
                Ai = _i.Uint8Array,
                Ii = me(_i, "WeakMap"),
                Ci = me(Object, "create"),
                Mi = Math.floor,
                Di = me(Array, "isArray"),
                Ni = _i.isFinite,
                Li = me(Object, "keys"),
                ki = Math.max,
                Fi = Math.min,
                Bi = me(Date, "now"),
                Gi = Number.POSITIVE_INFINITY,
                Ui = 4294967294,
                ji = 2147483647,
                Wi = 9007199254740991,
                Hi = Ii && new Ii,
                Xi = {},
                zi = {};
            zi[Xt] = _i.Float32Array, zi[zt] = _i.Float64Array, zi[Yt] = _i.Int8Array, zi[Vt] = _i.Int16Array, zi[qt] = _i.Int32Array, zi[Jt] = Ai, zi[Kt] = _i.Uint8ClampedArray, zi[$t] = _i.Uint16Array, zi[Qt] = _i.Uint32Array;
            var Yi = {};
            Yi[Nt] = Yi[kt] = Yi[Gt] = {
                constructor: !0,
                toLocaleString: !0,
                toString: !0,
                valueOf: !0
            }, Yi[Lt] = Yi[Wt] = {
                constructor: !0,
                toString: !0,
                valueOf: !0
            }, Yi[Ft] = Yi[Bt] = Yi[jt] = {
                constructor: !0,
                toString: !0
            }, Yi[Ut] = {
                constructor: !0
            }, v(ai, function(e) {
                for (var t in Yi)
                    if (Si.call(Yi, t)) {
                        var i = Yi[t];
                        i[e] = Si.call(i, e)
                    }
            });
            var Vi = a.support = {};
            ! function(e) {
                var t = function() {
                        this.x = 1
                    },
                    i = {
                        0: 1,
                        length: 1
                    },
                    n = [];
                t.prototype = {
                    valueOf: 1,
                    y: 1
                };
                for (var r in new t) n.push(r);
                Vi.enumErrorProps = Pi.call(vi, "message") || Pi.call(vi, "name"), Vi.enumPrototypes = Pi.call(t, "prototype"), Vi.nonEnumShadows = !/valueOf/.test(n), Vi.ownLast = "x" != n[0], Vi.spliceObjects = (Oi.call(i, 0, 1), !i[0]), Vi.unindexedChars = "x" [0] + Object("x")[0] != "xx"
            }();
            var qi = function() {
                    function e() {}
                    return function(t) {
                        if (rt(t)) {
                            e.prototype = t;
                            var i = new e;
                            e.prototype = vt
                        }
                        return i || {}
                    }
                }(),
                Ji = function(e, t) {
                    return function(i, n) {
                        var r = i ? Zi(i) : 0;
                        if (!Pe(r)) return e(i, n);
                        for (var o = t ? r : -1, a = Ce(i);
                            (t ? o-- : ++o < r) && !1 !== n(a[o], o, a););
                        return i
                    }
                }(L),
                Ki = function(e) {
                    return function(t, i, n) {
                        for (var r = Ce(t), o = n(t), a = o.length, s = e ? a : -1; e ? s-- : ++s < a;) {
                            var l = o[s];
                            if (!1 === i(r[l], l, r)) break
                        }
                        return t
                    }
                }(),
                $i = Hi ? function(e, t) {
                    return Hi.set(e, t), e
                } : ft,
                Qi = Hi ? function(e) {
                    return Hi.get(e)
                } : mt,
                Zi = X("length"),
                en = function() {
                    var e = 0,
                        t = 0;
                    return function(i, n) {
                        var r = sn(),
                            o = 16 - (r - t);
                        if (t = r, o > 0) {
                            if (++e >= 150) return i
                        } else e = 0;
                        return $i(i, n)
                    }
                }(),
                tn = $e(function(e, t) {
                    return xe(e) ? I(e, t) : []
                }),
                nn = $e(function(e) {
                    return e = D(e), this.thru(function(t) {
                        return m(un(t) ? t : [Ce(t)], e)
                    })
                }),
                rn = function(t, i) {
                    return function(n, r, o) {
                        if (r = pe(r, o, 3), un(n)) {
                            var a = e(n, r, i);
                            return a > -1 ? n[a] : vt
                        }
                        return M(n, r, t)
                    }
                }(Ji),
                on = function(e, t) {
                    return function(i, n, r) {
                        return "function" == typeof n && r === vt && un(i) ? e(i, n) : t(i, Z(n, r, 3))
                    }
                }(v, Ji),
                an = function(e, t) {
                    return function(i, n, r, o) {
                        var a = arguments.length < 3;
                        return "function" == typeof n && o === vt && un(i) ? e(i, n, r, a) : Y(i, pe(n, o, 4), r, a, t)
                    }
                }(S, Ji),
                sn = Bi || function() {
                    return (new Date).getTime()
                },
                ln = $e(function(e, t, i) {
                    var n = yt;
                    if (i.length) {
                        var r = o(i, ln.placeholder);
                        n |= wt
                    }
                    return le(e, n, t, i, r)
                }),
                un = Di || function(e) {
                    return r(e) && Pe(e.length) && Ti.call(e) == Nt
                },
                cn = function(e) {
                    return $e(function(t, i) {
                        var n = -1,
                            r = null == t ? 0 : i.length,
                            o = r > 2 ? i[r - 2] : vt,
                            a = r > 2 ? i[2] : vt,
                            s = r > 1 ? i[r - 1] : vt;
                        for ("function" == typeof o ? (o = Z(o, s, 5), r -= 2) : (o = "function" == typeof s ? s : vt, r -= o ? 1 : 0), a && Te(i[0], i[1], a) && (o = r < 3 ? vt : o, r = 1); ++n < r;) {
                            var l = i[n];
                            l && e(t, l, o)
                        }
                        return t
                    })
                }(function(e, t, i) {
                    return i ? E(e, t, i) : P(e, t)
                }),
                hn = function(e, t) {
                    return $e(function(i) {
                        var n = i[0];
                        return null == n ? n : (i.push(t), e.apply(vt, i))
                    })
                }(cn, w),
                pn = Li ? function(e) {
                    var t = null == e ? vt : e.constructor;
                    return "function" == typeof t && t.prototype === e || ("function" == typeof e ? a.support.enumPrototypes : xe(e)) ? Ie(e) : rt(e) ? Li(e) : []
                } : Ie;
            a.prototype = s.prototype, l.prototype = qi(s.prototype), l.prototype.constructor = l, u.prototype = qi(s.prototype), u.prototype.constructor = u, f.prototype.push = _, a.after = Je, a.assign = cn, a.bind = ln, a.callback = pt, a.chain = ke, a.debounce = Ke, a.defaults = hn, a.filter = ze, a.forEach = on, a.keys = pn, a.keysIn = ut, a.map = Ve, a.matches = dt, a.mixin = _t, a.pairs = ct, a.property = gt, a.restParam = $e, a.tap = Fe, a.throttle = Qe, a.thru = Be, a.values = ht, a.without = tn, a.collect = Ve, a.each = on, a.extend = cn, a.iteratee = pt, a.select = ze, _t(a, a), a.clone = Ze, a.cloneDeep = et, a.find = rn, a.identity = ft, a.includes = Ye, a.indexOf = Ne, a.isArguments = tt, a.isArray = un, a.isEqual = it, a.isFunction = nt, a.isNative = ot, a.isObject = rt, a.isPlainObject = at, a.isString = st, a.isTypedArray = lt, a.last = Le, a.noop = mt, a.now = sn, a.reduce = an, a.some = qe, a.any = qe, a.contains = Ye, a.eq = it, a.detect = rn, a.foldl = an, a.include = Ye, a.inject = an, _t(a, function() {
                var e = {};
                return L(a, function(t, i) {
                    a.prototype[i] || (e[i] = t)
                }), e
            }(), !1), a.prototype.sample = function(e) {
                return this.__chain__ || null != e ? this.thru(function(t) {
                    return sample(t, e)
                }) : sample(this.value())
            }, a.VERSION = "3.10.1", ln.placeholder = a, v(["drop", "take"], function(e, t) {
                u.prototype[e] = function(i) {
                    var n = this.__filtered__;
                    if (n && !t) return new u(this);
                    i = null == i ? 1 : ki(Mi(i) || 0, 0);
                    var r = this.clone();
                    return n ? r.__takeCount__ = Fi(r.__takeCount__, i) : r.__views__.push({
                        size: i,
                        type: e + (r.__dir__ < 0 ? "Right" : "")
                    }), r
                }, u.prototype[e + "Right"] = function(t) {
                    return this.reverse()[e](t).reverse()
                }
            }), v(["filter", "map", "takeWhile"], function(e, t) {
                var i = t + 1,
                    n = i != It;
                u.prototype[e] = function(e, t) {
                    var r = this.clone();
                    return r.__iteratees__.push({
                        iteratee: pe(e, t, 1),
                        type: i
                    }), r.__filtered__ = r.__filtered__ || n, r
                }
            }), v(["first", "last"], function(e, t) {
                var i = "take" + (t ? "Right" : "");
                u.prototype[e] = function() {
                    return this[i](1).value()[0]
                }
            }), v(["initial", "rest"], function(e, t) {
                var i = "drop" + (t ? "" : "Right");
                u.prototype[e] = function() {
                    return this.__filtered__ ? new u(this) : this[i](1)
                }
            }), v(["pluck", "where"], function(e, t) {
                var i = t ? "filter" : "map",
                    n = t ? W : gt;
                u.prototype[e] = function(e) {
                    return this[i](n(e))
                }
            }), u.prototype.compact = function() {
                return this.filter(ft)
            }, u.prototype.reject = function(e, t) {
                return e = pe(e, t, 1), this.filter(function(t) {
                    return !e(t)
                })
            }, u.prototype.slice = function(e, t) {
                e = null == e ? 0 : +e || 0;
                var i = this;
                return i.__filtered__ && (e > 0 || t < 0) ? new u(i) : (e < 0 ? i = i.takeRight(-e) : e && (i = i.drop(e)), t !== vt && (t = +t || 0, i = t < 0 ? i.dropRight(-t) : i.take(t - e)), i)
            }, u.prototype.takeRightWhile = function(e, t) {
                return this.reverse().takeWhile(e, t).reverse()
            }, u.prototype.toArray = function() {
                return this.take(Gi)
            }, L(u.prototype, function(e, t) {
                var i = /^(?:filter|map|reject)|While$/.test(t),
                    n = /^(?:first|last)$/.test(t),
                    r = a[n ? "take" + ("last" == t ? "Right" : "") : t];
                r && (a.prototype[t] = function() {
                    var t = n ? [1] : arguments,
                        o = this.__chain__,
                        a = this.__wrapped__,
                        s = !!this.__actions__.length,
                        c = a instanceof u,
                        h = t[0],
                        p = c || un(a);
                    p && i && "function" == typeof h && 1 != h.length && (c = p = !1);
                    var f = function(e) {
                            return n && o ? r(e, 1)[0] : r.apply(vt, x([e], t))
                        },
                        d = {
                            func: Be,
                            args: [f],
                            thisArg: vt
                        },
                        _ = c && !s;
                    if (n && !o) return _ ? (a = a.clone(), a.__actions__.push(d), e.call(a)) : r.call(vt, this.value())[0];
                    if (!n && p) {
                        a = _ ? a : new u(this);
                        var m = e.apply(a, t);
                        return m.__actions__.push(d), new l(m, o)
                    }
                    return this.thru(f)
                })
            }), v(["join", "pop", "push", "replace", "shift", "sort", "splice", "split", "unshift"], function(e) {
                var t = (/^(?:replace|split)$/.test(e) ? bi : gi)[e],
                    i = /^(?:push|sort|unshift)$/.test(e) ? "tap" : "thru",
                    n = !Vi.spliceObjects && /^(?:pop|shift|splice)$/.test(e),
                    r = /^(?:join|pop|replace|shift)$/.test(e),
                    o = n ? function() {
                        var e = t.apply(this, arguments);
                        return 0 === this.length && delete this[0], e
                    } : t;
                a.prototype[e] = function() {
                    var e = arguments;
                    return r && !this.__chain__ ? o.apply(this.value(), e) : this[i](function(t) {
                        return o.apply(t, e)
                    })
                }
            }), L(u.prototype, function(e, t) {
                var i = a[t];
                if (i) {
                    var n = i.name + "";
                    (Xi[n] || (Xi[n] = [])).push({
                        name: t,
                        func: i
                    })
                }
            }), Xi[ae(vt, bt).name] = [{
                name: "wrapper",
                func: vt
            }], u.prototype.clone = c, u.prototype.reverse = h, u.prototype.value = p, a.prototype.chain = Ge, a.prototype.commit = Ue, a.prototype.concat = nn, a.prototype.plant = je, a.prototype.reverse = We, a.prototype.toString = He, a.prototype.run = a.prototype.toJSON = a.prototype.valueOf = a.prototype.value = Xe, a.prototype.collect = a.prototype.map, a.prototype.head = a.prototype.first, a.prototype.select = a.prototype.filter, a.prototype.tail = a.prototype.rest, "function" == typeof define && "object" == typeof define.amd && define.amd && define("lodash", [], function() {
                return a
            })
        }.call(this),
        function(e, t) {
            "function" == typeof define && define.amd ? define("postal", ["lodash"], function(i) {
                return t(i, e)
            }) : "object" == typeof module && module.exports ? module.exports = t(require("lodash"), this) : e.postal = t(e._, e)
        }(this, function(e, t, i) {
            function n() {
                for (; x.length;) c.unsubscribe(x.shift())
            }

            function r(e, t, i) {
                return function(n, r, o) {
                    n === e && o.splice(r, 1), 0 === o.length && delete i[t]
                }
            }

            function o(e, t, i, n, r) {
                var o = r && r.headers || {};
                return function(r) {
                    var a;
                    h.resolver.compare(r.topic, e, o) && (o.resolverNoCache || (a = t[i] = t[i] || [], a.push(r)), r.cacheKeys.push(i), n && n(r))
                }
            }

            function a(e, t) {
                return {
                    channel: h.SYSTEM_CHANNEL,
                    topic: "subscription." + e,
                    data: {
                        event: "subscription." + e,
                        channel: t.channel,
                        topic: t.topic
                    }
                }
            }

            function s(t, i) {
                return "function" == typeof t ? t : t ? function(n) {
                    var r = 0,
                        o = 0;
                    return e.each(t, function(e, a) {
                        r += 1, ("topic" === a && i.compare(n.topic, t.topic, {
                            resolverNoCache: !0
                        }) || "context" === a && t.context === n._context || n[a] === t[a]) && (o += 1)
                    }), r === o
                } : function() {
                    return !0
                }
            }
            var l = t.postal,
                u = {
                    DEFAULT_CHANNEL: "/",
                    SYSTEM_CHANNEL: "postal",
                    enableSystemMessages: !0,
                    cacheKeyDelimiter: "|",
                    autoCompactResolver: !1
                },
                c = {
                    configuration: e.extend({}, u)
                },
                h = c.configuration,
                p = function(e, t) {
                    this.bus = t, this.channel = e || h.DEFAULT_CHANNEL
                };
            p.prototype.subscribe = function() {
                return this.bus.subscribe({
                    channel: this.channel,
                    topic: 1 === arguments.length ? arguments[0].topic : arguments[0],
                    callback: 1 === arguments.length ? arguments[0].callback : arguments[1]
                })
            }, p.prototype.publish = function() {
                var e, t = {};
                if ("string" == typeof arguments[0] ? (t.topic = arguments[0], t.data = arguments[1], e = arguments[2]) : (t = arguments[0], e = arguments[1]), "object" != typeof t) throw new Error("The first argument to ChannelDefinition.publish should be either an envelope object or a string topic.");
                t.channel = this.channel, this.bus.publish(t, e)
            };
            var f = function(e, t, n) {
                    if (3 !== arguments.length) throw new Error("You must provide a channel, topic and callback when creating a SubscriptionDefinition instance.");
                    if (0 === t.length) throw new Error("Topics cannot be empty");
                    this.channel = e, this.topic = t, this.callback = n, this.pipeline = [], this.cacheKeys = [], this._context = i
                },
                d = function() {
                    var t;
                    return function(i) {
                        var n = !1;
                        return "string" == typeof i ? (n = i === t, t = i) : (n = e.isEqual(i, t), t = e.extend({}, i)), !n
                    }
                },
                _ = function() {
                    var t = [];
                    return function(i) {
                        var n = !e.any(t, function(t) {
                            return e.isEqual(i, t)
                        });
                        return n && t.push(i), n
                    }
                };
            f.prototype = {
                catch: function(e) {
                    var t = this.callback,
                        i = function() {
                            try {
                                t.apply(this, arguments)
                            } catch (t) {
                                e(t, arguments[0])
                            }
                        };
                    return this.callback = i, this
                },
                defer: function() {
                    return this.delay(0)
                },
                disposeAfter: function(t) {
                    if ("number" != typeof t || t <= 0) throw new Error("The value provided to disposeAfter (maxCalls) must be a number greater than zero.");
                    var i = this,
                        n = e.after(t, e.bind(function() {
                            i.unsubscribe()
                        }));
                    return i.pipeline.push(function(e, t, i) {
                        i(e, t), n()
                    }), i
                },
                distinct: function() {
                    return this.constraint(new _)
                },
                distinctUntilChanged: function() {
                    return this.constraint(new d)
                },
                invokeSubscriber: function(e, t) {
                    if (!this.inactive) {
                        var i = this,
                            n = i.pipeline,
                            r = n.length,
                            o = i._context,
                            a = -1,
                            s = !1;
                        if (r) {
                            n = n.concat([i.callback]);
                            ! function e(t, l) {
                                a += 1, a < r ? n[a].call(o, t, l, e) : (i.callback.call(o, t, l), s = !0)
                            }(e, t)
                        } else i.callback.call(o, e, t), s = !0;
                        return s
                    }
                },
                logError: function() {
                    if (console) {
                        var e;
                        e = console.warn ? console.warn : console.log, this.catch(e)
                    }
                    return this
                },
                once: function() {
                    return this.disposeAfter(1)
                },
                subscribe: function(e) {
                    return this.callback = e, this
                },
                unsubscribe: function() {
                    this.inactive || c.unsubscribe(this)
                },
                constraint: function(e) {
                    if ("function" != typeof e) throw new Error("Predicate constraint must be a function");
                    return this.pipeline.push(function(t, i, n) {
                        e.call(this, t, i) && n(t, i)
                    }), this
                },
                constraints: function(t) {
                    var i = this;
                    return e.each(t, function(e) {
                        i.constraint(e)
                    }), i
                },
                context: function(e) {
                    return this._context = e, this
                },
                debounce: function(t, i) {
                    if ("number" != typeof t) throw new Error("Milliseconds must be a number");
                    return this.pipeline.push(e.debounce(function(e, t, i) {
                        i(e, t)
                    }, t, !!i)), this
                },
                delay: function(e) {
                    if ("number" != typeof e) throw new Error("Milliseconds must be a number");
                    return this.pipeline.push(function(t, i, n) {
                        setTimeout(function() {
                            n(t, i)
                        }, e)
                    }), this
                },
                throttle: function(t) {
                    if ("number" != typeof t) throw new Error("Milliseconds must be a number");
                    var i = function(e, t, i) {
                        i(e, t)
                    };
                    return this.pipeline.push(e.throttle(i, t)), this
                }
            };
            for (var m = ["withConstraint", "withConstraints", "withContext", "withDebounce", "withDelay", "withThrottle"], g = ["constraint", "constraints", "context", "debounce", "delay", "throttle"], v = 0; v < 6; v++) {
                var y = m[v];
                f.prototype[y] = function(e, t) {
                    return function() {
                        if (console.warn || console.log) {
                            console.warn
                        }
                        return f.prototype[t].apply(this, arguments)
                    }
                }(y, g[v])
            }
            var b = (h.resolver = {
                    cache: {},
                    regex: {},
                    enableCache: !0,
                    compare: function(t, i, n) {
                        var r, o, a, s = i + h.cacheKeyDelimiter + t,
                            l = this.cache[s],
                            u = n || {},
                            c = this.enableCache && !u.resolverNoCache;
                        return !0 === l ? l : -1 === t.indexOf("#") && -1 === t.indexOf("*") ? (l = i === t, c && (this.cache[s] = l), l) : ((o = this.regex[t]) || (r = "^" + e.map(t.split("."), function(e) {
                            var t = "";
                            return a && (t = "#" !== a ? "\\.\\b" : "\\b"), t += "#" === e ? "[\\s\\S]*" : "*" === e ? "[^.]+" : e, a = e, t
                        }).join("") + "$", o = this.regex[t] = new RegExp(r)), l = o.test(i), c && (this.cache[s] = l), l)
                    },
                    reset: function() {
                        this.cache = {}, this.regex = {}
                    },
                    purge: function(t) {
                        var i = this,
                            n = h.cacheKeyDelimiter,
                            r = function(e, r) {
                                var o = r.split(n),
                                    a = o[0],
                                    s = o[1];
                                void 0 !== t.topic && t.topic !== a || void 0 !== t.binding && t.binding !== s || delete i.cache[r]
                            },
                            o = function(e, t) {
                                var r = t.split(n);
                                0 === c.getSubscribersFor({
                                    topic: r[0]
                                }).length && delete i.cache[t]
                            };
                        if (void 0 === t) this.reset();
                        else {
                            var a = !0 === t.compact ? o : r;
                            e.each(this.cache, a)
                        }
                    }
                }, 0),
                x = [],
                S = 0,
                T = e.bind(a, this, "created"),
                w = e.bind(a, this, "removed");
            if (e.extend(c, {
                    cache: {},
                    subscriptions: {},
                    wireTaps: [],
                    ChannelDefinition: p,
                    SubscriptionDefinition: f,
                    channel: function(e) {
                        return new p(e, this)
                    },
                    addWireTap: function(e) {
                        var t = this;
                        return t.wireTaps.push(e),
                            function() {
                                var i = t.wireTaps.indexOf(e); - 1 !== i && t.wireTaps.splice(i, 1)
                            }
                    },
                    noConflict: function() {
                        if ("undefined" == typeof window || "undefined" != typeof window && "function" == typeof define && define.amd) throw new Error("noConflict can only be used in browser clients which aren't using AMD modules");
                        return t.postal = l, this
                    },
                    getSubscribersFor: function(t) {
                        var i = [],
                            n = this;
                        return e.each(n.subscriptions, function(n) {
                            e.each(n, function(n) {
                                i = i.concat(e.filter(n, s(t, h.resolver)))
                            })
                        }), i
                    },
                    publish: function(t, i) {
                        ++b;
                        var r = t.channel = t.channel || h.DEFAULT_CHANNEL,
                            a = t.topic;
                        t.timeStamp = new Date, this.wireTaps.length && e.each(this.wireTaps, function(e) {
                            e(t.data, t, b)
                        });
                        var s = r + h.cacheKeyDelimiter + a,
                            l = this.cache[s],
                            u = 0,
                            c = 0;
                        if (l) e.each(l, function(e) {
                            e.invokeSubscriber(t.data, t) ? c++ : u++
                        });
                        else {
                            var p = o(a, this.cache, s, function(e) {
                                e.invokeSubscriber(t.data, t) ? c++ : u++
                            }, t);
                            e.each(this.subscriptions[r], function(t) {
                                e.each(t, p)
                            })
                        }
                        0 == --b && n(), i && i({
                            activated: c,
                            skipped: u
                        })
                    },
                    reset: function() {
                        this.unsubscribeFor(), h.resolver.reset(), this.subscriptions = {}, this.cache = {}
                    },
                    subscribe: function(t) {
                        var i, n = this.subscriptions,
                            r = new f(t.channel || h.DEFAULT_CHANNEL, t.topic, t.callback),
                            a = n[r.channel],
                            s = r.channel.length;
                        return a || (a = n[r.channel] = {}), i = n[r.channel][r.topic], i || (i = n[r.channel][r.topic] = []), i.push(r), e.each(e.keys(this.cache), function(e) {
                            e.substr(0, s) === r.channel && o(e.split(h.cacheKeyDelimiter)[1], this.cache, e)(r)
                        }, this), h.enableSystemMessages && this.publish(T(r)), r
                    },
                    unsubscribe: function() {
                        for (var t, i, n, o, a = arguments.length, s = 0; s < a; s++) {
                            if (t = arguments[s], t.inactive = !0, b) return void x.push(t);
                            if (i = this.subscriptions[t.channel], n = i && i[t.topic]) {
                                var l = n.length;
                                for (o = 0; o < l;) {
                                    if (n[o] === t) {
                                        n.splice(o, 1);
                                        break
                                    }
                                    o += 1
                                }
                                if (0 === n.length && (delete i[t.topic], e.keys(i).length || delete this.subscriptions[t.channel]), t.cacheKeys && t.cacheKeys.length)
                                    for (var u; u = t.cacheKeys.pop();) e.each(this.cache[u], r(t, u, this.cache));
                                if ("function" == typeof h.resolver.purge) {
                                    var c = !0 === h.autoCompactResolver ? 0 : "number" == typeof h.autoCompactResolver && h.autoCompactResolver - 1;
                                    c >= 0 && S === c ? (h.resolver.purge({
                                        compact: !0
                                    }), S = 0) : c >= 0 && S < c && (S += 1)
                                }
                            }
                            h.enableSystemMessages && this.publish(w(t))
                        }
                    },
                    unsubscribeFor: function(e) {
                        var t = [];
                        this.subscriptions && (t = this.getSubscribersFor(e), this.unsubscribe.apply(this, t))
                    }
                }), t && Object.prototype.hasOwnProperty.call(t, "__postalReady__") && e.isArray(t.__postalReady__))
                for (; t.__postalReady__.length;) t.__postalReady__.shift().onReady(c);
            return c
        }),
        function(e) {
            "use strict";
            if ("function" == typeof bootstrap) bootstrap("promise", e);
            else if ("object" == typeof exports && "object" == typeof module) module.exports = e();
            else if ("function" == typeof define && define.amd) define("promise", e);
            else if ("undefined" != typeof ses) {
                if (!ses.ok()) return;
                ses.makeQ = e
            } else {
                if ("undefined" == typeof window && "undefined" == typeof self) throw new Error("This environment was not anticipated by Q. Please file a bug.");
                var t = "undefined" != typeof window ? window : self,
                    i = t.Q;
                t.Q = e(), t.Q.noConflict = function() {
                    return t.Q = i, this
                }
            }
        }(function() {
            "use strict";

            function e(e) {
                return function() {
                    return Y.apply(e, arguments)
                }
            }

            function t(e) {
                return e === Object(e)
            }

            function i(e) {
                return "[object StopIteration]" === ee(e) || e instanceof W
            }

            function n(e, t) {
                if (U && t.stack && "object" == typeof e && null !== e && e.stack && -1 === e.stack.indexOf(te)) {
                    for (var i = [], n = t; n; n = n.source) n.stack && i.unshift(n.stack);
                    i.unshift(e.stack);
                    var o = i.join("\n" + te + "\n");
                    e.stack = r(o)
                }
            }

            function r(e) {
                for (var t = e.split("\n"), i = [], n = 0; n < t.length; ++n) {
                    var r = t[n];
                    s(r) || o(r) || !r || i.push(r)
                }
                return i.join("\n")
            }

            function o(e) {
                return -1 !== e.indexOf("(module.js:") || -1 !== e.indexOf("(node.js:")
            }

            function a(e) {
                var t = /at .+ \((.+):(\d+):(?:\d+)\)$/.exec(e);
                if (t) return [t[1], Number(t[2])];
                var i = /at ([^ ]+):(\d+):(?:\d+)$/.exec(e);
                if (i) return [i[1], Number(i[2])];
                var n = /.*@(.+):(\d+)$/.exec(e);
                return n ? [n[1], Number(n[2])] : void 0
            }

            function s(e) {
                var t = a(e);
                if (!t) return !1;
                var i = t[0],
                    n = t[1];
                return i === j && n >= H && n <= ae
            }

            function l() {
                if (U) try {
                    throw new Error
                } catch (n) {
                    var e = n.stack.split("\n"),
                        t = e[0].indexOf("@") > 0 ? e[1] : e[2],
                        i = a(t);
                    if (!i) return;
                    return j = i[0], i[1]
                }
            }

            function u(e) {
                return e instanceof f ? e : g(e) ? P(e) : E(e)
            }

            function c() {
                function e(e) {
                    t = e, o.source = e, q(i, function(t, i) {
                        u.nextTick(function() {
                            e.promiseDispatch.apply(e, i)
                        })
                    }, void 0), i = void 0, n = void 0
                }
                var t, i = [],
                    n = [],
                    r = $(c.prototype),
                    o = $(f.prototype);
                if (o.promiseDispatch = function(e, r, o) {
                        var a = V(arguments);
                        i ? (i.push(a), "when" === r && o[1] && n.push(o[1])) : u.nextTick(function() {
                            t.promiseDispatch.apply(t, a)
                        })
                    }, o.valueOf = function() {
                        if (i) return o;
                        var e = _(t);
                        return m(e) && (t = e), e
                    }, o.inspect = function() {
                        return t ? t.inspect() : {
                            state: "pending"
                        }
                    }, u.longStackSupport && U) try {
                    throw new Error
                } catch (e) {
                    o.stack = e.stack.substring(e.stack.indexOf("\n") + 1)
                }
                return r.promise = o, r.resolve = function(i) {
                    t || e(u(i))
                }, r.fulfill = function(i) {
                    t || e(E(i))
                }, r.reject = function(i) {
                    t || e(w(i))
                }, r.notify = function(e) {
                    t || q(n, function(t, i) {
                        u.nextTick(function() {
                            i(e)
                        })
                    }, void 0)
                }, r
            }

            function h(e) {
                if ("function" != typeof e) throw new TypeError("resolver must be a function.");
                var t = c();
                try {
                    e(t.resolve, t.reject, t.notify)
                } catch (e) {
                    t.reject(e)
                }
                return t.promise
            }

            function p(e) {
                return h(function(t, i) {
                    for (var n = 0, r = e.length; n < r; n++) u(e[n]).then(t, i)
                })
            }

            function f(e, t, i) {
                void 0 === t && (t = function(e) {
                    return w(new Error("Promise does not support operation: " + e))
                }), void 0 === i && (i = function() {
                    return {
                        state: "unknown"
                    }
                });
                var n = $(f.prototype);
                if (n.promiseDispatch = function(i, r, o) {
                        var a;
                        try {
                            a = e[r] ? e[r].apply(n, o) : t.call(n, r, o)
                        } catch (e) {
                            a = w(e)
                        }
                        i && i(a)
                    }, n.inspect = i, i) {
                    var r = i();
                    "rejected" === r.state && (n.exception = r.reason), n.valueOf = function() {
                        var e = i();
                        return "pending" === e.state || "rejected" === e.state ? n : e.value
                    }
                }
                return n
            }

            function d(e, t, i, n) {
                return u(e).then(t, i, n)
            }

            function _(e) {
                if (m(e)) {
                    var t = e.inspect();
                    if ("fulfilled" === t.state) return t.value
                }
                return e
            }

            function m(e) {
                return e instanceof f
            }

            function g(e) {
                return t(e) && "function" == typeof e.then
            }

            function v(e) {
                return m(e) && "pending" === e.inspect().state
            }

            function y(e) {
                return !m(e) || "fulfilled" === e.inspect().state
            }

            function b(e) {
                return m(e) && "rejected" === e.inspect().state
            }

            function x() {
                ie.length = 0, ne.length = 0, oe || (oe = !0)
            }

            function S(e, t) {
                oe && ("object" == typeof process && "function" == typeof process.emit && u.nextTick.runAfter(function() {
                    -1 !== J(ne, e) && (process.emit("unhandledRejection", t, e), re.push(e))
                }), ne.push(e), t && void 0 !== t.stack ? ie.push(t.stack) : ie.push("(no stack) " + t))
            }

            function T(e) {
                if (oe) {
                    var t = J(ne, e); - 1 !== t && ("object" == typeof process && "function" == typeof process.emit && u.nextTick.runAfter(function() {
                        var i = J(re, e); - 1 !== i && (process.emit("rejectionHandled", ie[t], e), re.splice(i, 1))
                    }), ne.splice(t, 1), ie.splice(t, 1))
                }
            }

            function w(e) {
                var t = f({
                    when: function(t) {
                        return t && T(this), t ? t(e) : this
                    }
                }, function() {
                    return this
                }, function() {
                    return {
                        state: "rejected",
                        reason: e
                    }
                });
                return S(t, e), t
            }

            function E(e) {
                return f({
                    when: function() {
                        return e
                    },
                    get: function(t) {
                        return e[t]
                    },
                    set: function(t, i) {
                        e[t] = i
                    },
                    delete: function(t) {
                        delete e[t]
                    },
                    post: function(t, i) {
                        return null === t || void 0 === t ? e.apply(void 0, i) : e[t].apply(e, i)
                    },
                    apply: function(t, i) {
                        return e.apply(t, i)
                    },
                    keys: function() {
                        return Z(e)
                    }
                }, void 0, function() {
                    return {
                        state: "fulfilled",
                        value: e
                    }
                })
            }

            function P(e) {
                var t = c();
                return u.nextTick(function() {
                    try {
                        e.then(t.resolve, t.reject, t.notify)
                    } catch (e) {
                        t.reject(e)
                    }
                }), t.promise
            }

            function R(e) {
                return f({
                    isDef: function() {}
                }, function(t, i) {
                    return D(e, t, i)
                }, function() {
                    return u(e).inspect()
                })
            }

            function O(e, t, i) {
                return u(e).spread(t, i)
            }

            function A(e) {
                return function() {
                    function t(e, t) {
                        var a;
                        if ("undefined" == typeof StopIteration) {
                            try {
                                a = n[e](t)
                            } catch (e) {
                                return w(e)
                            }
                            return a.done ? u(a.value) : d(a.value, r, o)
                        }
                        try {
                            a = n[e](t)
                        } catch (e) {
                            return i(e) ? u(e.value) : w(e)
                        }
                        return d(a, r, o)
                    }
                    var n = e.apply(this, arguments),
                        r = t.bind(t, "next"),
                        o = t.bind(t, "throw");
                    return r()
                }
            }

            function I(e) {
                u.done(u.async(e)())
            }

            function C(e) {
                throw new W(e)
            }

            function M(e) {
                return function() {
                    return O([this, N(arguments)], function(t, i) {
                        return e.apply(t, i)
                    })
                }
            }

            function D(e, t, i) {
                return u(e).dispatch(t, i)
            }

            function N(e) {
                return d(e, function(e) {
                    var t = 0,
                        i = c();
                    return q(e, function(n, r, o) {
                        var a;
                        m(r) && "fulfilled" === (a = r.inspect()).state ? e[o] = a.value : (++t, d(r, function(n) {
                            e[o] = n, 0 == --t && i.resolve(e)
                        }, i.reject, function(e) {
                            i.notify({
                                index: o,
                                value: e
                            })
                        }))
                    }, void 0), 0 === t && i.resolve(e), i.promise
                })
            }

            function L(e) {
                if (0 === e.length) return u.resolve();
                var t = u.defer(),
                    i = 0;
                return q(e, function(n, r, o) {
                    function a(e) {
                        t.resolve(e)
                    }

                    function s() {
                        0 === --i && t.reject(new Error("Q can't get fulfillment value from any promise, all promises were rejected."))
                    }

                    function l(e) {
                        t.notify({
                            index: o,
                            value: e
                        })
                    }
                    var u = e[o];
                    i++, d(u, a, s, l)
                }, void 0), t.promise
            }

            function k(e) {
                return d(e, function(e) {
                    return e = K(e, u), d(N(K(e, function(e) {
                        return d(e, X, X)
                    })), function() {
                        return e
                    })
                })
            }

            function F(e) {
                return u(e).allSettled()
            }

            function B(e, t) {
                return u(e).then(void 0, void 0, t)
            }

            function G(e, t) {
                return u(e).nodeify(t)
            }
            var U = !1;
            try {
                throw new Error
            } catch (e) {
                U = !!e.stack
            }
            var j, W, H = l(),
                X = function() {},
                z = function() {
                    function e() {
                        for (var e, n; i.next;) i = i.next, e = i.task, i.task = void 0, n = i.domain, n && (i.domain = void 0, n.enter()), t(e, n);
                        for (; s.length;) e = s.pop(), t(e);
                        r = !1
                    }

                    function t(t, i) {
                        try {
                            t()
                        } catch (t) {
                            if (a) throw i && i.exit(), setTimeout(e, 0), i && i.enter(), t;
                            setTimeout(function() {
                                throw t
                            }, 0)
                        }
                        i && i.exit()
                    }
                    var i = {
                            task: void 0,
                            next: null
                        },
                        n = i,
                        r = !1,
                        o = void 0,
                        a = !1,
                        s = [];
                    if (z = function(e) {
                            n = n.next = {
                                task: e,
                                domain: a && process.domain,
                                next: null
                            }, r || (r = !0, o())
                        }, "object" == typeof process && "[object process]" === process.toString() && process.nextTick) a = !0, o = function() {
                        process.nextTick(e)
                    };
                    else if ("function" == typeof setImmediate) o = "undefined" != typeof window ? setImmediate.bind(window, e) : function() {
                        setImmediate(e)
                    };
                    else if ("undefined" != typeof MessageChannel) {
                        var l = new MessageChannel;
                        l.port1.onmessage = function() {
                            o = u, l.port1.onmessage = e, e()
                        };
                        var u = function() {
                            l.port2.postMessage(0)
                        };
                        o = function() {
                            setTimeout(e, 0), u()
                        }
                    } else o = function() {
                        setTimeout(e, 0)
                    };
                    return z.runAfter = function(e) {
                        s.push(e), r || (r = !0, o())
                    }, z
                }(),
                Y = Function.call,
                V = e(Array.prototype.slice),
                q = e(Array.prototype.reduce || function(e, t) {
                    var i = 0,
                        n = this.length;
                    if (1 === arguments.length)
                        for (;;) {
                            if (i in this) {
                                t = this[i++];
                                break
                            }
                            if (++i >= n) throw new TypeError
                        }
                    for (; i < n; i++) i in this && (t = e(t, this[i], i));
                    return t
                }),
                J = e(Array.prototype.indexOf || function(e) {
                    for (var t = 0; t < this.length; t++)
                        if (this[t] === e) return t;
                    return -1
                }),
                K = e(Array.prototype.map || function(e, t) {
                    var i = this,
                        n = [];
                    return q(i, function(r, o, a) {
                        n.push(e.call(t, o, a, i))
                    }, void 0), n
                }),
                $ = Object.create || function(e) {
                    function t() {}
                    return t.prototype = e, new t
                },
                Q = e(Object.prototype.hasOwnProperty),
                Z = Object.keys || function(e) {
                    var t = [];
                    for (var i in e) Q(e, i) && t.push(i);
                    return t
                },
                ee = e(Object.prototype.toString);
            W = "undefined" != typeof ReturnValue ? ReturnValue : function(e) {
                this.value = e
            };
            var te = "From previous event:";
            u.resolve = u, u.nextTick = z, u.longStackSupport = !1, "object" == typeof process && process && process.env && process.env.Q_DEBUG && (u.longStackSupport = !0), u.defer = c, c.prototype.makeNodeResolver = function() {
                var e = this;
                return function(t, i) {
                    t ? e.reject(t) : arguments.length > 2 ? e.resolve(V(arguments, 1)) : e.resolve(i)
                }
            }, u.Promise = h, u.promise = h, h.race = p, h.all = N, h.reject = w, h.resolve = u, u.passByCopy = function(e) {
                return e
            }, f.prototype.passByCopy = function() {
                return this
            }, u.join = function(e, t) {
                return u(e).join(t)
            }, f.prototype.join = function(e) {
                return u([this, e]).spread(function(e, t) {
                    if (e === t) return e;
                    throw new Error("Q can't join: not the same: " + e + " " + t)
                })
            }, u.race = p, f.prototype.race = function() {
                return this.then(u.race)
            }, u.makePromise = f, f.prototype.toString = function() {
                return "[object Promise]"
            }, f.prototype.then = function(e, t, i) {
                function r(t) {
                    try {
                        return "function" == typeof e ? e(t) : t
                    } catch (e) {
                        return w(e)
                    }
                }

                function o(e) {
                    if ("function" == typeof t) {
                        n(e, s);
                        try {
                            return t(e)
                        } catch (e) {
                            return w(e)
                        }
                    }
                    return w(e)
                }

                function a(e) {
                    return "function" == typeof i ? i(e) : e
                }
                var s = this,
                    l = c(),
                    h = !1;
                return u.nextTick(function() {
                    s.promiseDispatch(function(e) {
                        h || (h = !0, l.resolve(r(e)))
                    }, "when", [function(e) {
                        h || (h = !0, l.resolve(o(e)))
                    }])
                }), s.promiseDispatch(void 0, "when", [void 0, function(e) {
                    var t, i = !1;
                    try {
                        t = a(e)
                    } catch (e) {
                        if (i = !0, !u.onerror) throw e;
                        u.onerror(e)
                    }
                    i || l.notify(t)
                }]), l.promise
            }, u.tap = function(e, t) {
                return u(e).tap(t)
            }, f.prototype.tap = function(e) {
                return e = u(e), this.then(function(t) {
                    return e.fcall(t).thenResolve(t)
                })
            }, u.when = d, f.prototype.thenResolve = function(e) {
                return this.then(function() {
                    return e
                })
            }, u.thenResolve = function(e, t) {
                return u(e).thenResolve(t)
            }, f.prototype.thenReject = function(e) {
                return this.then(function() {
                    throw e
                })
            }, u.thenReject = function(e, t) {
                return u(e).thenReject(t)
            }, u.nearer = _, u.isPromise = m, u.isPromiseAlike = g, u.isPending = v, f.prototype.isPending = function() {
                return "pending" === this.inspect().state
            }, u.isFulfilled = y, f.prototype.isFulfilled = function() {
                return "fulfilled" === this.inspect().state
            }, u.isRejected = b, f.prototype.isRejected = function() {
                return "rejected" === this.inspect().state
            };
            var ie = [],
                ne = [],
                re = [],
                oe = !0;
            u.resetUnhandledRejections = x, u.getUnhandledReasons = function() {
                return ie.slice()
            }, u.stopUnhandledRejectionTracking = function() {
                x(), oe = !1
            }, x(), u.reject = w, u.fulfill = E, u.master = R, u.spread = O, f.prototype.spread = function(e, t) {
                return this.all().then(function(t) {
                    return e.apply(void 0, t)
                }, t)
            }, u.async = A, u.spawn = I, u.return = C, u.promised = M, u.dispatch = D, f.prototype.dispatch = function(e, t) {
                var i = this,
                    n = c();
                return u.nextTick(function() {
                    i.promiseDispatch(n.resolve, e, t)
                }), n.promise
            }, u.get = function(e, t) {
                return u(e).dispatch("get", [t])
            }, f.prototype.get = function(e) {
                return this.dispatch("get", [e])
            }, u.set = function(e, t, i) {
                return u(e).dispatch("set", [t, i])
            }, f.prototype.set = function(e, t) {
                return this.dispatch("set", [e, t])
            }, u.del = u.delete = function(e, t) {
                return u(e).dispatch("delete", [t])
            }, f.prototype.del = f.prototype.delete = function(e) {
                return this.dispatch("delete", [e])
            }, u.mapply = u.post = function(e, t, i) {
                return u(e).dispatch("post", [t, i])
            }, f.prototype.mapply = f.prototype.post = function(e, t) {
                return this.dispatch("post", [e, t])
            }, u.send = u.mcall = u.invoke = function(e, t) {
                return u(e).dispatch("post", [t, V(arguments, 2)])
            }, f.prototype.send = f.prototype.mcall = f.prototype.invoke = function(e) {
                return this.dispatch("post", [e, V(arguments, 1)])
            }, u.fapply = function(e, t) {
                return u(e).dispatch("apply", [void 0, t])
            }, f.prototype.fapply = function(e) {
                return this.dispatch("apply", [void 0, e])
            }, u.try = u.fcall = function(e) {
                return u(e).dispatch("apply", [void 0, V(arguments, 1)])
            }, f.prototype.fcall = function() {
                return this.dispatch("apply", [void 0, V(arguments)])
            }, u.fbind = function(e) {
                var t = u(e),
                    i = V(arguments, 1);
                return function() {
                    return t.dispatch("apply", [this, i.concat(V(arguments))])
                }
            }, f.prototype.fbind = function() {
                var e = this,
                    t = V(arguments);
                return function() {
                    return e.dispatch("apply", [this, t.concat(V(arguments))])
                }
            }, u.keys = function(e) {
                return u(e).dispatch("keys", [])
            }, f.prototype.keys = function() {
                return this.dispatch("keys", [])
            }, u.all = N, f.prototype.all = function() {
                return N(this)
            }, u.any = L, f.prototype.any = function() {
                return L(this)
            }, u.allResolved = function(e, t, i) {
                return function() {
                    return "undefined" != typeof console && console.warn, e.apply(e, arguments)
                }
            }(k, "allResolved", "allSettled"), f.prototype.allResolved = function() {
                return k(this)
            }, u.allSettled = F, f.prototype.allSettled = function() {
                return this.then(function(e) {
                    return N(K(e, function(e) {
                        function t() {
                            return e.inspect()
                        }
                        return e = u(e), e.then(t, t)
                    }))
                })
            }, u.fail = u.catch = function(e, t) {
                return u(e).then(void 0, t)
            }, f.prototype.fail = f.prototype.catch = function(e) {
                return this.then(void 0, e)
            }, u.progress = B, f.prototype.progress = function(e) {
                return this.then(void 0, void 0, e)
            }, u.fin = u.finally = function(e, t) {
                return u(e).finally(t)
            }, f.prototype.fin = f.prototype.finally = function(e) {
                if (!e || "function" != typeof e.apply) throw new Error("Q can't apply finally callback");
                return e = u(e), this.then(function(t) {
                    return e.fcall().then(function() {
                        return t
                    })
                }, function(t) {
                    return e.fcall().then(function() {
                        throw t
                    })
                })
            }, u.done = function(e, t, i, n) {
                return u(e).done(t, i, n)
            }, f.prototype.done = function(e, t, i) {
                var r = function(e) {
                        u.nextTick(function() {
                            if (n(e, o), !u.onerror) throw e;
                            u.onerror(e)
                        })
                    },
                    o = e || t || i ? this.then(e, t, i) : this;
                "object" == typeof process && process && process.domain && (r = process.domain.bind(r)), o.then(void 0, r)
            }, u.timeout = function(e, t, i) {
                return u(e).timeout(t, i)
            }, f.prototype.timeout = function(e, t) {
                var i = c(),
                    n = setTimeout(function() {
                        t && "string" != typeof t || (t = new Error(t || "Timed out after " + e + " ms"), t.code = "ETIMEDOUT"), i.reject(t)
                    }, e);
                return this.then(function(e) {
                    clearTimeout(n), i.resolve(e)
                }, function(e) {
                    clearTimeout(n), i.reject(e)
                }, i.notify), i.promise
            }, u.delay = function(e, t) {
                return void 0 === t && (t = e, e = void 0), u(e).delay(t)
            }, f.prototype.delay = function(e) {
                return this.then(function(t) {
                    var i = c();
                    return setTimeout(function() {
                        i.resolve(t)
                    }, e), i.promise
                })
            }, u.nfapply = function(e, t) {
                return u(e).nfapply(t)
            }, f.prototype.nfapply = function(e) {
                var t = c(),
                    i = V(e);
                return i.push(t.makeNodeResolver()), this.fapply(i).fail(t.reject), t.promise
            }, u.nfcall = function(e) {
                var t = V(arguments, 1);
                return u(e).nfapply(t)
            }, f.prototype.nfcall = function() {
                var e = V(arguments),
                    t = c();
                return e.push(t.makeNodeResolver()), this.fapply(e).fail(t.reject), t.promise
            }, u.nfbind = u.denodeify = function(e) {
                if (void 0 === e) throw new Error("Q can't wrap an undefined function");
                var t = V(arguments, 1);
                return function() {
                    var i = t.concat(V(arguments)),
                        n = c();
                    return i.push(n.makeNodeResolver()), u(e).fapply(i).fail(n.reject), n.promise
                }
            }, f.prototype.nfbind = f.prototype.denodeify = function() {
                var e = V(arguments);
                return e.unshift(this), u.denodeify.apply(void 0, e)
            }, u.nbind = function(e, t) {
                var i = V(arguments, 2);
                return function() {
                    function n() {
                        return e.apply(t, arguments)
                    }
                    var r = i.concat(V(arguments)),
                        o = c();
                    return r.push(o.makeNodeResolver()), u(n).fapply(r).fail(o.reject), o.promise
                }
            }, f.prototype.nbind = function() {
                var e = V(arguments, 0);
                return e.unshift(this), u.nbind.apply(void 0, e)
            }, u.nmapply = u.npost = function(e, t, i) {
                return u(e).npost(t, i)
            }, f.prototype.nmapply = f.prototype.npost = function(e, t) {
                var i = V(t || []),
                    n = c();
                return i.push(n.makeNodeResolver()), this.dispatch("post", [e, i]).fail(n.reject), n.promise
            }, u.nsend = u.nmcall = u.ninvoke = function(e, t) {
                var i = V(arguments, 2),
                    n = c();
                return i.push(n.makeNodeResolver()), u(e).dispatch("post", [t, i]).fail(n.reject), n.promise
            }, f.prototype.nsend = f.prototype.nmcall = f.prototype.ninvoke = function(e) {
                var t = V(arguments, 1),
                    i = c();
                return t.push(i.makeNodeResolver()), this.dispatch("post", [e, t]).fail(i.reject), i.promise
            }, u.nodeify = G, f.prototype.nodeify = function(e) {
                if (!e) return this;
                this.then(function(t) {
                    u.nextTick(function() {
                        e(null, t)
                    })
                }, function(t) {
                    u.nextTick(function() {
                        e(t)
                    })
                })
            }, u.noConflict = function() {
                throw new Error("Q.noConflict only works when Q is used as a global")
            };
            var ae = l();
            return u
        }),
        function() {
            function e(e) {
                function t(t, i, n, r, o, a) {
                    for (; o >= 0 && a > o; o += e) {
                        var s = r ? r[o] : o;
                        n = i(n, t[s], s, t)
                    }
                    return n
                }
                return function(i, n, r, o) {
                    n = y(n, o, 4);
                    var a = !P(i) && v.keys(i),
                        s = (a || i).length,
                        l = e > 0 ? 0 : s - 1;
                    return arguments.length < 3 && (r = i[a ? a[l] : l], l += e), t(i, n, r, a, l, s)
                }
            }

            function t(e) {
                return function(t, i, n) {
                    i = b(i, n);
                    for (var r = E(t), o = e > 0 ? 0 : r - 1; o >= 0 && r > o; o += e)
                        if (i(t[o], o, t)) return o;
                    return -1
                }
            }

            function i(e, t, i) {
                return function(n, r, o) {
                    var a = 0,
                        s = E(n);
                    if ("number" == typeof o) e > 0 ? a = o >= 0 ? o : Math.max(o + s, a) : s = o >= 0 ? Math.min(o + 1, s) : o + s + 1;
                    else if (i && o && s) return o = i(n, r), n[o] === r ? o : -1;
                    if (r !== r) return o = t(c.call(n, a, s), v.isNaN), o >= 0 ? o + a : -1;
                    for (o = e > 0 ? a : s - 1; o >= 0 && s > o; o += e)
                        if (n[o] === r) return o;
                    return -1
                }
            }

            function n(e, t) {
                var i = C.length,
                    n = e.constructor,
                    r = v.isFunction(n) && n.prototype || s,
                    o = "constructor";
                for (v.has(e, o) && !v.contains(t, o) && t.push(o); i--;)(o = C[i]) in e && e[o] !== r[o] && !v.contains(t, o) && t.push(o)
            }
            var r = this,
                o = r._,
                a = Array.prototype,
                s = Object.prototype,
                l = Function.prototype,
                u = a.push,
                c = a.slice,
                h = s.toString,
                p = s.hasOwnProperty,
                f = Array.isArray,
                d = Object.keys,
                _ = l.bind,
                m = Object.create,
                g = function() {},
                v = function(e) {
                    return e instanceof v ? e : this instanceof v ? void(this._wrapped = e) : new v(e)
                };
            "undefined" != typeof exports ? ("undefined" != typeof module && module.exports && (exports = module.exports = v), exports._ = v) : r._ = v, v.VERSION = "1.8.3";
            var y = function(e, t, i) {
                    if (void 0 === t) return e;
                    switch (null == i ? 3 : i) {
                        case 1:
                            return function(i) {
                                return e.call(t, i)
                            };
                        case 2:
                            return function(i, n) {
                                return e.call(t, i, n)
                            };
                        case 3:
                            return function(i, n, r) {
                                return e.call(t, i, n, r)
                            };
                        case 4:
                            return function(i, n, r, o) {
                                return e.call(t, i, n, r, o)
                            }
                    }
                    return function() {
                        return e.apply(t, arguments)
                    }
                },
                b = function(e, t, i) {
                    return null == e ? v.identity : v.isFunction(e) ? y(e, t, i) : v.isObject(e) ? v.matcher(e) : v.property(e)
                };
            v.iteratee = function(e, t) {
                return b(e, t, 1 / 0)
            };
            var x = function(e, t) {
                    return function(i) {
                        var n = arguments.length;
                        if (2 > n || null == i) return i;
                        for (var r = 1; n > r; r++)
                            for (var o = arguments[r], a = e(o), s = a.length, l = 0; s > l; l++) {
                                var u = a[l];
                                t && void 0 !== i[u] || (i[u] = o[u])
                            }
                        return i
                    }
                },
                S = function(e) {
                    if (!v.isObject(e)) return {};
                    if (m) return m(e);
                    g.prototype = e;
                    var t = new g;
                    return g.prototype = null, t
                },
                T = function(e) {
                    return function(t) {
                        return null == t ? void 0 : t[e]
                    }
                },
                w = Math.pow(2, 53) - 1,
                E = T("length"),
                P = function(e) {
                    var t = E(e);
                    return "number" == typeof t && t >= 0 && w >= t
                };
            v.each = v.forEach = function(e, t, i) {
                t = y(t, i);
                var n, r;
                if (P(e))
                    for (n = 0, r = e.length; r > n; n++) t(e[n], n, e);
                else {
                    var o = v.keys(e);
                    for (n = 0, r = o.length; r > n; n++) t(e[o[n]], o[n], e)
                }
                return e
            }, v.map = v.collect = function(e, t, i) {
                t = b(t, i);
                for (var n = !P(e) && v.keys(e), r = (n || e).length, o = Array(r), a = 0; r > a; a++) {
                    var s = n ? n[a] : a;
                    o[a] = t(e[s], s, e)
                }
                return o
            }, v.reduce = v.foldl = v.inject = e(1), v.reduceRight = v.foldr = e(-1), v.find = v.detect = function(e, t, i) {
                var n;
                return n = P(e) ? v.findIndex(e, t, i) : v.findKey(e, t, i), void 0 !== n && -1 !== n ? e[n] : void 0
            }, v.filter = v.select = function(e, t, i) {
                var n = [];
                return t = b(t, i), v.each(e, function(e, i, r) {
                    t(e, i, r) && n.push(e)
                }), n
            }, v.reject = function(e, t, i) {
                return v.filter(e, v.negate(b(t)), i)
            }, v.every = v.all = function(e, t, i) {
                t = b(t, i);
                for (var n = !P(e) && v.keys(e), r = (n || e).length, o = 0; r > o; o++) {
                    var a = n ? n[o] : o;
                    if (!t(e[a], a, e)) return !1
                }
                return !0
            }, v.some = v.any = function(e, t, i) {
                t = b(t, i);
                for (var n = !P(e) && v.keys(e), r = (n || e).length, o = 0; r > o; o++) {
                    var a = n ? n[o] : o;
                    if (t(e[a], a, e)) return !0
                }
                return !1
            }, v.contains = v.includes = v.include = function(e, t, i, n) {
                return P(e) || (e = v.values(e)), ("number" != typeof i || n) && (i = 0), v.indexOf(e, t, i) >= 0
            }, v.invoke = function(e, t) {
                var i = c.call(arguments, 2),
                    n = v.isFunction(t);
                return v.map(e, function(e) {
                    var r = n ? t : e[t];
                    return null == r ? r : r.apply(e, i)
                })
            }, v.pluck = function(e, t) {
                return v.map(e, v.property(t))
            }, v.where = function(e, t) {
                return v.filter(e, v.matcher(t))
            }, v.findWhere = function(e, t) {
                return v.find(e, v.matcher(t))
            }, v.max = function(e, t, i) {
                var n, r, o = -1 / 0,
                    a = -1 / 0;
                if (null == t && null != e) {
                    e = P(e) ? e : v.values(e);
                    for (var s = 0, l = e.length; l > s; s++)(n = e[s]) > o && (o = n)
                } else t = b(t, i), v.each(e, function(e, i, n) {
                    ((r = t(e, i, n)) > a || r === -1 / 0 && o === -1 / 0) && (o = e, a = r)
                });
                return o
            }, v.min = function(e, t, i) {
                var n, r, o = 1 / 0,
                    a = 1 / 0;
                if (null == t && null != e) {
                    e = P(e) ? e : v.values(e);
                    for (var s = 0, l = e.length; l > s; s++) n = e[s], o > n && (o = n)
                } else t = b(t, i), v.each(e, function(e, i, n) {
                    r = t(e, i, n), (a > r || 1 / 0 === r && 1 / 0 === o) && (o = e, a = r)
                });
                return o
            }, v.shuffle = function(e) {
                for (var t, i = P(e) ? e : v.values(e), n = i.length, r = Array(n), o = 0; n > o; o++) t = v.random(0, o), t !== o && (r[o] = r[t]), r[t] = i[o];
                return r
            }, v.sample = function(e, t, i) {
                return null == t || i ? (P(e) || (e = v.values(e)), e[v.random(e.length - 1)]) : v.shuffle(e).slice(0, Math.max(0, t))
            }, v.sortBy = function(e, t, i) {
                return t = b(t, i), v.pluck(v.map(e, function(e, i, n) {
                    return {
                        value: e,
                        index: i,
                        criteria: t(e, i, n)
                    }
                }).sort(function(e, t) {
                    var i = e.criteria,
                        n = t.criteria;
                    if (i !== n) {
                        if (i > n || void 0 === i) return 1;
                        if (n > i || void 0 === n) return -1
                    }
                    return e.index - t.index
                }), "value")
            };
            var R = function(e) {
                return function(t, i, n) {
                    var r = {};
                    return i = b(i, n), v.each(t, function(n, o) {
                        var a = i(n, o, t);
                        e(r, n, a)
                    }), r
                }
            };
            v.groupBy = R(function(e, t, i) {
                v.has(e, i) ? e[i].push(t) : e[i] = [t]
            }), v.indexBy = R(function(e, t, i) {
                e[i] = t
            }), v.countBy = R(function(e, t, i) {
                v.has(e, i) ? e[i]++ : e[i] = 1
            }), v.toArray = function(e) {
                return e ? v.isArray(e) ? c.call(e) : P(e) ? v.map(e, v.identity) : v.values(e) : []
            }, v.size = function(e) {
                return null == e ? 0 : P(e) ? e.length : v.keys(e).length
            }, v.partition = function(e, t, i) {
                t = b(t, i);
                var n = [],
                    r = [];
                return v.each(e, function(e, i, o) {
                    (t(e, i, o) ? n : r).push(e)
                }), [n, r]
            }, v.first = v.head = v.take = function(e, t, i) {
                return null == e ? void 0 : null == t || i ? e[0] : v.initial(e, e.length - t)
            }, v.initial = function(e, t, i) {
                return c.call(e, 0, Math.max(0, e.length - (null == t || i ? 1 : t)))
            }, v.last = function(e, t, i) {
                return null == e ? void 0 : null == t || i ? e[e.length - 1] : v.rest(e, Math.max(0, e.length - t))
            }, v.rest = v.tail = v.drop = function(e, t, i) {
                return c.call(e, null == t || i ? 1 : t)
            }, v.compact = function(e) {
                return v.filter(e, v.identity)
            };
            var O = function(e, t, i, n) {
                for (var r = [], o = 0, a = n || 0, s = E(e); s > a; a++) {
                    var l = e[a];
                    if (P(l) && (v.isArray(l) || v.isArguments(l))) {
                        t || (l = O(l, t, i));
                        var u = 0,
                            c = l.length;
                        for (r.length += c; c > u;) r[o++] = l[u++]
                    } else i || (r[o++] = l)
                }
                return r
            };
            v.flatten = function(e, t) {
                return O(e, t, !1)
            }, v.without = function(e) {
                return v.difference(e, c.call(arguments, 1))
            }, v.uniq = v.unique = function(e, t, i, n) {
                v.isBoolean(t) || (n = i, i = t, t = !1), null != i && (i = b(i, n));
                for (var r = [], o = [], a = 0, s = E(e); s > a; a++) {
                    var l = e[a],
                        u = i ? i(l, a, e) : l;
                    t ? (a && o === u || r.push(l), o = u) : i ? v.contains(o, u) || (o.push(u), r.push(l)) : v.contains(r, l) || r.push(l)
                }
                return r
            }, v.union = function() {
                return v.uniq(O(arguments, !0, !0))
            }, v.intersection = function(e) {
                for (var t = [], i = arguments.length, n = 0, r = E(e); r > n; n++) {
                    var o = e[n];
                    if (!v.contains(t, o)) {
                        for (var a = 1; i > a && v.contains(arguments[a], o); a++);
                        a === i && t.push(o)
                    }
                }
                return t
            }, v.difference = function(e) {
                var t = O(arguments, !0, !0, 1);
                return v.filter(e, function(e) {
                    return !v.contains(t, e)
                })
            }, v.zip = function() {
                return v.unzip(arguments)
            }, v.unzip = function(e) {
                for (var t = e && v.max(e, E).length || 0, i = Array(t), n = 0; t > n; n++) i[n] = v.pluck(e, n);
                return i
            }, v.object = function(e, t) {
                for (var i = {}, n = 0, r = E(e); r > n; n++) t ? i[e[n]] = t[n] : i[e[n][0]] = e[n][1];
                return i
            }, v.findIndex = t(1), v.findLastIndex = t(-1), v.sortedIndex = function(e, t, i, n) {
                i = b(i, n, 1);
                for (var r = i(t), o = 0, a = E(e); a > o;) {
                    var s = Math.floor((o + a) / 2);
                    i(e[s]) < r ? o = s + 1 : a = s
                }
                return o
            }, v.indexOf = i(1, v.findIndex, v.sortedIndex), v.lastIndexOf = i(-1, v.findLastIndex), v.range = function(e, t, i) {
                null == t && (t = e || 0, e = 0), i = i || 1;
                for (var n = Math.max(Math.ceil((t - e) / i), 0), r = Array(n), o = 0; n > o; o++, e += i) r[o] = e;
                return r
            };
            var A = function(e, t, i, n, r) {
                if (!(n instanceof t)) return e.apply(i, r);
                var o = S(e.prototype),
                    a = e.apply(o, r);
                return v.isObject(a) ? a : o
            };
            v.bind = function(e, t) {
                if (_ && e.bind === _) return _.apply(e, c.call(arguments, 1));
                if (!v.isFunction(e)) throw new TypeError("Bind must be called on a function");
                var i = c.call(arguments, 2),
                    n = function() {
                        return A(e, n, t, this, i.concat(c.call(arguments)))
                    };
                return n
            }, v.partial = function(e) {
                var t = c.call(arguments, 1),
                    i = function() {
                        for (var n = 0, r = t.length, o = Array(r), a = 0; r > a; a++) o[a] = t[a] === v ? arguments[n++] : t[a];
                        for (; n < arguments.length;) o.push(arguments[n++]);
                        return A(e, i, this, this, o)
                    };
                return i
            }, v.bindAll = function(e) {
                var t, i, n = arguments.length;
                if (1 >= n) throw new Error("bindAll must be passed function names");
                for (t = 1; n > t; t++) i = arguments[t], e[i] = v.bind(e[i], e);
                return e
            }, v.memoize = function(e, t) {
                var i = function(n) {
                    var r = i.cache,
                        o = "" + (t ? t.apply(this, arguments) : n);
                    return v.has(r, o) || (r[o] = e.apply(this, arguments)), r[o]
                };
                return i.cache = {}, i
            }, v.delay = function(e, t) {
                var i = c.call(arguments, 2);
                return setTimeout(function() {
                    return e.apply(null, i)
                }, t)
            }, v.defer = v.partial(v.delay, v, 1), v.throttle = function(e, t, i) {
                var n, r, o, a = null,
                    s = 0;
                i || (i = {});
                var l = function() {
                    s = !1 === i.leading ? 0 : v.now(), a = null, o = e.apply(n, r), a || (n = r = null)
                };
                return function() {
                    var u = v.now();
                    s || !1 !== i.leading || (s = u);
                    var c = t - (u - s);
                    return n = this, r = arguments, 0 >= c || c > t ? (a && (clearTimeout(a), a = null), s = u, o = e.apply(n, r), a || (n = r = null)) : a || !1 === i.trailing || (a = setTimeout(l, c)), o
                }
            }, v.debounce = function(e, t, i) {
                var n, r, o, a, s, l = function() {
                    var u = v.now() - a;
                    t > u && u >= 0 ? n = setTimeout(l, t - u) : (n = null, i || (s = e.apply(o, r), n || (o = r = null)))
                };
                return function() {
                    o = this, r = arguments, a = v.now();
                    var u = i && !n;
                    return n || (n = setTimeout(l, t)), u && (s = e.apply(o, r), o = r = null), s
                }
            }, v.wrap = function(e, t) {
                return v.partial(t, e)
            }, v.negate = function(e) {
                return function() {
                    return !e.apply(this, arguments)
                }
            }, v.compose = function() {
                var e = arguments,
                    t = e.length - 1;
                return function() {
                    for (var i = t, n = e[t].apply(this, arguments); i--;) n = e[i].call(this, n);
                    return n
                }
            }, v.after = function(e, t) {
                return function() {
                    return --e < 1 ? t.apply(this, arguments) : void 0
                }
            }, v.before = function(e, t) {
                var i;
                return function() {
                    return --e > 0 && (i = t.apply(this, arguments)), 1 >= e && (t = null), i
                }
            }, v.once = v.partial(v.before, 2);
            var I = !{
                    toString: null
                }.propertyIsEnumerable("toString"),
                C = ["valueOf", "isPrototypeOf", "toString", "propertyIsEnumerable", "hasOwnProperty", "toLocaleString"];
            v.keys = function(e) {
                    if (!v.isObject(e)) return [];
                    if (d) return d(e);
                    var t = [];
                    for (var i in e) v.has(e, i) && t.push(i);
                    return I && n(e, t), t
                }, v.allKeys = function(e) {
                    if (!v.isObject(e)) return [];
                    var t = [];
                    for (var i in e) t.push(i);
                    return I && n(e, t), t
                }, v.values = function(e) {
                    for (var t = v.keys(e), i = t.length, n = Array(i), r = 0; i > r; r++) n[r] = e[t[r]];
                    return n
                }, v.mapObject = function(e, t, i) {
                    t = b(t, i);
                    for (var n, r = v.keys(e), o = r.length, a = {}, s = 0; o > s; s++) n = r[s], a[n] = t(e[n], n, e);
                    return a
                }, v.pairs = function(e) {
                    for (var t = v.keys(e), i = t.length, n = Array(i), r = 0; i > r; r++) n[r] = [t[r], e[t[r]]];
                    return n
                }, v.invert = function(e) {
                    for (var t = {}, i = v.keys(e), n = 0, r = i.length; r > n; n++) t[e[i[n]]] = i[n];
                    return t
                }, v.functions = v.methods = function(e) {
                    var t = [];
                    for (var i in e) v.isFunction(e[i]) && t.push(i);
                    return t.sort()
                }, v.extend = x(v.allKeys),
                v.extendOwn = v.assign = x(v.keys), v.findKey = function(e, t, i) {
                    t = b(t, i);
                    for (var n, r = v.keys(e), o = 0, a = r.length; a > o; o++)
                        if (n = r[o], t(e[n], n, e)) return n
                }, v.pick = function(e, t, i) {
                    var n, r, o = {},
                        a = e;
                    if (null == a) return o;
                    v.isFunction(t) ? (r = v.allKeys(a), n = y(t, i)) : (r = O(arguments, !1, !1, 1), n = function(e, t, i) {
                        return t in i
                    }, a = Object(a));
                    for (var s = 0, l = r.length; l > s; s++) {
                        var u = r[s],
                            c = a[u];
                        n(c, u, a) && (o[u] = c)
                    }
                    return o
                }, v.omit = function(e, t, i) {
                    if (v.isFunction(t)) t = v.negate(t);
                    else {
                        var n = v.map(O(arguments, !1, !1, 1), String);
                        t = function(e, t) {
                            return !v.contains(n, t)
                        }
                    }
                    return v.pick(e, t, i)
                }, v.defaults = x(v.allKeys, !0), v.create = function(e, t) {
                    var i = S(e);
                    return t && v.extendOwn(i, t), i
                }, v.clone = function(e) {
                    return v.isObject(e) ? v.isArray(e) ? e.slice() : v.extend({}, e) : e
                }, v.tap = function(e, t) {
                    return t(e), e
                }, v.isMatch = function(e, t) {
                    var i = v.keys(t),
                        n = i.length;
                    if (null == e) return !n;
                    for (var r = Object(e), o = 0; n > o; o++) {
                        var a = i[o];
                        if (t[a] !== r[a] || !(a in r)) return !1
                    }
                    return !0
                };
            var M = function(e, t, i, n) {
                if (e === t) return 0 !== e || 1 / e == 1 / t;
                if (null == e || null == t) return e === t;
                e instanceof v && (e = e._wrapped), t instanceof v && (t = t._wrapped);
                var r = h.call(e);
                if (r !== h.call(t)) return !1;
                switch (r) {
                    case "[object RegExp]":
                    case "[object String]":
                        return "" + e == "" + t;
                    case "[object Number]":
                        return +e != +e ? +t != +t : 0 == +e ? 1 / +e == 1 / t : +e == +t;
                    case "[object Date]":
                    case "[object Boolean]":
                        return +e == +t
                }
                var o = "[object Array]" === r;
                if (!o) {
                    if ("object" != typeof e || "object" != typeof t) return !1;
                    var a = e.constructor,
                        s = t.constructor;
                    if (a !== s && !(v.isFunction(a) && a instanceof a && v.isFunction(s) && s instanceof s) && "constructor" in e && "constructor" in t) return !1
                }
                i = i || [], n = n || [];
                for (var l = i.length; l--;)
                    if (i[l] === e) return n[l] === t;
                if (i.push(e), n.push(t), o) {
                    if ((l = e.length) !== t.length) return !1;
                    for (; l--;)
                        if (!M(e[l], t[l], i, n)) return !1
                } else {
                    var u, c = v.keys(e);
                    if (l = c.length, v.keys(t).length !== l) return !1;
                    for (; l--;)
                        if (u = c[l], !v.has(t, u) || !M(e[u], t[u], i, n)) return !1
                }
                return i.pop(), n.pop(), !0
            };
            v.isEqual = function(e, t) {
                return M(e, t)
            }, v.isEmpty = function(e) {
                return null == e || (P(e) && (v.isArray(e) || v.isString(e) || v.isArguments(e)) ? 0 === e.length : 0 === v.keys(e).length)
            }, v.isElement = function(e) {
                return !(!e || 1 !== e.nodeType)
            }, v.isArray = f || function(e) {
                return "[object Array]" === h.call(e)
            }, v.isObject = function(e) {
                var t = typeof e;
                return "function" === t || "object" === t && !!e
            }, v.each(["Arguments", "Function", "String", "Number", "Date", "RegExp", "Error"], function(e) {
                v["is" + e] = function(t) {
                    return h.call(t) === "[object " + e + "]"
                }
            }), v.isArguments(arguments) || (v.isArguments = function(e) {
                return v.has(e, "callee")
            }), "function" != typeof /./ && "object" != typeof Int8Array && (v.isFunction = function(e) {
                return "function" == typeof e || !1
            }), v.isFinite = function(e) {
                return isFinite(e) && !isNaN(parseFloat(e))
            }, v.isNaN = function(e) {
                return v.isNumber(e) && e !== +e
            }, v.isBoolean = function(e) {
                return !0 === e || !1 === e || "[object Boolean]" === h.call(e)
            }, v.isNull = function(e) {
                return null === e
            }, v.isUndefined = function(e) {
                return void 0 === e
            }, v.has = function(e, t) {
                return null != e && p.call(e, t)
            }, v.noConflict = function() {
                return r._ = o, this
            }, v.identity = function(e) {
                return e
            }, v.constant = function(e) {
                return function() {
                    return e
                }
            }, v.noop = function() {}, v.property = T, v.propertyOf = function(e) {
                return null == e ? function() {} : function(t) {
                    return e[t]
                }
            }, v.matcher = v.matches = function(e) {
                return e = v.extendOwn({}, e),
                    function(t) {
                        return v.isMatch(t, e)
                    }
            }, v.times = function(e, t, i) {
                var n = Array(Math.max(0, e));
                t = y(t, i, 1);
                for (var r = 0; e > r; r++) n[r] = t(r);
                return n
            }, v.random = function(e, t) {
                return null == t && (t = e, e = 0), e + Math.floor(Math.random() * (t - e + 1))
            }, v.now = Date.now || function() {
                return (new Date).getTime()
            };
            var D = {
                    "&": "&amp;",
                    "<": "&lt;",
                    ">": "&gt;",
                    '"': "&quot;",
                    "'": "&#x27;",
                    "`": "&#x60;"
                },
                N = v.invert(D),
                L = function(e) {
                    var t = function(t) {
                            return e[t]
                        },
                        i = "(?:" + v.keys(e).join("|") + ")",
                        n = RegExp(i),
                        r = RegExp(i, "g");
                    return function(e) {
                        return e = null == e ? "" : "" + e, n.test(e) ? e.replace(r, t) : e
                    }
                };
            v.escape = L(D), v.unescape = L(N), v.result = function(e, t, i) {
                var n = null == e ? void 0 : e[t];
                return void 0 === n && (n = i), v.isFunction(n) ? n.call(e) : n
            };
            var k = 0;
            v.uniqueId = function(e) {
                var t = ++k + "";
                return e ? e + t : t
            }, v.templateSettings = {
                evaluate: /<%([\s\S]+?)%>/g,
                interpolate: /<%=([\s\S]+?)%>/g,
                escape: /<%-([\s\S]+?)%>/g
            };
            var F = /(.)^/,
                B = {
                    "'": "'",
                    "\\": "\\",
                    "\r": "r",
                    "\n": "n",
                    "\u2028": "u2028",
                    "\u2029": "u2029"
                },
                G = /\\|'|\r|\n|\u2028|\u2029/g,
                U = function(e) {
                    return "\\" + B[e]
                };
            v.template = function(e, t, i) {
                !t && i && (t = i), t = v.defaults({}, t, v.templateSettings);
                var n = RegExp([(t.escape || F).source, (t.interpolate || F).source, (t.evaluate || F).source].join("|") + "|$", "g"),
                    r = 0,
                    o = "__p+='";
                e.replace(n, function(t, i, n, a, s) {
                    return o += e.slice(r, s).replace(G, U), r = s + t.length, i ? o += "'+\n((__t=(" + i + "))==null?'':_.escape(__t))+\n'" : n ? o += "'+\n((__t=(" + n + "))==null?'':__t)+\n'" : a && (o += "';\n" + a + "\n__p+='"), t
                }), o += "';\n", t.variable || (o = "with(obj||{}){\n" + o + "}\n"), o = "var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n" + o + "return __p;\n";
                try {
                    var a = new Function(t.variable || "obj", "_", o)
                } catch (e) {
                    throw e.source = o, e
                }
                var s = function(e) {
                    return a.call(this, e, v)
                };
                return s.source = "function(" + (t.variable || "obj") + "){\n" + o + "}", s
            }, v.chain = function(e) {
                var t = v(e);
                return t._chain = !0, t
            };
            var j = function(e, t) {
                return e._chain ? v(t).chain() : t
            };
            v.mixin = function(e) {
                v.each(v.functions(e), function(t) {
                    var i = v[t] = e[t];
                    v.prototype[t] = function() {
                        var e = [this._wrapped];
                        return u.apply(e, arguments), j(this, i.apply(v, e))
                    }
                })
            }, v.mixin(v), v.each(["pop", "push", "reverse", "shift", "sort", "splice", "unshift"], function(e) {
                var t = a[e];
                v.prototype[e] = function() {
                    var i = this._wrapped;
                    return t.apply(i, arguments), "shift" !== e && "splice" !== e || 0 !== i.length || delete i[0], j(this, i)
                }
            }), v.each(["concat", "join", "slice"], function(e) {
                var t = a[e];
                v.prototype[e] = function() {
                    return j(this, t.apply(this._wrapped, arguments))
                }
            }), v.prototype.value = function() {
                return this._wrapped
            }, v.prototype.valueOf = v.prototype.toJSON = v.prototype.value, v.prototype.toString = function() {
                return "" + this._wrapped
            }, "function" == typeof define && define.amd && define("underscore", [], function() {
                return v
            })
        }.call(this),
        function(e, t) {
            "object" == typeof module && module.exports ? module.exports = t(require("underscore")) : "function" == typeof define && define.amd ? define("riveter", ["underscore"], function(i) {
                return t(i, e)
            }) : e.riveter = t(e._, e)
        }(this, function(e, t, i) {
            var n = Array.prototype.slice,
                r = function() {
                    for (var e = n.call(arguments, 0); e.length;) r.rivet(e.shift())
                };
            return r.rivet = function(e) {
                e.hasOwnProperty("extend") || (e.extend = function(t, i) {
                    return r.extend(e, t, i)
                }), e.hasOwnProperty("compose") || (e.compose = function() {
                    return r.compose.apply(this, [e].concat(n.call(arguments, 0)))
                }), e.hasOwnProperty("inherits") || (e.inherits = function(t, i) {
                    r.inherits(e, t, i)
                }), e.hasOwnProperty("mixin") || (e.mixin = function() {
                    r.mixin.apply(this, [e].concat(n.call(arguments, 0)))
                })
            }, r.inherits = function(t, i, n) {
                var o, a = function() {},
                    s = function() {
                        i.apply(this, arguments)
                    };
                return "object" == typeof t ? (t.hasOwnProperty("constructor") && (s = t.constructor), o = t) : (s = t, o = t.prototype), r.rivet(s), e.defaults(s, i, n), a.prototype = i.prototype, s.prototype = new a, e.extend(s.prototype, o, {
                    constructor: s
                }), s.__super = i, s.__super__ = i.prototype, s
            }, r.extend = function(e, t, i) {
                return r.inherits(t, e, i)
            }, r.compose = function() {
                var t = n.call(arguments, 0),
                    i = t.shift();
                r.rivet(i);
                var o = e.reduce(t, function(e, t) {
                        return t.hasOwnProperty("_preInit") && e.preInit.push(t._preInit), t.hasOwnProperty("_postInit") && e.postInit.push(t._postInit), t = t.mixin || t, e.items.push(t), e
                    }, {
                        items: [],
                        preInit: [],
                        postInit: []
                    }),
                    a = i.extend({
                        constructor: function() {
                            var t = n.call(arguments, 0);
                            e.each(o.preInit, function(e) {
                                e.apply(this, t)
                            }, this), i.prototype.constructor.apply(this, t), e.each(o.postInit, function(e) {
                                e.apply(this, t)
                            }, this)
                        }
                    });
                return r.rivet(a), e.defaults(a.prototype, e.extend.apply(null, [{}].concat(o.items))), a
            }, r.mixin = function() {
                var t = n.call(arguments, 0),
                    i = t.shift();
                r.rivet(i), e.defaults(i.prototype, e.extend.apply(null, [{}].concat(t)))
            }, r
        }),
        function(e, t) {
            "object" == typeof module && module.exports ? module.exports = function(e) {
                return t(require("lodash"), e, require("riveter"))
            } : "function" == typeof define && define.amd ? define("postal.federation", ["lodash", "postal", "riveter"], function(i, n, r) {
                return t(i, n, r, e)
            }) : e.postal = t(e._, e.postal, e.riveter, e)
        }(this, function(e, t, i, n, r) {
            function o(e) {
                t.fedx.signalReady.apply(this, e)
            }

            function a(e) {
                t.fedx.send.apply(this, e)
            }

            function s(e) {
                t.fedx.onFederatedMsg.call(this, e)
            }
            t.createUUID || (t.createUUID = function() {
                for (var e = [], t = "0123456789abcdef", i = 0; i < 36; i++) e[i] = t.substr(Math.floor(16 * Math.random()), 1);
                return e[14] = "4", e[19] = t.substr(3 & e[19] | 8, 1), e[8] = e[13] = e[18] = e[23] = "-", e.join("")
            }), t.instanceId || (t.instanceId = function() {
                var e, i;
                return function(n) {
                    return n && (i = e, e = n, t.publish({
                        channel: t.configuration.SYSTEM_CHANNEL,
                        topic: "instanceId.changed",
                        data: {
                            oldId: i,
                            newId: e
                        }
                    })), e
                }
            }());
            var l = function() {},
                u = !1,
                c = [],
                h = [],
                p = [],
                f = {
                    enabled: !0,
                    filterMode: "whitelist",
                    filterDirection: "both"
                },
                d = f,
                _ = function(i, n, r) {
                    var o = Object.prototype.hasOwnProperty.call(t.fedx.filters[r], i),
                        a = o && e.any(t.fedx.filters[r][i], function(e) {
                            return t.configuration.resolver.compare(e, n)
                        }),
                        s = "blacklist" === d.filterMode;
                    return d.enabled && (s && (!o || o && !a) || !s && o && a)
                },
                m = {
                    ping: function() {
                        return {
                            type: "federation.ping",
                            instanceId: t.instanceId(),
                            timeStamp: new Date,
                            ticket: t.createUUID()
                        }
                    },
                    pong: function(e) {
                        return {
                            type: "federation.pong",
                            instanceId: t.instanceId(),
                            timeStamp: new Date,
                            pingData: {
                                instanceId: e.instanceId,
                                timeStamp: e.timeStamp,
                                ticket: e.ticket
                            }
                        }
                    },
                    message: function(e) {
                        return {
                            type: "federation.message",
                            instanceId: t.instanceId(),
                            timeStamp: new Date,
                            envelope: e
                        }
                    },
                    disconnect: function() {
                        return {
                            type: "federation.disconnect",
                            instanceId: t.instanceId(),
                            timeStamp: new Date
                        }
                    },
                    bundle: function(e) {
                        return {
                            type: "federation.bundle",
                            instanceId: t.instanceId(),
                            timeStamp: new Date,
                            packingSlips: e
                        }
                    }
                },
                g = {
                    "federation.ping": function(e) {
                        e.source.setInstanceId(e.packingSlip.instanceId), e.source.handshakeComplete ? e.source.sendPong(e.packingSlip) : e.source.sendBundle([t.fedx.getPackingSlip("pong", e.packingSlip), t.fedx.getPackingSlip("ping")])
                    },
                    "federation.pong": function(i) {
                        i.source.handshakeComplete = !0, i.source.setInstanceId(i.packingSlip.instanceId), i.source.pings[i.packingSlip.pingData.ticket] && (i.source.pings[i.packingSlip.pingData.ticket].callback({
                            ticket: i.packingSlip.pingData.ticket,
                            instanceId: i.packingSlip.instanceId,
                            source: i.source
                        }), i.source.pings[i.packingSlip.pingData.ticket] = r), e.contains(t.fedx.clients, i.packingSlip.instanceId) || t.fedx.clients.push(i.packingSlip.instanceId), t.publish({
                            channel: "postal.federation",
                            topic: "client.federated",
                            data: {
                                remoteId: i.source.instanceId,
                                localId: t.instanceId(),
                                transport: i.transport
                            }
                        })
                    },
                    "federation.disconnect": function(i) {
                        t.fedx.clients = e.without(t.fedx.clients, i.source.instanceId), t.fedx.disconnect({
                            transport: i.source.transportName,
                            instanceId: i.source.instanceId,
                            doNotNotify: !0
                        })
                    },
                    "federation.message": function(e) {
                        var i = e.packingSlip.envelope;
                        _(i.channel, i.topic, "in") && (i.lastSender = e.packingSlip.instanceId, t.publish(i))
                    },
                    "federation.bundle": function(i) {
                        e.each(i.packingSlip.packingSlips, function(n) {
                            t.fedx.onFederatedMsg(e.extend({}, i, {
                                packingSlip: n
                            }))
                        })
                    }
                },
                v = function(e, t, i) {
                    this.target = e, this.options = t || {}, this.pings = {}, this.instanceId = i, this.handshakeComplete = !1
                };
            return v.prototype.sendPing = function(e) {
                var i = t.fedx.getPackingSlip("ping");
                this.pings[i.ticket] = {
                    ticket: i.ticket,
                    callback: e || l
                }, this.send(i)
            }, v.prototype.sendPong = function(e) {
                this.send(t.fedx.getPackingSlip("pong", e))
            }, v.prototype.sendBundle = function(e) {
                this.send(t.fedx.getPackingSlip("bundle", e))
            }, v.prototype.sendMessage = function(i) {
                if (this.handshakeComplete) {
                    i.originId = i.originId || t.instanceId();
                    var n = e.clone(i);
                    !this.instanceId || this.instanceId === n.lastSender || n.knownIds && n.knownIds.length && (!n.knownIds || e.include(n.knownIds, this.instanceId)) || (n.knownIds = (n.knownIds || []).concat(e.without(t.fedx.clients, this.instanceId)), this.send(t.fedx.getPackingSlip("message", n)))
                }
            }, v.prototype.disconnect = function() {
                this.send(t.fedx.getPackingSlip("disconnect"))
            }, v.prototype.onMessage = function(e) {
                this.shouldProcess() && t.fedx.onFederatedMsg({
                    transport: this.transportName,
                    packingSlip: e,
                    source: this
                })
            }, v.prototype.shouldProcess = function() {
                return !0
            }, v.prototype.send = function() {
                throw new Error("An object deriving from FederationClient must provide an implementation for 'send'.")
            }, v.prototype.setInstanceId = function(e) {
                this.instanceId = e
            }, i(v), t.fedx = e.extend({
                FederationClient: v,
                packingSlips: m,
                handlers: g,
                clients: [],
                transports: {},
                filters: { in: {},
                    out: {}
                },
                addFilter: function(t) {
                    t = e.isArray(t) ? t : [t], e.each(t, function(t) {
                        t.direction = t.direction || d.filterDirection, e.each("both" === t.direction ? ["in", "out"] : [t.direction], function(i) {
                            this.filters[i][t.channel] ? e.include(this.filters[i][t.channel], t.topic) || this.filters[i][t.channel].push(t.topic) : this.filters[i][t.channel] = [t.topic]
                        }, this)
                    }, this)
                },
                removeFilter: function(t) {
                    t = e.isArray(t) ? t : [t], e.each(t, function(t) {
                        t.direction = t.direction || d.filterDirection, e.each("both" === t.direction ? ["in", "out"] : [t.direction], function(i) {
                            this.filters[i][t.channel] && e.include(this.filters[i][t.channel], t.topic) && (this.filters[i][t.channel] = e.without(this.filters[i][t.channel], t.topic))
                        }, this)
                    }, this)
                },
                canSendRemote: function(e, t) {
                    return _(e, t, "out")
                },
                configure: function(t) {
                    if (t && t.filterMode && "blacklist" !== t.filterMode && "whitelist" !== t.filterMode) throw new Error("postal.fedx filterMode must be 'blacklist' or 'whitelist'.");
                    return t && (d = e.defaults(t, f)), d
                },
                getPackingSlip: function(e) {
                    if (Object.prototype.hasOwnProperty.call(m, e)) return m[e].apply(this, Array.prototype.slice.call(arguments, 1))
                },
                onFederatedMsg: function(e) {
                    if (!u) return void c.push(e);
                    if (!Object.prototype.hasOwnProperty.call(g, e.packingSlip.type)) throw new Error("postal.federation does not have a message handler for '" + e.packingSlip.type + "'.");
                    g[e.packingSlip.type](e)
                },
                sendMessage: function(t) {
                    if (!u) return void h.push(arguments);
                    e.each(this.transports, function(e) {
                        e.sendMessage(t)
                    })
                },
                disconnect: function(t) {
                    t = t || {};
                    var i = this.transports;
                    t.transport && (i = {}, i[t.transport] = this.transports[t.transport]), e.each(i, function(e) {
                        e.disconnect({
                            target: t.target,
                            instanceId: t.instanceId,
                            doNotNotify: !!t.doNotNotify
                        })
                    }, this)
                },
                _getTransports: function() {
                    return e.reduce(this.transports, function(e, t, i) {
                        return e[i] = !0, e
                    }, {})
                },
                signalReady: function(t, i, n) {
                    if (!u) return void p.push(arguments);
                    var r = this._getTransports();
                    switch (arguments.length) {
                        case 1:
                            "function" == typeof t ? n = t : "string" == typeof t && (r = {}, r[t] = this.transports[t], n = l);
                            break;
                        case 2:
                            "string" == typeof t ? (r = {}, r[t] = this.transports[t]) : r = t, n = i || l;
                            break;
                        case 3:
                            r = {}, r[t] = [i]
                    }
                    e.each(r, function(e, t) {
                        e = "boolean" == typeof e ? [] : e, this.transports[t].signalReady(e, n)
                    }, this)
                }
            }, t.fedx), t.addWireTap(function(e, i) {
                t.fedx.canSendRemote(i.channel, i.topic) && t.fedx.sendMessage(i)
            }), t.subscribe({
                channel: t.configuration.SYSTEM_CHANNEL,
                topic: "instanceId.changed",
                callback: function() {
                    for (u = !0; p.length;) o(p.shift());
                    for (; h.length;) a(h.shift());
                    for (; c.length;) s(c.shift())
                }
            }), t.instanceId() !== r && (u = !0), t
        }),
        function(e, t) {
            "function" == typeof define && define.amd ? define("xframe", ["lodash", "postal.federation"], function(i, n) {
                return t(i, n, e)
            }) : "object" == typeof module && module.exports ? module.exports = function(e) {
                return t(require("lodash"), e)
            } : e.postal = t(e._, e.postal, e)
        }(this, function(e, t, i, n) {
            function r() {
                g.routeMessage.apply(g, arguments)
            }

            function o(t) {
                for (var i in t) t.hasOwnProperty(i) && ("function" == typeof t[i] && delete t[i], e.isPlainObject(t[i]) && o(t[i]), e.isArray(t[i]) && e.each(t[i], o));
                return t
            }
            var a = location.origin || location.protocol + "//" + location.host,
                s = /MSIE [8,9]/.test(navigator.userAgent),
                l = function(t, i) {
                    var n = e.find(this.remotes, function(e) {
                        return e.instanceId === i
                    });
                    return n && t.push(n), t
                },
                u = function(t, i) {
                    var n = e.find(this.remotes, function(e) {
                        return e.target === i
                    });
                    return n && t.push(n), t
                },
                c = function(e) {
                    e.disconnect()
                },
                h = "undefined" == typeof window && postMessage && location,
                p = [],
                f = function() {},
                d = {
                    allowedOrigins: [a],
                    enabled: !0,
                    defaultOriginUrl: "*",
                    safeSerialize: !1
                },
                _ = e.extend({}, d),
                m = t.fedx.FederationClient.extend({
                    transportName: "xframe",
                    shouldProcess: function() {
                        var t = !!_.allowedOrigins.length;
                        return _.enabled && ("*" === this.options.origin || t && e.contains(_.allowedOrigins, this.options.origin) || !t || this.options.isWorker && e.contains(p, this.target) || h)
                    },
                    send: function(e) {
                        var i, n;
                        this.shouldProcess() && (n = h ? null : this.target, i = [t.fedx.transports.xframe.wrapForTransport(e)], this.options.isWorker || h || i.push(this.options.origin), h ? this.target.postMessage.apply(n, i) : 1 === i.length ? this.target.postMessage(i[0]) : this.target.postMessage(i[0], i[1]))
                    }
                }, {
                    getInstance: function(e, t, i) {
                        var n = new m(e, {
                            origin: t,
                            isWorker: "undefined" != typeof Worker && e instanceof Worker
                        }, i);
                        return n.options.isWorker && g.listenToWorker(n.target), n
                    }
                }),
                g = t.fedx.transports.xframe = {
                    eagerSerialize: s,
                    XFrameClient: m,
                    configure: function(t) {
                        return t && (_ = e.defaults(e.extend(_, t), d)), _
                    },
                    clearConfiguration: function() {
                        _ = e.extend({}, d)
                    },
                    getTargets: h ? function() {
                        return [{
                            target: {
                                postMessage: postMessage
                            }
                        }]
                    } : function() {
                        var t = e.map(document.getElementsByTagName("iframe"), function(e) {
                            var t = document.createElement("a");
                            t.href = e.src;
                            var i = t.protocol + "//" + t.host;
                            return "//" === i && (i = null), {
                                target: e.contentWindow,
                                origin: i || _.defaultOriginUrl
                            }
                        });
                        return window.parent && window.parent !== window && t.push({
                            target: window.parent,
                            origin: "*"
                        }), t.concat(p)
                    },
                    remotes: [],
                    wrapForTransport: s ? function(e) {
                        return JSON.stringify({
                            postal: !0,
                            packingSlip: e
                        })
                    } : function(e) {
                        return {
                            postal: !0,
                            packingSlip: e
                        }
                    },
                    unwrapFromTransport: function(e) {
                        if ("string" != typeof e || !s && -1 === e.indexOf('"postal":true')) return e;
                        try {
                            return JSON.parse(e)
                        } catch (e) {
                            return {}
                        }
                    },
                    routeMessage: function(i) {
                        var n = i.source || i.currentTarget,
                            r = this.unwrapFromTransport(i.data);
                        if (r.postal) {
                            t.instanceId();
                            var o = e.find(this.remotes, function(e) {
                                return e.target === n
                            });
                            o || (o = m.getInstance(n, i.origin, r.packingSlip.instanceId), this.remotes.push(o)), o.onMessage(r.packingSlip)
                        }
                    },
                    sendMessage: function(t) {
                        var i = t;
                        _.safeSerialize && (i = o(e.cloneDeep(t))), e.each(this.remotes, function(e) {
                            e.sendMessage(i)
                        })
                    },
                    disconnect: function(t) {
                        t = t || {};
                        var i = t.instanceId ? e.reduce(e.isArray(t.instanceId) ? t.instanceId : [t.instanceId], l, [], this) : t.target ? e.reduce(e.isArray(t.target) ? t.target : [t.target], u, [], this) : this.remotes;
                        t.doNotNotify || e.each(i, c, this), this.remotes = e.without.apply(null, [this.remotes].concat(i))
                    },
                    signalReady: function(t, i) {
                        t = e.isArray(t) ? t : [t], t = t.length ? t : this.getTargets(), i = i || f, e.each(t, function(t) {
                            if (t.target) {
                                t.origin = t.origin || _.defaultOriginUrl;
                                var n = e.find(this.remotes, function(e) {
                                    return e.target === t.target
                                });
                                n || (n = m.getInstance(t.target, t.origin), this.remotes.push(n)), n.sendPing(i)
                            }
                        }, this)
                    },
                    addEventListener: h ? function() {
                        addEventListener("message", r)
                    } : function(e, t, i, n) {
                        "undefined" != typeof window && ("addEventListener" in e ? e.addEventListener(t, i, n) : e.attachEvent("on" + t, i))
                    },
                    listenToWorker: function(t) {
                        e.include(p, t) || (t.addEventListener("message", r), p.push(t))
                    },
                    stopListeningToWorker: function(t) {
                        if (t) t.removeEventListener("message", r), p = e.without(p, t);
                        else
                            for (; p.length;) p.pop().removeEventListener("message", r)
                    }
                };
            return g.addEventListener(this, "message", r, !1), t
        }),
        function(e, t) {
            "function" == typeof define && define.amd ? define("request-response", ["lodash", "postal"], function(i, n) {
                return t(i, n, e)
            }) : "object" == typeof module && module.exports ? module.exports = function(e) {
                return t(require("lodash"), e, this)
            } : e.postal = t(e._, e.postal, e)
        }(this, function(e, t, i, n) {
            t.configuration.promise = {
                createDeferred: function() {
                    throw new Error("You need to provide an implementation for postal.configuration.promise.createDeferred that returns a deferred/promise instance.")
                },
                getPromise: function() {
                    throw new Error("You need to provide an implementation for postal.configuration.promise.getPromise that returns a promise safe for consuming APIs to use.")
                },
                fulfill: "resolve",
                fail: "reject"
            };
            var r = function() {
                for (var e = {}, t = [], i = 0; i < 256; i++) t[i] = (i < 16 ? "0" : "") + i.toString(16);
                return e.create = function() {
                    var e = 4294967295 * Math.random() | 0,
                        i = 4294967295 * Math.random() | 0,
                        n = 4294967295 * Math.random() | 0,
                        r = 4294967295 * Math.random() | 0;
                    return t[255 & e] + t[e >> 8 & 255] + t[e >> 16 & 255] + t[e >> 24 & 255] + "-" + t[255 & i] + t[i >> 8 & 255] + "-" + t[i >> 16 & 15 | 64] + t[i >> 24 & 255] + "-" + t[63 & n | 128] + t[n >> 8 & 255] + "-" + t[n >> 16 & 255] + t[n >> 24 & 255] + t[255 & r] + t[r >> 8 & 255] + t[r >> 16 & 255] + t[r >> 24 & 255]
                }, e
            }();
            t.ChannelDefinition.prototype.request = function(e) {
                var i = e.envelope ? e.envelope : {
                        topic: e.topic,
                        data: e.data,
                        headers: e.headers
                    },
                    n = r.create(),
                    o = e.replyTopic || n,
                    a = e.replyChannel || "postal.request-response",
                    s = t.configuration.promise.createDeferred();
                i.headers = i.headers || {}, i.headers.replyable = !0, i.headers.requestId = n, i.headers.replyTopic = o, i.headers.replyChannel = a;
                t.subscribe({
                    channel: a,
                    topic: o,
                    callback: function(e, i) {
                        i.headers && i.headers.isError ? s[t.configuration.promise.fail](e) : s[t.configuration.promise.fulfill](e)
                    }
                }).once();
                return e.timeout && setTimeout(function() {
                    s[t.configuration.promise.fail](new Error("Timeout limit exceeded for request."))
                }, e.timeout), this.publish(i), t.configuration.promise.getPromise(s)
            };
            var o = t.publish;
            return t.publish = function(e) {
                e.headers && e.headers.replyable && (e.reply = function(i, n) {
                    t.publish({
                        channel: e.headers.replyChannel,
                        topic: e.headers.replyTopic,
                        headers: {
                            isReply: !0,
                            isError: !!i,
                            requestId: e.headers.requestId,
                            resolverNoCache: !0
                        },
                        data: i || n
                    })
                }), o.call(this, e)
            }, t
        }), define("skbJet/component/gameMsgBus/PlatformMessageBus", ["postal", "promise", "postal.federation", "xframe", "request-response"], function(e, t) {
            "use strict";

            function i(i) {
                if (0 === arguments.length) throw new Error("Message Bus Configuration Payload cannot be empty, malformed or undefined");
                return s = i, e.instanceId("Game"), e.fedx.transports.xframe.configure({
                    allowedOrigins: i.allowedDomains,
                    defaultOriginUrl: i.defaultOrigin,
                    filterMode: "blacklist",
                    safeSerialize: !0
                }), e.configuration.promise.createDeferred = function() {
                    return t.defer()
                }, e.configuration.promise.getPromise = function(e) {
                    return e.promise
                }, i.channels && e.fedx.addFilter(i.channels), e.fedx.signalReady(function() {}), !0
            }

            function n(t) {
                e.publish(t)
            }

            function r(t, i, n) {
                e.channel(t.channel).request(t).then(i, n)
            }

            function o(t) {
                e.subscribe(t)
            }

            function a(t) {
                e.unsubscribe(t)
            }
            var s;
            return function() {
                return Object.freeze({
                    init: i,
                    publish: n,
                    subscribe: o,
                    unsubscribe: a,
                    getPostal: e,
                    request: r
                })
            }
        }), define("skbJet/component/gameMsgBus/PlatformMsgBusAdapter", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gameMsgBus/PlatformMessageBus"], function(e, t) {
            function i() {}
            var n = t();
            n.init({
                allowedDomains: ["*"],
                channels: [{
                    channel: "Kernel",
                    topic: "#",
                    direction: "both"
                }, {
                    channel: "ClientService",
                    topic: "#",
                    direction: "both"
                }, {
                    channel: "ConsoleService",
                    topic: "#",
                    direction: "both"
                }, {
                    channel: "Game",
                    topic: "#",
                    direction: "both"
                }, {
                    channel: "postal.request-response",
                    topic: "#",
                    direction: "both"
                }]
            }), n.getPostal.addWireTap(function(t, i) {
                "postal" === i.channel || "postal.federation" === i.channel || i._fromGame || setTimeout(function() {
                    e.publish("platformMsg/" + i.channel + "/" + i.topic, i.data)
                }, 0)
            }), e.subscribe("toPlatform", function(e) {
                e._fromGame = !0, n.publish(e)
            }), e.subscribe("toPlatformRequest", function(e) {
                n.request({
                    channel: e.channel,
                    topic: e.topic,
                    data: e.data
                }, e.successCallback, e.failCallback)
            }), e.subscribe("error", function(e) {
                var t = e;
                e.errorCode || (t = {
                    errorCode: "GM-001",
                    message: "" + e
                }), n.publish({
                    channel: "Game",
                    topic: "ErrorHandler.Throw",
                    data: t
                })
            });
            var r = null;
            return n.getPostal.channel("ClientService").subscribe("StateChange", function(t, n) {
                r = function() {
                    r = i, n.reply(null, {
                        state: t.state
                    })
                }, e.publish(t.state, t)
            }), e.subscribe("nextState", function() {
                r && r()
            }), {}
        }),
        function(e) {
            if ("object" == typeof exports && "undefined" != typeof module) module.exports = e();
            else if ("function" == typeof define && define.amd) define("com/pixijs/pixi", [], e);
            else {
                var t;
                t = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this, t.PIXI = e()
            }
        }(function() {
            var e;
            return function() {
                function e(t, i, n) {
                    function r(a, s) {
                        if (!i[a]) {
                            if (!t[a]) {
                                var l = "function" == typeof require && require;
                                if (!s && l) return l(a, !0);
                                if (o) return o(a, !0);
                                var u = new Error("Cannot find module '" + a + "'");
                                throw u.code = "MODULE_NOT_FOUND", u
                            }
                            var c = i[a] = {
                                exports: {}
                            };
                            t[a][0].call(c.exports, function(e) {
                                return r(t[a][1][e] || e)
                            }, c, c.exports, e, t, i, n)
                        }
                        return i[a].exports
                    }
                    for (var o = "function" == typeof require && require, a = 0; a < n.length; a++) r(n[a]);
                    return r
                }
                return e
            }()({
                1: [function(e, t, i) {
                    "use strict";
                    "use restrict";

                    function n(e) {
                        var t = 32;
                        return e &= -e, e && t--, 65535 & e && (t -= 16), 16711935 & e && (t -= 8), 252645135 & e && (t -= 4), 858993459 & e && (t -= 2), 1431655765 & e && (t -= 1), t
                    }
                    i.INT_BITS = 32, i.INT_MAX = 2147483647, i.INT_MIN = -1 << 31, i.sign = function(e) {
                        return (e > 0) - (e < 0)
                    }, i.abs = function(e) {
                        var t = e >> 31;
                        return (e ^ t) - t
                    }, i.min = function(e, t) {
                        return t ^ (e ^ t) & -(e < t)
                    }, i.max = function(e, t) {
                        return e ^ (e ^ t) & -(e < t)
                    }, i.isPow2 = function(e) {
                        return !(e & e - 1 || !e)
                    }, i.log2 = function(e) {
                        var t, i;
                        return t = (e > 65535) << 4, e >>>= t, i = (e > 255) << 3, e >>>= i, t |= i, i = (e > 15) << 2, e >>>= i, t |= i, i = (e > 3) << 1, e >>>= i, (t |= i) | e >> 1
                    }, i.log10 = function(e) {
                        return e >= 1e9 ? 9 : e >= 1e8 ? 8 : e >= 1e7 ? 7 : e >= 1e6 ? 6 : e >= 1e5 ? 5 : e >= 1e4 ? 4 : e >= 1e3 ? 3 : e >= 100 ? 2 : e >= 10 ? 1 : 0
                    }, i.popCount = function(e) {
                        return e -= e >>> 1 & 1431655765, 16843009 * ((e = (858993459 & e) + (e >>> 2 & 858993459)) + (e >>> 4) & 252645135) >>> 24
                    }, i.countTrailingZeros = n, i.nextPow2 = function(e) {
                        return e += 0 === e, --e, e |= e >>> 1, e |= e >>> 2, e |= e >>> 4, e |= e >>> 8, 1 + (e |= e >>> 16)
                    }, i.prevPow2 = function(e) {
                        return e |= e >>> 1, e |= e >>> 2, e |= e >>> 4, e |= e >>> 8, (e |= e >>> 16) - (e >>> 1)
                    }, i.parity = function(e) {
                        return e ^= e >>> 16, e ^= e >>> 8, e ^= e >>> 4, 27030 >>> (e &= 15) & 1
                    };
                    var r = new Array(256);
                    ! function(e) {
                        for (var t = 0; t < 256; ++t) {
                            var i = t,
                                n = t,
                                r = 7;
                            for (i >>>= 1; i; i >>>= 1) n <<= 1, n |= 1 & i, --r;
                            e[t] = n << r & 255
                        }
                    }(r), i.reverse = function(e) {
                        return r[255 & e] << 24 | r[e >>> 8 & 255] << 16 | r[e >>> 16 & 255] << 8 | r[e >>> 24 & 255]
                    }, i.interleave2 = function(e, t) {
                        return e &= 65535, e = 16711935 & (e | e << 8), e = 252645135 & (e | e << 4), e = 858993459 & (e | e << 2), e = 1431655765 & (e | e << 1), t &= 65535, t = 16711935 & (t | t << 8), t = 252645135 & (t | t << 4), t = 858993459 & (t | t << 2), t = 1431655765 & (t | t << 1), e | t << 1
                    }, i.deinterleave2 = function(e, t) {
                        return e = e >>> t & 1431655765, e = 858993459 & (e | e >>> 1), e = 252645135 & (e | e >>> 2), e = 16711935 & (e | e >>> 4), (e = 65535 & (e | e >>> 16)) << 16 >> 16
                    }, i.interleave3 = function(e, t, i) {
                        return e &= 1023, e = 4278190335 & (e | e << 16), e = 251719695 & (e | e << 8), e = 3272356035 & (e | e << 4), e = 1227133513 & (e | e << 2), t &= 1023, t = 4278190335 & (t | t << 16), t = 251719695 & (t | t << 8), t = 3272356035 & (t | t << 4), t = 1227133513 & (t | t << 2), e |= t << 1, i &= 1023, i = 4278190335 & (i | i << 16), i = 251719695 & (i | i << 8), i = 3272356035 & (i | i << 4), i = 1227133513 & (i | i << 2), e | i << 2
                    }, i.deinterleave3 = function(e, t) {
                        return e = e >>> t & 1227133513, e = 3272356035 & (e | e >>> 2), e = 251719695 & (e | e >>> 4), e = 4278190335 & (e | e >>> 8), (e = 1023 & (e | e >>> 16)) << 22 >> 22
                    }, i.nextCombination = function(e) {
                        var t = e | e - 1;
                        return t + 1 | (~t & -~t) - 1 >>> n(e) + 1
                    }
                }, {}],
                2: [function(e, t, i) {
                    "use strict";

                    function n(e, t, i) {
                        i = i || 2;
                        var n = t && t.length,
                            o = n ? t[0] * i : e.length,
                            s = r(e, 0, o, i, !0),
                            l = [];
                        if (!s || s.next === s.prev) return l;
                        var u, c, p, f, d, _, m;
                        if (n && (s = h(e, t, s, i)), e.length > 80 * i) {
                            u = p = e[0], c = f = e[1];
                            for (var g = i; g < o; g += i) d = e[g], _ = e[g + 1], d < u && (u = d), _ < c && (c = _), d > p && (p = d), _ > f && (f = _);
                            m = Math.max(p - u, f - c), m = 0 !== m ? 1 / m : 0
                        }
                        return a(s, l, i, u, c, m), l
                    }

                    function r(e, t, i, n, r) {
                        var o, a;
                        if (r === C(e, t, i, n) > 0)
                            for (o = t; o < i; o += n) a = O(o, e[o], e[o + 1], a);
                        else
                            for (o = i - n; o >= t; o -= n) a = O(o, e[o], e[o + 1], a);
                        return a && S(a, a.next) && (A(a), a = a.next), a
                    }

                    function o(e, t) {
                        if (!e) return e;
                        t || (t = e);
                        var i, n = e;
                        do {
                            if (i = !1, n.steiner || !S(n, n.next) && 0 !== x(n.prev, n, n.next)) n = n.next;
                            else {
                                if (A(n), (n = t = n.prev) === n.next) break;
                                i = !0
                            }
                        } while (i || n !== t);
                        return t
                    }

                    function a(e, t, i, n, r, h, p) {
                        if (e) {
                            !p && h && _(e, n, r, h);
                            for (var f, d, m = e; e.prev !== e.next;)
                                if (f = e.prev, d = e.next, h ? l(e, n, r, h) : s(e)) t.push(f.i / i), t.push(e.i / i), t.push(d.i / i), A(e), e = d.next, m = d.next;
                                else if ((e = d) === m) {
                                p ? 1 === p ? (e = u(e, t, i), a(e, t, i, n, r, h, 2)) : 2 === p && c(e, t, i, n, r, h) : a(o(e), t, i, n, r, h, 1);
                                break
                            }
                        }
                    }

                    function s(e) {
                        var t = e.prev,
                            i = e,
                            n = e.next;
                        if (x(t, i, n) >= 0) return !1;
                        for (var r = e.next.next; r !== e.prev;) {
                            if (y(t.x, t.y, i.x, i.y, n.x, n.y, r.x, r.y) && x(r.prev, r, r.next) >= 0) return !1;
                            r = r.next
                        }
                        return !0
                    }

                    function l(e, t, i, n) {
                        var r = e.prev,
                            o = e,
                            a = e.next;
                        if (x(r, o, a) >= 0) return !1;
                        for (var s = r.x < o.x ? r.x < a.x ? r.x : a.x : o.x < a.x ? o.x : a.x, l = r.y < o.y ? r.y < a.y ? r.y : a.y : o.y < a.y ? o.y : a.y, u = r.x > o.x ? r.x > a.x ? r.x : a.x : o.x > a.x ? o.x : a.x, c = r.y > o.y ? r.y > a.y ? r.y : a.y : o.y > a.y ? o.y : a.y, h = g(s, l, t, i, n), p = g(u, c, t, i, n), f = e.prevZ, d = e.nextZ; f && f.z >= h && d && d.z <= p;) {
                            if (f !== e.prev && f !== e.next && y(r.x, r.y, o.x, o.y, a.x, a.y, f.x, f.y) && x(f.prev, f, f.next) >= 0) return !1;
                            if (f = f.prevZ, d !== e.prev && d !== e.next && y(r.x, r.y, o.x, o.y, a.x, a.y, d.x, d.y) && x(d.prev, d, d.next) >= 0) return !1;
                            d = d.nextZ
                        }
                        for (; f && f.z >= h;) {
                            if (f !== e.prev && f !== e.next && y(r.x, r.y, o.x, o.y, a.x, a.y, f.x, f.y) && x(f.prev, f, f.next) >= 0) return !1;
                            f = f.prevZ
                        }
                        for (; d && d.z <= p;) {
                            if (d !== e.prev && d !== e.next && y(r.x, r.y, o.x, o.y, a.x, a.y, d.x, d.y) && x(d.prev, d, d.next) >= 0) return !1;
                            d = d.nextZ
                        }
                        return !0
                    }

                    function u(e, t, i) {
                        var n = e;
                        do {
                            var r = n.prev,
                                o = n.next.next;
                            !S(r, o) && T(r, n, n.next, o) && E(r, o) && E(o, r) && (t.push(r.i / i), t.push(n.i / i), t.push(o.i / i), A(n), A(n.next), n = e = o), n = n.next
                        } while (n !== e);
                        return n
                    }

                    function c(e, t, i, n, r, s) {
                        var l = e;
                        do {
                            for (var u = l.next.next; u !== l.prev;) {
                                if (l.i !== u.i && b(l, u)) {
                                    var c = R(l, u);
                                    return l = o(l, l.next), c = o(c, c.next), a(l, t, i, n, r, s), void a(c, t, i, n, r, s)
                                }
                                u = u.next
                            }
                            l = l.next
                        } while (l !== e)
                    }

                    function h(e, t, i, n) {
                        var a, s, l, u, c, h = [];
                        for (a = 0, s = t.length; a < s; a++) l = t[a] * n, u = a < s - 1 ? t[a + 1] * n : e.length, c = r(e, l, u, n, !1), c === c.next && (c.steiner = !0), h.push(v(c));
                        for (h.sort(p), a = 0; a < h.length; a++) f(h[a], i), i = o(i, i.next);
                        return i
                    }

                    function p(e, t) {
                        return e.x - t.x
                    }

                    function f(e, t) {
                        if (t = d(e, t)) {
                            var i = R(t, e);
                            o(i, i.next)
                        }
                    }

                    function d(e, t) {
                        var i, n = t,
                            r = e.x,
                            o = e.y,
                            a = -1 / 0;
                        do {
                            if (o <= n.y && o >= n.next.y && n.next.y !== n.y) {
                                var s = n.x + (o - n.y) * (n.next.x - n.x) / (n.next.y - n.y);
                                if (s <= r && s > a) {
                                    if (a = s, s === r) {
                                        if (o === n.y) return n;
                                        if (o === n.next.y) return n.next
                                    }
                                    i = n.x < n.next.x ? n : n.next
                                }
                            }
                            n = n.next
                        } while (n !== t);
                        if (!i) return null;
                        if (r === a) return i.prev;
                        var l, u = i,
                            c = i.x,
                            h = i.y,
                            p = 1 / 0;
                        for (n = i.next; n !== u;) r >= n.x && n.x >= c && r !== n.x && y(o < h ? r : a, o, c, h, o < h ? a : r, o, n.x, n.y) && ((l = Math.abs(o - n.y) / (r - n.x)) < p || l === p && n.x > i.x) && E(n, e) && (i = n, p = l), n = n.next;
                        return i
                    }

                    function _(e, t, i, n) {
                        var r = e;
                        do {
                            null === r.z && (r.z = g(r.x, r.y, t, i, n)), r.prevZ = r.prev, r.nextZ = r.next, r = r.next
                        } while (r !== e);
                        r.prevZ.nextZ = null, r.prevZ = null, m(r)
                    }

                    function m(e) {
                        var t, i, n, r, o, a, s, l, u = 1;
                        do {
                            for (i = e, e = null, o = null, a = 0; i;) {
                                for (a++, n = i, s = 0, t = 0; t < u && (s++, n = n.nextZ); t++);
                                for (l = u; s > 0 || l > 0 && n;) 0 !== s && (0 === l || !n || i.z <= n.z) ? (r = i, i = i.nextZ, s--) : (r = n, n = n.nextZ, l--), o ? o.nextZ = r : e = r, r.prevZ = o, o = r;
                                i = n
                            }
                            o.nextZ = null, u *= 2
                        } while (a > 1);
                        return e
                    }

                    function g(e, t, i, n, r) {
                        return e = 32767 * (e - i) * r, t = 32767 * (t - n) * r, e = 16711935 & (e | e << 8), e = 252645135 & (e | e << 4), e = 858993459 & (e | e << 2), e = 1431655765 & (e | e << 1), t = 16711935 & (t | t << 8), t = 252645135 & (t | t << 4), t = 858993459 & (t | t << 2), t = 1431655765 & (t | t << 1), e | t << 1
                    }

                    function v(e) {
                        var t = e,
                            i = e;
                        do {
                            t.x < i.x && (i = t), t = t.next
                        } while (t !== e);
                        return i
                    }

                    function y(e, t, i, n, r, o, a, s) {
                        return (r - a) * (t - s) - (e - a) * (o - s) >= 0 && (e - a) * (n - s) - (i - a) * (t - s) >= 0 && (i - a) * (o - s) - (r - a) * (n - s) >= 0
                    }

                    function b(e, t) {
                        return e.next.i !== t.i && e.prev.i !== t.i && !w(e, t) && E(e, t) && E(t, e) && P(e, t)
                    }

                    function x(e, t, i) {
                        return (t.y - e.y) * (i.x - t.x) - (t.x - e.x) * (i.y - t.y)
                    }

                    function S(e, t) {
                        return e.x === t.x && e.y === t.y
                    }

                    function T(e, t, i, n) {
                        return !!(S(e, t) && S(i, n) || S(e, n) && S(i, t)) || x(e, t, i) > 0 != x(e, t, n) > 0 && x(i, n, e) > 0 != x(i, n, t) > 0
                    }

                    function w(e, t) {
                        var i = e;
                        do {
                            if (i.i !== e.i && i.next.i !== e.i && i.i !== t.i && i.next.i !== t.i && T(i, i.next, e, t)) return !0;
                            i = i.next
                        } while (i !== e);
                        return !1
                    }

                    function E(e, t) {
                        return x(e.prev, e, e.next) < 0 ? x(e, t, e.next) >= 0 && x(e, e.prev, t) >= 0 : x(e, t, e.prev) < 0 || x(e, e.next, t) < 0
                    }

                    function P(e, t) {
                        var i = e,
                            n = !1,
                            r = (e.x + t.x) / 2,
                            o = (e.y + t.y) / 2;
                        do {
                            i.y > o != i.next.y > o && i.next.y !== i.y && r < (i.next.x - i.x) * (o - i.y) / (i.next.y - i.y) + i.x && (n = !n), i = i.next
                        } while (i !== e);
                        return n
                    }

                    function R(e, t) {
                        var i = new I(e.i, e.x, e.y),
                            n = new I(t.i, t.x, t.y),
                            r = e.next,
                            o = t.prev;
                        return e.next = t, t.prev = e, i.next = r, r.prev = i, n.next = i, i.prev = n, o.next = n, n.prev = o, n
                    }

                    function O(e, t, i, n) {
                        var r = new I(e, t, i);
                        return n ? (r.next = n.next, r.prev = n, n.next.prev = r, n.next = r) : (r.prev = r, r.next = r), r
                    }

                    function A(e) {
                        e.next.prev = e.prev, e.prev.next = e.next, e.prevZ && (e.prevZ.nextZ = e.nextZ), e.nextZ && (e.nextZ.prevZ = e.prevZ)
                    }

                    function I(e, t, i) {
                        this.i = e, this.x = t, this.y = i, this.prev = null, this.next = null, this.z = null, this.prevZ = null, this.nextZ = null, this.steiner = !1
                    }

                    function C(e, t, i, n) {
                        for (var r = 0, o = t, a = i - n; o < i; o += n) r += (e[a] - e[o]) * (e[o + 1] + e[a + 1]), a = o;
                        return r
                    }
                    t.exports = n, t.exports.default = n, n.deviation = function(e, t, i, n) {
                        var r = t && t.length,
                            o = r ? t[0] * i : e.length,
                            a = Math.abs(C(e, 0, o, i));
                        if (r)
                            for (var s = 0, l = t.length; s < l; s++) {
                                var u = t[s] * i,
                                    c = s < l - 1 ? t[s + 1] * i : e.length;
                                a -= Math.abs(C(e, u, c, i))
                            }
                        var h = 0;
                        for (s = 0; s < n.length; s += 3) {
                            var p = n[s] * i,
                                f = n[s + 1] * i,
                                d = n[s + 2] * i;
                            h += Math.abs((e[p] - e[d]) * (e[f + 1] - e[p + 1]) - (e[p] - e[f]) * (e[d + 1] - e[p + 1]))
                        }
                        return 0 === a && 0 === h ? 0 : Math.abs((h - a) / a)
                    }, n.flatten = function(e) {
                        for (var t = e[0][0].length, i = {
                                vertices: [],
                                holes: [],
                                dimensions: t
                            }, n = 0, r = 0; r < e.length; r++) {
                            for (var o = 0; o < e[r].length; o++)
                                for (var a = 0; a < t; a++) i.vertices.push(e[r][o][a]);
                            r > 0 && (n += e[r - 1].length, i.holes.push(n))
                        }
                        return i
                    }
                }, {}],
                3: [function(e, t, i) {
                    "use strict";

                    function n() {}

                    function r(e, t, i) {
                        this.fn = e, this.context = t, this.once = i || !1
                    }

                    function o() {
                        this._events = new n, this._eventsCount = 0
                    }
                    var a = Object.prototype.hasOwnProperty,
                        s = "~";
                    Object.create && (n.prototype = Object.create(null), (new n).__proto__ || (s = !1)), o.prototype.eventNames = function() {
                        var e, t, i = [];
                        if (0 === this._eventsCount) return i;
                        for (t in e = this._events) a.call(e, t) && i.push(s ? t.slice(1) : t);
                        return Object.getOwnPropertySymbols ? i.concat(Object.getOwnPropertySymbols(e)) : i
                    }, o.prototype.listeners = function(e, t) {
                        var i = s ? s + e : e,
                            n = this._events[i];
                        if (t) return !!n;
                        if (!n) return [];
                        if (n.fn) return [n.fn];
                        for (var r = 0, o = n.length, a = new Array(o); r < o; r++) a[r] = n[r].fn;
                        return a
                    }, o.prototype.emit = function(e, t, i, n, r, o) {
                        var a = s ? s + e : e;
                        if (!this._events[a]) return !1;
                        var l, u, c = this._events[a],
                            h = arguments.length;
                        if (c.fn) {
                            switch (c.once && this.removeListener(e, c.fn, void 0, !0), h) {
                                case 1:
                                    return c.fn.call(c.context), !0;
                                case 2:
                                    return c.fn.call(c.context, t), !0;
                                case 3:
                                    return c.fn.call(c.context, t, i), !0;
                                case 4:
                                    return c.fn.call(c.context, t, i, n), !0;
                                case 5:
                                    return c.fn.call(c.context, t, i, n, r), !0;
                                case 6:
                                    return c.fn.call(c.context, t, i, n, r, o), !0
                            }
                            for (u = 1, l = new Array(h - 1); u < h; u++) l[u - 1] = arguments[u];
                            c.fn.apply(c.context, l)
                        } else {
                            var p, f = c.length;
                            for (u = 0; u < f; u++) switch (c[u].once && this.removeListener(e, c[u].fn, void 0, !0), h) {
                                case 1:
                                    c[u].fn.call(c[u].context);
                                    break;
                                case 2:
                                    c[u].fn.call(c[u].context, t);
                                    break;
                                case 3:
                                    c[u].fn.call(c[u].context, t, i);
                                    break;
                                case 4:
                                    c[u].fn.call(c[u].context, t, i, n);
                                    break;
                                default:
                                    if (!l)
                                        for (p = 1, l = new Array(h - 1); p < h; p++) l[p - 1] = arguments[p];
                                    c[u].fn.apply(c[u].context, l)
                            }
                        }
                        return !0
                    }, o.prototype.on = function(e, t, i) {
                        var n = new r(t, i || this),
                            o = s ? s + e : e;
                        return this._events[o] ? this._events[o].fn ? this._events[o] = [this._events[o], n] : this._events[o].push(n) : (this._events[o] = n, this._eventsCount++), this
                    }, o.prototype.once = function(e, t, i) {
                        var n = new r(t, i || this, !0),
                            o = s ? s + e : e;
                        return this._events[o] ? this._events[o].fn ? this._events[o] = [this._events[o], n] : this._events[o].push(n) : (this._events[o] = n, this._eventsCount++), this
                    }, o.prototype.removeListener = function(e, t, i, r) {
                        var o = s ? s + e : e;
                        if (!this._events[o]) return this;
                        if (!t) return 0 == --this._eventsCount ? this._events = new n : delete this._events[o], this;
                        var a = this._events[o];
                        if (a.fn) a.fn !== t || r && !a.once || i && a.context !== i || (0 == --this._eventsCount ? this._events = new n : delete this._events[o]);
                        else {
                            for (var l = 0, u = [], c = a.length; l < c; l++)(a[l].fn !== t || r && !a[l].once || i && a[l].context !== i) && u.push(a[l]);
                            u.length ? this._events[o] = 1 === u.length ? u[0] : u : 0 == --this._eventsCount ? this._events = new n : delete this._events[o]
                        }
                        return this
                    }, o.prototype.removeAllListeners = function(e) {
                        var t;
                        return e ? (t = s ? s + e : e, this._events[t] && (0 == --this._eventsCount ? this._events = new n : delete this._events[t])) : (this._events = new n, this._eventsCount = 0), this
                    }, o.prototype.off = o.prototype.removeListener, o.prototype.addListener = o.prototype.on, o.prototype.setMaxListeners = function() {
                        return this
                    }, o.prefixed = s, o.EventEmitter = o, void 0 !== t && (t.exports = o)
                }, {}],
                4: [function(t, i, n) {
                    ! function(t) {
                        function n(e, t) {
                            return e.test(t)
                        }

                        function r(e) {
                            var t = e || ("undefined" != typeof navigator ? navigator.userAgent : ""),
                                i = t.split("[FBAN");
                            void 0 !== i[1] && (t = i[0]), void 0 !== (i = t.split("Twitter"))[1] && (t = i[0]);
                            var r = {
                                apple: {
                                    phone: n(o, t) && !n(p, t),
                                    ipod: n(a, t),
                                    tablet: !n(o, t) && n(s, t) && !n(p, t),
                                    device: (n(o, t) || n(a, t) || n(s, t)) && !n(p, t)
                                },
                                amazon: {
                                    phone: n(c, t),
                                    tablet: !n(c, t) && n(h, t),
                                    device: n(c, t) || n(h, t)
                                },
                                android: {
                                    phone: !n(p, t) && n(c, t) || !n(p, t) && n(l, t),
                                    tablet: !n(p, t) && !n(c, t) && !n(l, t) && (n(h, t) || n(u, t)),
                                    device: !n(p, t) && (n(c, t) || n(h, t) || n(l, t) || n(u, t))
                                },
                                windows: {
                                    phone: n(p, t),
                                    tablet: n(f, t),
                                    device: n(p, t) || n(f, t)
                                },
                                other: {
                                    blackberry: n(d, t),
                                    blackberry10: n(_, t),
                                    opera: n(m, t),
                                    firefox: n(v, t),
                                    chrome: n(g, t),
                                    device: n(d, t) || n(_, t) || n(m, t) || n(v, t) || n(g, t)
                                }
                            };
                            return r.any = r.apple.device || r.android.device || r.windows.device || r.other.device, r.phone = r.apple.phone || r.android.phone || r.windows.phone, r.tablet = r.apple.tablet || r.android.tablet || r.windows.tablet, r
                        }
                        var o = /iPhone/i,
                            a = /iPod/i,
                            s = /iPad/i,
                            l = /\bAndroid(?:.+)Mobile\b/i,
                            u = /Android/i,
                            c = /\bAndroid(?:.+)SD4930UR\b/i,
                            h = /\bAndroid(?:.+)(?:KF[A-Z]{2,4})\b/i,
                            p = /Windows Phone/i,
                            f = /\bWindows(?:.+)ARM\b/i,
                            d = /BlackBerry/i,
                            _ = /BB10/i,
                            m = /Opera Mini/i,
                            g = /\b(CriOS|Chrome)(?:.+)Mobile/i,
                            v = /\Mobile(?:.+)Firefox\b/i;
                        void 0 !== i && i.exports && "undefined" == typeof window ? i.exports = r : void 0 !== i && i.exports && "undefined" != typeof window ? i.exports = r() : "function" == typeof e && e.amd ? e([], t.isMobile = r()) : t.isMobile = r()
                    }(this)
                }, {}],
                5: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(e, t) {
                        return e._head ? (e._tail._next = t, t._prev = e._tail, e._tail = t) : (e._head = t, e._tail = t), t._owner = e, t
                    }
                    Object.defineProperty(i, "__esModule", {
                        value: !0
                    });
                    var o = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        a = function() {
                            function e(t, i, r) {
                                void 0 === i && (i = !1), n(this, e), this._fn = t, this._once = i, this._thisArg = r, this._next = this._prev = this._owner = null
                            }
                            return o(e, [{
                                key: "detach",
                                value: function() {
                                    return null !== this._owner && (this._owner.detach(this), !0)
                                }
                            }]), e
                        }(),
                        s = function() {
                            function e() {
                                n(this, e), this._head = this._tail = void 0
                            }
                            return o(e, [{
                                key: "handlers",
                                value: function() {
                                    var e = !(arguments.length <= 0 || void 0 === arguments[0]) && arguments[0],
                                        t = this._head;
                                    if (e) return !!t;
                                    for (var i = []; t;) i.push(t), t = t._next;
                                    return i
                                }
                            }, {
                                key: "has",
                                value: function(e) {
                                    if (!(e instanceof a)) throw new Error("MiniSignal#has(): First arg must be a MiniSignalBinding object.");
                                    return e._owner === this
                                }
                            }, {
                                key: "dispatch",
                                value: function() {
                                    var e = this._head;
                                    if (!e) return !1;
                                    for (; e;) e._once && this.detach(e), e._fn.apply(e._thisArg, arguments), e = e._next;
                                    return !0
                                }
                            }, {
                                key: "add",
                                value: function(e) {
                                    var t = arguments.length <= 1 || void 0 === arguments[1] ? null : arguments[1];
                                    if ("function" != typeof e) throw new Error("MiniSignal#add(): First arg must be a Function.");
                                    return r(this, new a(e, !1, t))
                                }
                            }, {
                                key: "once",
                                value: function(e) {
                                    var t = arguments.length <= 1 || void 0 === arguments[1] ? null : arguments[1];
                                    if ("function" != typeof e) throw new Error("MiniSignal#once(): First arg must be a Function.");
                                    return r(this, new a(e, !0, t))
                                }
                            }, {
                                key: "detach",
                                value: function(e) {
                                    if (!(e instanceof a)) throw new Error("MiniSignal#detach(): First arg must be a MiniSignalBinding object.");
                                    return e._owner !== this ? this : (e._prev && (e._prev._next = e._next), e._next && (e._next._prev = e._prev), e === this._head ? (this._head = e._next, null === e._next && (this._tail = null)) : e === this._tail && (this._tail = e._prev, this._tail._next = null), e._owner = null, this)
                                }
                            }, {
                                key: "detachAll",
                                value: function() {
                                    var e = this._head;
                                    if (!e) return this;
                                    for (this._head = this._tail = null; e;) e._owner = null, e = e._next;
                                    return this
                                }
                            }]), e
                        }();
                    s.MiniSignalBinding = a, i.default = s, t.exports = i.default
                }, {}],
                6: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        if (null === e || void 0 === e) throw new TypeError("Object.assign cannot be called with null or undefined");
                        return Object(e)
                    }
                    var r = Object.getOwnPropertySymbols,
                        o = Object.prototype.hasOwnProperty,
                        a = Object.prototype.propertyIsEnumerable;
                    t.exports = function() {
                        try {
                            if (!Object.assign) return !1;
                            var e = new String("abc");
                            if (e[5] = "de", "5" === Object.getOwnPropertyNames(e)[0]) return !1;
                            for (var t = {}, i = 0; i < 10; i++) t["_" + String.fromCharCode(i)] = i;
                            if ("0123456789" !== Object.getOwnPropertyNames(t).map(function(e) {
                                    return t[e]
                                }).join("")) return !1;
                            var n = {};
                            return "abcdefghijklmnopqrst".split("").forEach(function(e) {
                                n[e] = e
                            }), "abcdefghijklmnopqrst" === Object.keys(Object.assign({}, n)).join("")
                        } catch (e) {
                            return !1
                        }
                    }() ? Object.assign : function(e, t) {
                        for (var i, s, l = n(e), u = 1; u < arguments.length; u++) {
                            i = Object(arguments[u]);
                            for (var c in i) o.call(i, c) && (l[c] = i[c]);
                            if (r) {
                                s = r(i);
                                for (var h = 0; h < s.length; h++) a.call(i, s[h]) && (l[s[h]] = i[s[h]])
                            }
                        }
                        return l
                    }
                }, {}],
                7: [function(e, t, i) {
                    "use strict";
                    t.exports = function(e, t) {
                        t = t || {};
                        for (var i = {
                                key: ["source", "protocol", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor"],
                                q: {
                                    name: "queryKey",
                                    parser: /(?:^|&)([^&=]*)=?([^&]*)/g
                                },
                                parser: {
                                    strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
                                    loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
                                }
                            }, n = i.parser[t.strictMode ? "strict" : "loose"].exec(e), r = {}, o = 14; o--;) r[i.key[o]] = n[o] || "";
                        return r[i.q.name] = {}, r[i.key[12]].replace(i.q.parser, function(e, t, n) {
                            t && (r[i.q.name][t] = n)
                        }), r
                    }
                }, {}],
                8: [function(e, t, i) {
                    (function(e) {
                        function t(e, t) {
                            for (var i = 0, n = e.length - 1; n >= 0; n--) {
                                var r = e[n];
                                "." === r ? e.splice(n, 1) : ".." === r ? (e.splice(n, 1), i++) : i && (e.splice(n, 1), i--)
                            }
                            if (t)
                                for (; i--; i) e.unshift("..");
                            return e
                        }

                        function n(e, t) {
                            if (e.filter) return e.filter(t);
                            for (var i = [], n = 0; n < e.length; n++) t(e[n], n, e) && i.push(e[n]);
                            return i
                        }
                        var r = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,
                            o = function(e) {
                                return r.exec(e).slice(1)
                            };
                        i.resolve = function() {
                            for (var i = "", r = !1, o = arguments.length - 1; o >= -1 && !r; o--) {
                                var a = o >= 0 ? arguments[o] : e.cwd();
                                if ("string" != typeof a) throw new TypeError("Arguments to path.resolve must be strings");
                                a && (i = a + "/" + i, r = "/" === a.charAt(0))
                            }
                            return i = t(n(i.split("/"), function(e) {
                                return !!e
                            }), !r).join("/"), (r ? "/" : "") + i || "."
                        }, i.normalize = function(e) {
                            var r = i.isAbsolute(e),
                                o = "/" === a(e, -1);
                            return e = t(n(e.split("/"), function(e) {
                                return !!e
                            }), !r).join("/"), e || r || (e = "."), e && o && (e += "/"), (r ? "/" : "") + e
                        }, i.isAbsolute = function(e) {
                            return "/" === e.charAt(0)
                        }, i.join = function() {
                            var e = Array.prototype.slice.call(arguments, 0);
                            return i.normalize(n(e, function(e, t) {
                                if ("string" != typeof e) throw new TypeError("Arguments to path.join must be strings");
                                return e
                            }).join("/"))
                        }, i.relative = function(e, t) {
                            function n(e) {
                                for (var t = 0; t < e.length && "" === e[t]; t++);
                                for (var i = e.length - 1; i >= 0 && "" === e[i]; i--);
                                return t > i ? [] : e.slice(t, i - t + 1)
                            }
                            e = i.resolve(e).substr(1), t = i.resolve(t).substr(1);
                            for (var r = n(e.split("/")), o = n(t.split("/")), a = Math.min(r.length, o.length), s = a, l = 0; l < a; l++)
                                if (r[l] !== o[l]) {
                                    s = l;
                                    break
                                }
                            for (var u = [], l = s; l < r.length; l++) u.push("..");
                            return u = u.concat(o.slice(s)), u.join("/")
                        }, i.sep = "/", i.delimiter = ":", i.dirname = function(e) {
                            var t = o(e),
                                i = t[0],
                                n = t[1];
                            return i || n ? (n && (n = n.substr(0, n.length - 1)), i + n) : "."
                        }, i.basename = function(e, t) {
                            var i = o(e)[2];
                            return t && i.substr(-1 * t.length) === t && (i = i.substr(0, i.length - t.length)), i
                        }, i.extname = function(e) {
                            return o(e)[3]
                        };
                        var a = "b" === "ab".substr(-1) ? function(e, t, i) {
                            return e.substr(t, i)
                        } : function(e, t, i) {
                            return t < 0 && (t = e.length + t), e.substr(t, i)
                        }
                    }).call(this, e("_process"))
                }, {
                    _process: 26
                }],
                9: [function(e, t, i) {
                    var n = new ArrayBuffer(0),
                        r = function(e, t, i, r) {
                            this.gl = e, this.buffer = e.createBuffer(), this.type = t || e.ARRAY_BUFFER, this.drawType = r || e.STATIC_DRAW, this.data = n, i && this.upload(i), this._updateID = 0
                        };
                    r.prototype.upload = function(e, t, i) {
                        i || this.bind();
                        var n = this.gl;
                        e = e || this.data, t = t || 0, this.data.byteLength >= e.byteLength ? n.bufferSubData(this.type, t, e) : n.bufferData(this.type, e, this.drawType), this.data = e
                    }, r.prototype.bind = function() {
                        this.gl.bindBuffer(this.type, this.buffer)
                    }, r.createVertexBuffer = function(e, t, i) {
                        return new r(e, e.ARRAY_BUFFER, t, i)
                    }, r.createIndexBuffer = function(e, t, i) {
                        return new r(e, e.ELEMENT_ARRAY_BUFFER, t, i)
                    }, r.create = function(e, t, i, n) {
                        return new r(e, t, i, n)
                    }, r.prototype.destroy = function() {
                        this.gl.deleteBuffer(this.buffer)
                    }, t.exports = r
                }, {}],
                10: [function(e, t, i) {
                    var n = e("./GLTexture"),
                        r = function(e, t, i) {
                            this.gl = e, this.framebuffer = e.createFramebuffer(), this.stencil = null, this.texture = null, this.width = t || 100, this.height = i || 100
                        };
                    r.prototype.enableTexture = function(e) {
                        var t = this.gl;
                        this.texture = e || new n(t), this.texture.bind(), this.bind(), t.framebufferTexture2D(t.FRAMEBUFFER, t.COLOR_ATTACHMENT0, t.TEXTURE_2D, this.texture.texture, 0)
                    }, r.prototype.enableStencil = function() {
                        if (!this.stencil) {
                            var e = this.gl;
                            this.stencil = e.createRenderbuffer(), e.bindRenderbuffer(e.RENDERBUFFER, this.stencil), e.framebufferRenderbuffer(e.FRAMEBUFFER, e.DEPTH_STENCIL_ATTACHMENT, e.RENDERBUFFER, this.stencil), e.renderbufferStorage(e.RENDERBUFFER, e.DEPTH_STENCIL, this.width, this.height)
                        }
                    }, r.prototype.clear = function(e, t, i, n) {
                        this.bind();
                        var r = this.gl;
                        r.clearColor(e, t, i, n), r.clear(r.COLOR_BUFFER_BIT | r.DEPTH_BUFFER_BIT)
                    }, r.prototype.bind = function() {
                        var e = this.gl;
                        e.bindFramebuffer(e.FRAMEBUFFER, this.framebuffer)
                    }, r.prototype.unbind = function() {
                        var e = this.gl;
                        e.bindFramebuffer(e.FRAMEBUFFER, null)
                    }, r.prototype.resize = function(e, t) {
                        var i = this.gl;
                        this.width = e, this.height = t, this.texture && this.texture.uploadData(null, e, t), this.stencil && (i.bindRenderbuffer(i.RENDERBUFFER, this.stencil), i.renderbufferStorage(i.RENDERBUFFER, i.DEPTH_STENCIL, e, t))
                    }, r.prototype.destroy = function() {
                        var e = this.gl;
                        this.texture && this.texture.destroy(), e.deleteFramebuffer(this.framebuffer), this.gl = null, this.stencil = null, this.texture = null
                    }, r.createRGBA = function(e, t, i, o) {
                        var a = n.fromData(e, null, t, i);
                        a.enableNearestScaling(), a.enableWrapClamp();
                        var s = new r(e, t, i);
                        return s.enableTexture(a), s.unbind(), s
                    }, r.createFloat32 = function(e, t, i, o) {
                        var a = new n.fromData(e, o, t, i);
                        a.enableNearestScaling(), a.enableWrapClamp();
                        var s = new r(e, t, i);
                        return s.enableTexture(a), s.unbind(), s
                    }, t.exports = r
                }, {
                    "./GLTexture": 12
                }],
                11: [function(e, t, i) {
                    var n = e("./shader/compileProgram"),
                        r = e("./shader/extractAttributes"),
                        o = e("./shader/extractUniforms"),
                        a = e("./shader/setPrecision"),
                        s = e("./shader/generateUniformAccessObject"),
                        l = function(e, t, i, l, u) {
                            this.gl = e, l && (t = a(t, l), i = a(i, l)), this.program = n(e, t, i, u), this.attributes = r(e, this.program), this.uniformData = o(e, this.program), this.uniforms = s(e, this.uniformData)
                        };
                    l.prototype.bind = function() {
                        return this.gl.useProgram(this.program), this
                    }, l.prototype.destroy = function() {
                        this.attributes = null, this.uniformData = null, this.uniforms = null, this.gl.deleteProgram(this.program)
                    }, t.exports = l
                }, {
                    "./shader/compileProgram": 17,
                    "./shader/extractAttributes": 19,
                    "./shader/extractUniforms": 20,
                    "./shader/generateUniformAccessObject": 21,
                    "./shader/setPrecision": 25
                }],
                12: [function(e, t, i) {
                    var n = function(e, t, i, n, r) {
                        this.gl = e, this.texture = e.createTexture(), this.mipmap = !1, this.premultiplyAlpha = !1, this.width = t || -1, this.height = i || -1, this.format = n || e.RGBA, this.type = r || e.UNSIGNED_BYTE
                    };
                    n.prototype.upload = function(e) {
                        this.bind();
                        var t = this.gl;
                        t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.premultiplyAlpha);
                        var i = e.videoWidth || e.width,
                            n = e.videoHeight || e.height;
                        n !== this.height || i !== this.width ? t.texImage2D(t.TEXTURE_2D, 0, this.format, this.format, this.type, e) : t.texSubImage2D(t.TEXTURE_2D, 0, 0, 0, this.format, this.type, e), this.width = i, this.height = n
                    };
                    var r = !1;
                    n.prototype.uploadData = function(e, t, i) {
                        this.bind();
                        var n = this.gl;
                        if (e instanceof Float32Array) {
                            if (!r) {
                                if (!n.getExtension("OES_texture_float")) throw new Error("floating point textures not available");
                                r = !0
                            }
                            this.type = n.FLOAT
                        } else this.type = this.type || n.UNSIGNED_BYTE;
                        n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.premultiplyAlpha), t !== this.width || i !== this.height ? n.texImage2D(n.TEXTURE_2D, 0, this.format, t, i, 0, this.format, this.type, e || null) : n.texSubImage2D(n.TEXTURE_2D, 0, 0, 0, t, i, this.format, this.type, e || null), this.width = t, this.height = i
                    }, n.prototype.bind = function(e) {
                        var t = this.gl;
                        void 0 !== e && t.activeTexture(t.TEXTURE0 + e), t.bindTexture(t.TEXTURE_2D, this.texture)
                    }, n.prototype.unbind = function() {
                        var e = this.gl;
                        e.bindTexture(e.TEXTURE_2D, null)
                    }, n.prototype.minFilter = function(e) {
                        var t = this.gl;
                        this.bind(), this.mipmap ? t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MIN_FILTER, e ? t.LINEAR_MIPMAP_LINEAR : t.NEAREST_MIPMAP_NEAREST) : t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MIN_FILTER, e ? t.LINEAR : t.NEAREST)
                    }, n.prototype.magFilter = function(e) {
                        var t = this.gl;
                        this.bind(), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MAG_FILTER, e ? t.LINEAR : t.NEAREST)
                    }, n.prototype.enableMipmap = function() {
                        var e = this.gl;
                        this.bind(), this.mipmap = !0, e.generateMipmap(e.TEXTURE_2D)
                    }, n.prototype.enableLinearScaling = function() {
                        this.minFilter(!0), this.magFilter(!0)
                    }, n.prototype.enableNearestScaling = function() {
                        this.minFilter(!1), this.magFilter(!1)
                    }, n.prototype.enableWrapClamp = function() {
                        var e = this.gl;
                        this.bind(), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_S, e.CLAMP_TO_EDGE), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_T, e.CLAMP_TO_EDGE)
                    }, n.prototype.enableWrapRepeat = function() {
                        var e = this.gl;
                        this.bind(), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_S, e.REPEAT), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_T, e.REPEAT)
                    }, n.prototype.enableWrapMirrorRepeat = function() {
                        var e = this.gl;
                        this.bind(), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_S, e.MIRRORED_REPEAT), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_T, e.MIRRORED_REPEAT)
                    }, n.prototype.destroy = function() {
                        this.gl.deleteTexture(this.texture)
                    }, n.fromSource = function(e, t, i) {
                        var r = new n(e);
                        return r.premultiplyAlpha = i || !1, r.upload(t), r
                    }, n.fromData = function(e, t, i, r) {
                        var o = new n(e);
                        return o.uploadData(t, i, r), o
                    }, t.exports = n
                }, {}],
                13: [function(e, t, i) {
                    function n(e, t) {
                        if (this.nativeVaoExtension = null, n.FORCE_NATIVE || (this.nativeVaoExtension = e.getExtension("OES_vertex_array_object") || e.getExtension("MOZ_OES_vertex_array_object") || e.getExtension("WEBKIT_OES_vertex_array_object")), this.nativeState = t, this.nativeVaoExtension) {
                            this.nativeVao = this.nativeVaoExtension.createVertexArrayOES();
                            var i = e.getParameter(e.MAX_VERTEX_ATTRIBS);
                            this.nativeState = {
                                tempAttribState: new Array(i),
                                attribState: new Array(i)
                            }
                        }
                        this.gl = e, this.attributes = [], this.indexBuffer = null, this.dirty = !1
                    }
                    var r = e("./setVertexAttribArrays");
                    n.prototype.constructor = n, t.exports = n, n.FORCE_NATIVE = !1, n.prototype.bind = function() {
                        if (this.nativeVao) {
                            if (this.nativeVaoExtension.bindVertexArrayOES(this.nativeVao), this.dirty) return this.dirty = !1, this.activate(), this;
                            this.indexBuffer && this.indexBuffer.bind()
                        } else this.activate();
                        return this
                    }, n.prototype.unbind = function() {
                        return this.nativeVao && this.nativeVaoExtension.bindVertexArrayOES(null), this
                    }, n.prototype.activate = function() {
                        for (var e = this.gl, t = null, i = 0; i < this.attributes.length; i++) {
                            var n = this.attributes[i];
                            t !== n.buffer && (n.buffer.bind(), t = n.buffer), e.vertexAttribPointer(n.attribute.location, n.attribute.size, n.type || e.FLOAT, n.normalized || !1, n.stride || 0, n.start || 0)
                        }
                        return r(e, this.attributes, this.nativeState), this.indexBuffer && this.indexBuffer.bind(), this
                    }, n.prototype.addAttribute = function(e, t, i, n, r, o) {
                        return this.attributes.push({
                            buffer: e,
                            attribute: t,
                            location: t.location,
                            type: i || this.gl.FLOAT,
                            normalized: n || !1,
                            stride: r || 0,
                            start: o || 0
                        }), this.dirty = !0, this
                    }, n.prototype.addIndex = function(e) {
                        return this.indexBuffer = e, this.dirty = !0, this
                    }, n.prototype.clear = function() {
                        return this.nativeVao && this.nativeVaoExtension.bindVertexArrayOES(this.nativeVao), this.attributes.length = 0, this.indexBuffer = null, this
                    }, n.prototype.draw = function(e, t, i) {
                        var n = this.gl;
                        return this.indexBuffer ? n.drawElements(e, t || this.indexBuffer.data.length, n.UNSIGNED_SHORT, 2 * (i || 0)) : n.drawArrays(e, i, t || this.getSize()), this
                    }, n.prototype.destroy = function() {
                        this.gl = null, this.indexBuffer = null, this.attributes = null, this.nativeState = null, this.nativeVao && this.nativeVaoExtension.deleteVertexArrayOES(this.nativeVao), this.nativeVaoExtension = null, this.nativeVao = null
                    }, n.prototype.getSize = function() {
                        var e = this.attributes[0];
                        return e.buffer.data.length / (e.stride / 4 || e.attribute.size)
                    }
                }, {
                    "./setVertexAttribArrays": 16
                }],
                14: [function(e, t, i) {
                    var n = function(e, t) {
                        var i = e.getContext("webgl", t) || e.getContext("experimental-webgl", t);
                        if (!i) throw new Error("This browser does not support webGL. Try using the canvas renderer");
                        return i
                    };
                    t.exports = n
                }, {}],
                15: [function(e, t, i) {
                    var n = {
                        createContext: e("./createContext"),
                        setVertexAttribArrays: e("./setVertexAttribArrays"),
                        GLBuffer: e("./GLBuffer"),
                        GLFramebuffer: e("./GLFramebuffer"),
                        GLShader: e("./GLShader"),
                        GLTexture: e("./GLTexture"),
                        VertexArrayObject: e("./VertexArrayObject"),
                        shader: e("./shader")
                    };
                    void 0 !== t && t.exports && (t.exports = n), "undefined" != typeof window && (window.PIXI = window.PIXI || {}, window.PIXI.glCore = n)
                }, {
                    "./GLBuffer": 9,
                    "./GLFramebuffer": 10,
                    "./GLShader": 11,
                    "./GLTexture": 12,
                    "./VertexArrayObject": 13,
                    "./createContext": 14,
                    "./setVertexAttribArrays": 16,
                    "./shader": 22
                }],
                16: [function(e, t, i) {
                    var n = function(e, t, i) {
                        var n;
                        if (i) {
                            var r = i.tempAttribState,
                                o = i.attribState;
                            for (n = 0; n < r.length; n++) r[n] = !1;
                            for (n = 0; n < t.length; n++) r[t[n].attribute.location] = !0;
                            for (n = 0; n < o.length; n++) o[n] !== r[n] && (o[n] = r[n], i.attribState[n] ? e.enableVertexAttribArray(n) : e.disableVertexAttribArray(n))
                        } else
                            for (n = 0; n < t.length; n++) {
                                var a = t[n];
                                e.enableVertexAttribArray(a.attribute.location)
                            }
                    };
                    t.exports = n
                }, {}],
                17: [function(e, t, i) {
                    var n = function(e, t, i, n) {
                            var o = r(e, e.VERTEX_SHADER, t),
                                a = r(e, e.FRAGMENT_SHADER, i),
                                s = e.createProgram();
                            if (e.attachShader(s, o), e.attachShader(s, a), n)
                                for (var l in n) e.bindAttribLocation(s, n[l], l);
                            return e.linkProgram(s), e.getProgramParameter(s, e.LINK_STATUS) || (e.getProgramInfoLog(s), e.deleteProgram(s), s = null), e.deleteShader(o), e.deleteShader(a), s
                        },
                        r = function(e, t, i) {
                            var n = e.createShader(t);
                            return e.shaderSource(n, i), e.compileShader(n), e.getShaderParameter(n, e.COMPILE_STATUS) ? n : null
                        };
                    t.exports = n
                }, {}],
                18: [function(e, t, i) {
                    var n = function(e, t) {
                            switch (e) {
                                case "float":
                                    return 0;
                                case "vec2":
                                    return new Float32Array(2 * t);
                                case "vec3":
                                    return new Float32Array(3 * t);
                                case "vec4":
                                    return new Float32Array(4 * t);
                                case "int":
                                case "sampler2D":
                                    return 0;
                                case "ivec2":
                                    return new Int32Array(2 * t);
                                case "ivec3":
                                    return new Int32Array(3 * t);
                                case "ivec4":
                                    return new Int32Array(4 * t);
                                case "bool":
                                    return !1;
                                case "bvec2":
                                    return r(2 * t);
                                case "bvec3":
                                    return r(3 * t);
                                case "bvec4":
                                    return r(4 * t);
                                case "mat2":
                                    return new Float32Array([1, 0, 0, 1]);
                                case "mat3":
                                    return new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);
                                case "mat4":
                                    return new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])
                            }
                        },
                        r = function(e) {
                            for (var t = new Array(e), i = 0; i < t.length; i++) t[i] = !1;
                            return t
                        };
                    t.exports = n
                }, {}],
                19: [function(e, t, i) {
                    var n = e("./mapType"),
                        r = e("./mapSize"),
                        o = function(e, t) {
                            for (var i = {}, o = e.getProgramParameter(t, e.ACTIVE_ATTRIBUTES), s = 0; s < o; s++) {
                                var l = e.getActiveAttrib(t, s),
                                    u = n(e, l.type);
                                i[l.name] = {
                                    type: u,
                                    size: r(u),
                                    location: e.getAttribLocation(t, l.name),
                                    pointer: a
                                }
                            }
                            return i
                        },
                        a = function(e, t, i, n) {
                            gl.vertexAttribPointer(this.location, this.size, e || gl.FLOAT, t || !1, i || 0, n || 0)
                        };
                    t.exports = o
                }, {
                    "./mapSize": 23,
                    "./mapType": 24
                }],
                20: [function(e, t, i) {
                    var n = e("./mapType"),
                        r = e("./defaultValue"),
                        o = function(e, t) {
                            for (var i = {}, o = e.getProgramParameter(t, e.ACTIVE_UNIFORMS), a = 0; a < o; a++) {
                                var s = e.getActiveUniform(t, a),
                                    l = s.name.replace(/\[.*?\]/, ""),
                                    u = n(e, s.type);
                                i[l] = {
                                    type: u,
                                    size: s.size,
                                    location: e.getUniformLocation(t, l),
                                    value: r(u, s.size)
                                }
                            }
                            return i
                        };
                    t.exports = o
                }, {
                    "./defaultValue": 18,
                    "./mapType": 24
                }],
                21: [function(e, t, i) {
                    function n(e, t) {
                        return function(i) {
                            this.data[e].value = i;
                            var n = this.data[e].location;
                            1 === t.size ? s[t.type](this.gl, n, i) : l[t.type](this.gl, n, i)
                        }
                    }

                    function r(e, t) {
                        for (var i = t, n = 0; n < e.length - 1; n++) {
                            var r = i[e[n]] || {
                                data: {}
                            };
                            i[e[n]] = r, i = r
                        }
                        return i
                    }
                    var o = function(e, t) {
                            var i = {
                                data: {}
                            };
                            i.gl = e;
                            for (var o = Object.keys(t), s = 0; s < o.length; s++) {
                                var l = o[s],
                                    u = l.split("."),
                                    c = u[u.length - 1],
                                    h = r(u, i),
                                    p = t[l];
                                h.data[c] = p, h.gl = e, Object.defineProperty(h, c, {
                                    get: a(c),
                                    set: n(c, p)
                                })
                            }
                            return i
                        },
                        a = function(e) {
                            return function() {
                                return this.data[e].value
                            }
                        },
                        s = {
                            float: function(e, t, i) {
                                e.uniform1f(t, i)
                            },
                            vec2: function(e, t, i) {
                                e.uniform2f(t, i[0], i[1])
                            },
                            vec3: function(e, t, i) {
                                e.uniform3f(t, i[0], i[1], i[2])
                            },
                            vec4: function(e, t, i) {
                                e.uniform4f(t, i[0], i[1], i[2], i[3])
                            },
                            int: function(e, t, i) {
                                e.uniform1i(t, i)
                            },
                            ivec2: function(e, t, i) {
                                e.uniform2i(t, i[0], i[1])
                            },
                            ivec3: function(e, t, i) {
                                e.uniform3i(t, i[0], i[1], i[2])
                            },
                            ivec4: function(e, t, i) {
                                e.uniform4i(t, i[0], i[1], i[2], i[3])
                            },
                            bool: function(e, t, i) {
                                e.uniform1i(t, i)
                            },
                            bvec2: function(e, t, i) {
                                e.uniform2i(t, i[0], i[1])
                            },
                            bvec3: function(e, t, i) {
                                e.uniform3i(t, i[0], i[1], i[2])
                            },
                            bvec4: function(e, t, i) {
                                e.uniform4i(t, i[0], i[1], i[2], i[3])
                            },
                            mat2: function(e, t, i) {
                                e.uniformMatrix2fv(t, !1, i)
                            },
                            mat3: function(e, t, i) {
                                e.uniformMatrix3fv(t, !1, i)
                            },
                            mat4: function(e, t, i) {
                                e.uniformMatrix4fv(t, !1, i)
                            },
                            sampler2D: function(e, t, i) {
                                e.uniform1i(t, i)
                            }
                        },
                        l = {
                            float: function(e, t, i) {
                                e.uniform1fv(t, i)
                            },
                            vec2: function(e, t, i) {
                                e.uniform2fv(t, i)
                            },
                            vec3: function(e, t, i) {
                                e.uniform3fv(t, i)
                            },
                            vec4: function(e, t, i) {
                                e.uniform4fv(t, i)
                            },
                            int: function(e, t, i) {
                                e.uniform1iv(t, i)
                            },
                            ivec2: function(e, t, i) {
                                e.uniform2iv(t, i)
                            },
                            ivec3: function(e, t, i) {
                                e.uniform3iv(t, i)
                            },
                            ivec4: function(e, t, i) {
                                e.uniform4iv(t, i)
                            },
                            bool: function(e, t, i) {
                                e.uniform1iv(t, i)
                            },
                            bvec2: function(e, t, i) {
                                e.uniform2iv(t, i)
                            },
                            bvec3: function(e, t, i) {
                                e.uniform3iv(t, i)
                            },
                            bvec4: function(e, t, i) {
                                e.uniform4iv(t, i)
                            },
                            sampler2D: function(e, t, i) {
                                e.uniform1iv(t, i)
                            }
                        };
                    t.exports = o
                }, {}],
                22: [function(e, t, i) {
                    t.exports = {
                        compileProgram: e("./compileProgram"),
                        defaultValue: e("./defaultValue"),
                        extractAttributes: e("./extractAttributes"),
                        extractUniforms: e("./extractUniforms"),
                        generateUniformAccessObject: e("./generateUniformAccessObject"),
                        setPrecision: e("./setPrecision"),
                        mapSize: e("./mapSize"),
                        mapType: e("./mapType")
                    }
                }, {
                    "./compileProgram": 17,
                    "./defaultValue": 18,
                    "./extractAttributes": 19,
                    "./extractUniforms": 20,
                    "./generateUniformAccessObject": 21,
                    "./mapSize": 23,
                    "./mapType": 24,
                    "./setPrecision": 25
                }],
                23: [function(e, t, i) {
                    var n = function(e) {
                            return r[e]
                        },
                        r = {
                            float: 1,
                            vec2: 2,
                            vec3: 3,
                            vec4: 4,
                            int: 1,
                            ivec2: 2,
                            ivec3: 3,
                            ivec4: 4,
                            bool: 1,
                            bvec2: 2,
                            bvec3: 3,
                            bvec4: 4,
                            mat2: 4,
                            mat3: 9,
                            mat4: 16,
                            sampler2D: 1
                        };
                    t.exports = n
                }, {}],
                24: [function(e, t, i) {
                    var n = function(e, t) {
                            if (!r) {
                                var i = Object.keys(o);
                                r = {};
                                for (var n = 0; n < i.length; ++n) {
                                    var a = i[n];
                                    r[e[a]] = o[a]
                                }
                            }
                            return r[t]
                        },
                        r = null,
                        o = {
                            FLOAT: "float",
                            FLOAT_VEC2: "vec2",
                            FLOAT_VEC3: "vec3",
                            FLOAT_VEC4: "vec4",
                            INT: "int",
                            INT_VEC2: "ivec2",
                            INT_VEC3: "ivec3",
                            INT_VEC4: "ivec4",
                            BOOL: "bool",
                            BOOL_VEC2: "bvec2",
                            BOOL_VEC3: "bvec3",
                            BOOL_VEC4: "bvec4",
                            FLOAT_MAT2: "mat2",
                            FLOAT_MAT3: "mat3",
                            FLOAT_MAT4: "mat4",
                            SAMPLER_2D: "sampler2D"
                        };
                    t.exports = n
                }, {}],
                25: [function(e, t, i) {
                    var n = function(e, t) {
                        return "precision" !== e.substring(0, 9) ? "precision " + t + " float;\n" + e : e
                    };
                    t.exports = n
                }, {}],
                26: [function(e, t, i) {
                    function n() {
                        throw new Error("setTimeout has not been defined")
                    }

                    function r() {
                        throw new Error("clearTimeout has not been defined")
                    }

                    function o(e) {
                        if (h === setTimeout) return setTimeout(e, 0);
                        if ((h === n || !h) && setTimeout) return h = setTimeout, setTimeout(e, 0);
                        try {
                            return h(e, 0)
                        } catch (t) {
                            try {
                                return h.call(null, e, 0)
                            } catch (t) {
                                return h.call(this, e, 0)
                            }
                        }
                    }

                    function a(e) {
                        if (p === clearTimeout) return clearTimeout(e);
                        if ((p === r || !p) && clearTimeout) return p = clearTimeout, clearTimeout(e);
                        try {
                            return p(e)
                        } catch (t) {
                            try {
                                return p.call(null, e)
                            } catch (t) {
                                return p.call(this, e)
                            }
                        }
                    }

                    function s() {
                        m && d && (m = !1, d.length ? _ = d.concat(_) : g = -1, _.length && l())
                    }

                    function l() {
                        if (!m) {
                            var e = o(s);
                            m = !0;
                            for (var t = _.length; t;) {
                                for (d = _, _ = []; ++g < t;) d && d[g].run();
                                g = -1, t = _.length
                            }
                            d = null, m = !1, a(e)
                        }
                    }

                    function u(e, t) {
                        this.fun = e, this.array = t
                    }

                    function c() {}
                    var h, p, f = t.exports = {};
                    ! function() {
                        try {
                            h = "function" == typeof setTimeout ? setTimeout : n
                        } catch (e) {
                            h = n
                        }
                        try {
                            p = "function" == typeof clearTimeout ? clearTimeout : r
                        } catch (e) {
                            p = r
                        }
                    }();
                    var d, _ = [],
                        m = !1,
                        g = -1;
                    f.nextTick = function(e) {
                        var t = new Array(arguments.length - 1);
                        if (arguments.length > 1)
                            for (var i = 1; i < arguments.length; i++) t[i - 1] = arguments[i];
                        _.push(new u(e, t)), 1 !== _.length || m || o(l)
                    }, u.prototype.run = function() {
                        this.fun.apply(null, this.array)
                    }, f.title = "browser", f.browser = !0, f.env = {}, f.argv = [], f.version = "", f.versions = {}, f.on = c, f.addListener = c, f.once = c, f.off = c, f.removeListener = c, f.removeAllListeners = c, f.emit = c, f.prependListener = c, f.prependOnceListener = c, f.listeners = function(e) {
                        return []
                    }, f.binding = function(e) {
                        throw new Error("process.binding is not supported")
                    }, f.cwd = function() {
                        return "/"
                    }, f.chdir = function(e) {
                        throw new Error("process.chdir is not supported")
                    }, f.umask = function() {
                        return 0
                    }
                }, {}],
                27: [function(t, i, n) {
                    (function(t) {
                        ! function(r) {
                            function o(e) {
                                throw new RangeError(N[e])
                            }

                            function a(e, t) {
                                for (var i = e.length, n = []; i--;) n[i] = t(e[i]);
                                return n
                            }

                            function s(e, t) {
                                var i = e.split("@"),
                                    n = "";
                                return i.length > 1 && (n = i[0] + "@", e = i[1]), e = e.replace(D, "."), n + a(e.split("."), t).join(".")
                            }

                            function l(e) {
                                for (var t, i, n = [], r = 0, o = e.length; r < o;) t = e.charCodeAt(r++), t >= 55296 && t <= 56319 && r < o ? (i = e.charCodeAt(r++), 56320 == (64512 & i) ? n.push(((1023 & t) << 10) + (1023 & i) + 65536) : (n.push(t), r--)) : n.push(t);
                                return n
                            }

                            function u(e) {
                                return a(e, function(e) {
                                    var t = "";
                                    return e > 65535 && (e -= 65536, t += F(e >>> 10 & 1023 | 55296), e = 56320 | 1023 & e), t += F(e)
                                }).join("")
                            }

                            function c(e) {
                                return e - 48 < 10 ? e - 22 : e - 65 < 26 ? e - 65 : e - 97 < 26 ? e - 97 : T
                            }

                            function h(e, t) {
                                return e + 22 + 75 * (e < 26) - ((0 != t) << 5)
                            }

                            function p(e, t, i) {
                                var n = 0;
                                for (e = i ? k(e / R) : e >> 1, e += k(e / t); e > L * E >> 1; n += T) e = k(e / L);
                                return k(n + (L + 1) * e / (e + P))
                            }

                            function f(e) {
                                var t, i, n, r, a, s, l, h, f, d, _ = [],
                                    m = e.length,
                                    g = 0,
                                    v = A,
                                    y = O;
                                for (i = e.lastIndexOf(I), i < 0 && (i = 0), n = 0; n < i; ++n) e.charCodeAt(n) >= 128 && o("not-basic"), _.push(e.charCodeAt(n));
                                for (r = i > 0 ? i + 1 : 0; r < m;) {
                                    for (a = g, s = 1, l = T; r >= m && o("invalid-input"), h = c(e.charCodeAt(r++)), (h >= T || h > k((S - g) / s)) && o("overflow"), g += h * s, f = l <= y ? w : l >= y + E ? E : l - y, !(h < f); l += T) d = T - f, s > k(S / d) && o("overflow"), s *= d;
                                    t = _.length + 1, y = p(g - a, t, 0 == a), k(g / t) > S - v && o("overflow"), v += k(g / t), g %= t, _.splice(g++, 0, v)
                                }
                                return u(_)
                            }

                            function d(e) {
                                var t, i, n, r, a, s, u, c, f, d, _, m, g, v, y, b = [];
                                for (e = l(e), m = e.length, t = A, i = 0, a = O, s = 0; s < m; ++s)(_ = e[s]) < 128 && b.push(F(_));
                                for (n = r = b.length, r && b.push(I); n < m;) {
                                    for (u = S, s = 0; s < m; ++s)(_ = e[s]) >= t && _ < u && (u = _);
                                    for (g = n + 1, u - t > k((S - i) / g) && o("overflow"), i += (u - t) * g, t = u, s = 0; s < m; ++s)
                                        if (_ = e[s], _ < t && ++i > S && o("overflow"), _ == t) {
                                            for (c = i, f = T; d = f <= a ? w : f >= a + E ? E : f - a, !(c < d); f += T) y = c - d, v = T - d, b.push(F(h(d + y % v, 0))), c = k(y / v);
                                            b.push(F(h(c, 0))), a = p(i, g, n == r), i = 0, ++n
                                        }++i, ++t
                                }
                                return b.join("")
                            }

                            function _(e) {
                                return s(e, function(e) {
                                    return C.test(e) ? f(e.slice(4).toLowerCase()) : e
                                })
                            }

                            function m(e) {
                                return s(e, function(e) {
                                    return M.test(e) ? "xn--" + d(e) : e
                                })
                            }
                            var g = "object" == typeof n && n && !n.nodeType && n,
                                v = "object" == typeof i && i && !i.nodeType && i,
                                y = "object" == typeof t && t;
                            y.global !== y && y.window !== y && y.self !== y || (r = y);
                            var b, x, S = 2147483647,
                                T = 36,
                                w = 1,
                                E = 26,
                                P = 38,
                                R = 700,
                                O = 72,
                                A = 128,
                                I = "-",
                                C = /^xn--/,
                                M = /[^\x20-\x7E]/,
                                D = /[\x2E\u3002\uFF0E\uFF61]/g,
                                N = {
                                    overflow: "Overflow: input needs wider integers to process",
                                    "not-basic": "Illegal input >= 0x80 (not a basic code point)",
                                    "invalid-input": "Invalid input"
                                },
                                L = T - w,
                                k = Math.floor,
                                F = String.fromCharCode;
                            if (b = {
                                    version: "1.4.1",
                                    ucs2: {
                                        decode: l,
                                        encode: u
                                    },
                                    decode: f,
                                    encode: d,
                                    toASCII: m,
                                    toUnicode: _
                                }, "function" == typeof e && "object" == typeof e.amd && e.amd) e("punycode", function() {
                                return b
                            });
                            else if (g && v)
                                if (i.exports == g) v.exports = b;
                                else
                                    for (x in b) b.hasOwnProperty(x) && (g[x] = b[x]);
                            else r.punycode = b
                        }(this)
                    }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {})
                }, {}],
                28: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        return Object.prototype.hasOwnProperty.call(e, t)
                    }
                    t.exports = function(e, t, i, o) {
                        t = t || "&", i = i || "=";
                        var a = {};
                        if ("string" != typeof e || 0 === e.length) return a;
                        var s = /\+/g;
                        e = e.split(t);
                        var l = 1e3;
                        o && "number" == typeof o.maxKeys && (l = o.maxKeys);
                        var u = e.length;
                        l > 0 && u > l && (u = l);
                        for (var c = 0; c < u; ++c) {
                            var h, p, f, d, _ = e[c].replace(s, "%20"),
                                m = _.indexOf(i);
                            m >= 0 ? (h = _.substr(0, m), p = _.substr(m + 1)) : (h = _, p = ""), f = decodeURIComponent(h), d = decodeURIComponent(p), n(a, f) ? r(a[f]) ? a[f].push(d) : a[f] = [a[f], d] : a[f] = d
                        }
                        return a
                    };
                    var r = Array.isArray || function(e) {
                        return "[object Array]" === Object.prototype.toString.call(e)
                    }
                }, {}],
                29: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (e.map) return e.map(t);
                        for (var i = [], n = 0; n < e.length; n++) i.push(t(e[n], n));
                        return i
                    }
                    var r = function(e) {
                        switch (typeof e) {
                            case "string":
                                return e;
                            case "boolean":
                                return e ? "true" : "false";
                            case "number":
                                return isFinite(e) ? e : "";
                            default:
                                return ""
                        }
                    };
                    t.exports = function(e, t, i, s) {
                        return t = t || "&", i = i || "=", null === e && (e = void 0), "object" == typeof e ? n(a(e), function(a) {
                            var s = encodeURIComponent(r(a)) + i;
                            return o(e[a]) ? n(e[a], function(e) {
                                return s + encodeURIComponent(r(e))
                            }).join(t) : s + encodeURIComponent(r(e[a]))
                        }).join(t) : s ? encodeURIComponent(r(s)) + i + encodeURIComponent(r(e)) : ""
                    };
                    var o = Array.isArray || function(e) {
                            return "[object Array]" === Object.prototype.toString.call(e)
                        },
                        a = Object.keys || function(e) {
                            var t = [];
                            for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && t.push(i);
                            return t
                        }
                }, {}],
                30: [function(e, t, i) {
                    "use strict";
                    i.decode = i.parse = e("./decode"), i.encode = i.stringify = e("./encode")
                }, {
                    "./decode": 28,
                    "./encode": 29
                }],
                31: [function(e, t, i) {
                    "use strict";
                    t.exports = function(e, t, i) {
                        var n, r = e.length;
                        if (!(t >= r || 0 === i)) {
                            i = t + i > r ? r - t : i;
                            var o = r - i;
                            for (n = t; n < o; ++n) e[n] = e[n + i];
                            e.length = o
                        }
                    }
                }, {}],
                32: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0, i.Loader = void 0;
                    var o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                            return typeof e
                        } : function(e) {
                            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                        },
                        a = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        s = e("mini-signals"),
                        l = n(s),
                        u = e("parse-uri"),
                        c = n(u),
                        h = e("./async"),
                        p = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(h),
                        f = e("./Resource"),
                        d = /(#[\w-]+)?$/,
                        _ = i.Loader = function() {
                            function e() {
                                var t = this,
                                    i = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "",
                                    n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 10;
                                r(this, e), this.baseUrl = i, this.progress = 0, this.loading = !1, this.defaultQueryString = "", this._beforeMiddleware = [], this._afterMiddleware = [], this._resourcesParsing = [], this._boundLoadResource = function(e, i) {
                                    return t._loadResource(e, i)
                                }, this._queue = p.queue(this._boundLoadResource, n), this._queue.pause(), this.resources = {}, this.onProgress = new l.default, this.onError = new l.default, this.onLoad = new l.default, this.onStart = new l.default, this.onComplete = new l.default;
                                for (var o = 0; o < e._defaultBeforeMiddleware.length; ++o) this.pre(e._defaultBeforeMiddleware[o]);
                                for (var a = 0; a < e._defaultAfterMiddleware.length; ++a) this.use(e._defaultAfterMiddleware[a])
                            }
                            return e.prototype.add = function(e, t, i, n) {
                                if (Array.isArray(e)) {
                                    for (var r = 0; r < e.length; ++r) this.add(e[r]);
                                    return this
                                }
                                if ("object" === (void 0 === e ? "undefined" : o(e)) && (n = t || e.callback || e.onComplete, i = e, t = e.url, e = e.name || e.key || e.url), "string" != typeof t && (n = i, i = t, t = e), "string" != typeof t) throw new Error("No url passed to add resource to loader.");
                                if ("function" == typeof i && (n = i, i = null), this.loading && (!i || !i.parentResource)) throw new Error("Cannot add resources while the loader is running.");
                                if (this.resources[e]) throw new Error('Resource named "' + e + '" already exists.');
                                if (t = this._prepareUrl(t), this.resources[e] = new f.Resource(e, t, i), "function" == typeof n && this.resources[e].onAfterMiddleware.once(n), this.loading) {
                                    for (var a = i.parentResource, s = [], l = 0; l < a.children.length; ++l) a.children[l].isComplete || s.push(a.children[l]);
                                    var u = a.progressChunk * (s.length + 1),
                                        c = u / (s.length + 2);
                                    a.children.push(this.resources[e]), a.progressChunk = c;
                                    for (var h = 0; h < s.length; ++h) s[h].progressChunk = c;
                                    this.resources[e].progressChunk = c
                                }
                                return this._queue.push(this.resources[e]), this
                            }, e.prototype.pre = function(e) {
                                return this._beforeMiddleware.push(e), this
                            }, e.prototype.use = function(e) {
                                return this._afterMiddleware.push(e), this
                            }, e.prototype.reset = function() {
                                this.progress = 0, this.loading = !1, this._queue.kill(), this._queue.pause();
                                for (var e in this.resources) {
                                    var t = this.resources[e];
                                    t._onLoadBinding && t._onLoadBinding.detach(), t.isLoading && t.abort()
                                }
                                return this.resources = {}, this
                            }, e.prototype.load = function(e) {
                                if ("function" == typeof e && this.onComplete.once(e), this.loading) return this;
                                if (this._queue.idle()) this._onStart(), this._onComplete();
                                else {
                                    for (var t = this._queue._tasks.length, i = 100 / t, n = 0; n < this._queue._tasks.length; ++n) this._queue._tasks[n].data.progressChunk = i;
                                    this._onStart(), this._queue.resume()
                                }
                                return this
                            }, e.prototype._prepareUrl = function(e) {
                                var t = (0, c.default)(e, {
                                        strictMode: !0
                                    }),
                                    i = void 0;
                                if (i = t.protocol || !t.path || 0 === e.indexOf("//") ? e : this.baseUrl.length && this.baseUrl.lastIndexOf("/") !== this.baseUrl.length - 1 && "/" !== e.charAt(0) ? this.baseUrl + "/" + e : this.baseUrl + e, this.defaultQueryString) {
                                    var n = d.exec(i)[0];
                                    i = i.substr(0, i.length - n.length), -1 !== i.indexOf("?") ? i += "&" + this.defaultQueryString : i += "?" + this.defaultQueryString, i += n
                                }
                                return i
                            }, e.prototype._loadResource = function(e, t) {
                                var i = this;
                                e._dequeue = t, p.eachSeries(this._beforeMiddleware, function(t, n) {
                                    t.call(i, e, function() {
                                        n(e.isComplete ? {} : null)
                                    })
                                }, function() {
                                    e.isComplete ? i._onLoad(e) : (e._onLoadBinding = e.onComplete.once(i._onLoad, i), e.load())
                                }, !0)
                            }, e.prototype._onStart = function() {
                                this.progress = 0, this.loading = !0, this.onStart.dispatch(this)
                            }, e.prototype._onComplete = function() {
                                this.progress = 100, this.loading = !1, this.onComplete.dispatch(this, this.resources)
                            }, e.prototype._onLoad = function(e) {
                                var t = this;
                                e._onLoadBinding = null, this._resourcesParsing.push(e), e._dequeue(), p.eachSeries(this._afterMiddleware, function(i, n) {
                                    i.call(t, e, n)
                                }, function() {
                                    e.onAfterMiddleware.dispatch(e), t.progress = Math.min(100, t.progress + e.progressChunk), t.onProgress.dispatch(t, e), e.error ? t.onError.dispatch(e.error, t, e) : t.onLoad.dispatch(t, e), t._resourcesParsing.splice(t._resourcesParsing.indexOf(e), 1), t._queue.idle() && 0 === t._resourcesParsing.length && t._onComplete()
                                }, !0)
                            }, a(e, [{
                                key: "concurrency",
                                get: function() {
                                    return this._queue.concurrency
                                },
                                set: function(e) {
                                    this._queue.concurrency = e
                                }
                            }]), e
                        }();
                    _._defaultBeforeMiddleware = [], _._defaultAfterMiddleware = [], _.pre = function(e) {
                        return _._defaultBeforeMiddleware.push(e), _
                    }, _.use = function(e) {
                        return _._defaultAfterMiddleware.push(e), _
                    }
                }, {
                    "./Resource": 33,
                    "./async": 34,
                    "mini-signals": 5,
                    "parse-uri": 7
                }],
                33: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o() {}

                    function a(e, t, i) {
                        t && 0 === t.indexOf(".") && (t = t.substring(1)), t && (e[t] = i)
                    }

                    function s(e) {
                        return e.toString().replace("object ", "")
                    }
                    i.__esModule = !0, i.Resource = void 0;
                    var l = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        u = e("parse-uri"),
                        c = n(u),
                        h = e("mini-signals"),
                        p = n(h),
                        f = !(!window.XDomainRequest || "withCredentials" in new XMLHttpRequest),
                        d = null,
                        _ = i.Resource = function() {
                            function e(t, i, n) {
                                if (r(this, e), "string" != typeof t || "string" != typeof i) throw new Error("Both name and url are required for constructing a resource.");
                                n = n || {}, this._flags = 0, this._setFlag(e.STATUS_FLAGS.DATA_URL, 0 === i.indexOf("data:")), this.name = t, this.url = i, this.extension = this._getExtension(), this.data = null, this.crossOrigin = !0 === n.crossOrigin ? "anonymous" : n.crossOrigin, this.timeout = n.timeout || 0, this.loadType = n.loadType || this._determineLoadType(), this.xhrType = n.xhrType, this.metadata = n.metadata || {}, this.error = null, this.xhr = null, this.children = [], this.type = e.TYPE.UNKNOWN, this.progressChunk = 0, this._dequeue = o, this._onLoadBinding = null, this._elementTimer = 0, this._boundComplete = this.complete.bind(this), this._boundOnError = this._onError.bind(this), this._boundOnProgress = this._onProgress.bind(this), this._boundOnTimeout = this._onTimeout.bind(this), this._boundXhrOnError = this._xhrOnError.bind(this), this._boundXhrOnTimeout = this._xhrOnTimeout.bind(this), this._boundXhrOnAbort = this._xhrOnAbort.bind(this), this._boundXhrOnLoad = this._xhrOnLoad.bind(this), this.onStart = new p.default, this.onProgress = new p.default, this.onComplete = new p.default, this.onAfterMiddleware = new p.default
                            }
                            return e.setExtensionLoadType = function(t, i) {
                                a(e._loadTypeMap, t, i)
                            }, e.setExtensionXhrType = function(t, i) {
                                a(e._xhrTypeMap, t, i)
                            }, e.prototype.complete = function() {
                                this._clearEvents(), this._finish()
                            }, e.prototype.abort = function(t) {
                                if (!this.error) {
                                    if (this.error = new Error(t), this._clearEvents(), this.xhr) this.xhr.abort();
                                    else if (this.xdr) this.xdr.abort();
                                    else if (this.data)
                                        if (this.data.src) this.data.src = e.EMPTY_GIF;
                                        else
                                            for (; this.data.firstChild;) this.data.removeChild(this.data.firstChild);
                                    this._finish()
                                }
                            }, e.prototype.load = function(t) {
                                var i = this;
                                if (!this.isLoading) {
                                    if (this.isComplete) return void(t && setTimeout(function() {
                                        return t(i)
                                    }, 1));
                                    switch (t && this.onComplete.once(t), this._setFlag(e.STATUS_FLAGS.LOADING, !0), this.onStart.dispatch(this), !1 !== this.crossOrigin && "string" == typeof this.crossOrigin || (this.crossOrigin = this._determineCrossOrigin(this.url)), this.loadType) {
                                        case e.LOAD_TYPE.IMAGE:
                                            this.type = e.TYPE.IMAGE, this._loadElement("image");
                                            break;
                                        case e.LOAD_TYPE.AUDIO:
                                            this.type = e.TYPE.AUDIO, this._loadSourceElement("audio");
                                            break;
                                        case e.LOAD_TYPE.VIDEO:
                                            this.type = e.TYPE.VIDEO, this._loadSourceElement("video");
                                            break;
                                        case e.LOAD_TYPE.XHR:
                                        default:
                                            f && this.crossOrigin ? this._loadXdr() : this._loadXhr()
                                    }
                                }
                            }, e.prototype._hasFlag = function(e) {
                                return 0 != (this._flags & e)
                            }, e.prototype._setFlag = function(e, t) {
                                this._flags = t ? this._flags | e : this._flags & ~e
                            }, e.prototype._clearEvents = function() {
                                clearTimeout(this._elementTimer), this.data && this.data.removeEventListener && (this.data.removeEventListener("error", this._boundOnError, !1), this.data.removeEventListener("load", this._boundComplete, !1), this.data.removeEventListener("progress", this._boundOnProgress, !1), this.data.removeEventListener("canplaythrough", this._boundComplete, !1)), this.xhr && (this.xhr.removeEventListener ? (this.xhr.removeEventListener("error", this._boundXhrOnError, !1), this.xhr.removeEventListener("timeout", this._boundXhrOnTimeout, !1), this.xhr.removeEventListener("abort", this._boundXhrOnAbort, !1), this.xhr.removeEventListener("progress", this._boundOnProgress, !1), this.xhr.removeEventListener("load", this._boundXhrOnLoad, !1)) : (this.xhr.onerror = null, this.xhr.ontimeout = null, this.xhr.onprogress = null, this.xhr.onload = null))
                            }, e.prototype._finish = function() {
                                if (this.isComplete) throw new Error("Complete called again for an already completed resource.");
                                this._setFlag(e.STATUS_FLAGS.COMPLETE, !0), this._setFlag(e.STATUS_FLAGS.LOADING, !1), this.onComplete.dispatch(this)
                            }, e.prototype._loadElement = function(e) {
                                this.metadata.loadElement ? this.data = this.metadata.loadElement : "image" === e && void 0 !== window.Image ? this.data = new Image : this.data = document.createElement(e), this.crossOrigin && (this.data.crossOrigin = this.crossOrigin), this.metadata.skipSource || (this.data.src = this.url), this.data.addEventListener("error", this._boundOnError, !1), this.data.addEventListener("load", this._boundComplete, !1), this.data.addEventListener("progress", this._boundOnProgress, !1), this.timeout && (this._elementTimer = setTimeout(this._boundOnTimeout, this.timeout))
                            }, e.prototype._loadSourceElement = function(e) {
                                if (this.metadata.loadElement ? this.data = this.metadata.loadElement : "audio" === e && void 0 !== window.Audio ? this.data = new Audio : this.data = document.createElement(e), null === this.data) return void this.abort("Unsupported element: " + e);
                                if (this.crossOrigin && (this.data.crossOrigin = this.crossOrigin), !this.metadata.skipSource)
                                    if (navigator.isCocoonJS) this.data.src = Array.isArray(this.url) ? this.url[0] : this.url;
                                    else if (Array.isArray(this.url))
                                    for (var t = this.metadata.mimeType, i = 0; i < this.url.length; ++i) this.data.appendChild(this._createSource(e, this.url[i], Array.isArray(t) ? t[i] : t));
                                else {
                                    var n = this.metadata.mimeType;
                                    this.data.appendChild(this._createSource(e, this.url, Array.isArray(n) ? n[0] : n))
                                }
                                this.data.addEventListener("error", this._boundOnError, !1), this.data.addEventListener("load", this._boundComplete, !1), this.data.addEventListener("progress", this._boundOnProgress, !1), this.data.addEventListener("canplaythrough", this._boundComplete, !1), this.data.load(), this.timeout && (this._elementTimer = setTimeout(this._boundOnTimeout, this.timeout))
                            }, e.prototype._loadXhr = function() {
                                "string" != typeof this.xhrType && (this.xhrType = this._determineXhrType());
                                var t = this.xhr = new XMLHttpRequest;
                                t.open("GET", this.url, !0), t.timeout = this.timeout, this.xhrType === e.XHR_RESPONSE_TYPE.JSON || this.xhrType === e.XHR_RESPONSE_TYPE.DOCUMENT ? t.responseType = e.XHR_RESPONSE_TYPE.TEXT : t.responseType = this.xhrType, t.addEventListener("error", this._boundXhrOnError, !1), t.addEventListener("timeout", this._boundXhrOnTimeout, !1), t.addEventListener("abort", this._boundXhrOnAbort, !1), t.addEventListener("progress", this._boundOnProgress, !1), t.addEventListener("load", this._boundXhrOnLoad, !1), t.send()
                            }, e.prototype._loadXdr = function() {
                                "string" != typeof this.xhrType && (this.xhrType = this._determineXhrType());
                                var e = this.xhr = new XDomainRequest;
                                e.timeout = this.timeout || 5e3, e.onerror = this._boundXhrOnError, e.ontimeout = this._boundXhrOnTimeout, e.onprogress = this._boundOnProgress, e.onload = this._boundXhrOnLoad, e.open("GET", this.url, !0), setTimeout(function() {
                                    return e.send()
                                }, 1)
                            }, e.prototype._createSource = function(e, t, i) {
                                i || (i = e + "/" + this._getExtension(t));
                                var n = document.createElement("source");
                                return n.src = t, n.type = i, n
                            }, e.prototype._onError = function(e) {
                                this.abort("Failed to load element using: " + e.target.nodeName)
                            }, e.prototype._onProgress = function(e) {
                                e && e.lengthComputable && this.onProgress.dispatch(this, e.loaded / e.total)
                            }, e.prototype._onTimeout = function() {
                                this.abort("Load timed out.")
                            }, e.prototype._xhrOnError = function() {
                                var e = this.xhr;
                                this.abort(s(e) + " Request failed. Status: " + e.status + ', text: "' + e.statusText + '"')
                            }, e.prototype._xhrOnTimeout = function() {
                                var e = this.xhr;
                                this.abort(s(e) + " Request timed out.")
                            }, e.prototype._xhrOnAbort = function() {
                                var e = this.xhr;
                                this.abort(s(e) + " Request was aborted by the user.")
                            }, e.prototype._xhrOnLoad = function() {
                                var t = this.xhr,
                                    i = "",
                                    n = void 0 === t.status ? 200 : t.status;
                                if ("" !== t.responseType && "text" !== t.responseType && void 0 !== t.responseType || (i = t.responseText), 0 === n && (i.length > 0 || t.responseType === e.XHR_RESPONSE_TYPE.BUFFER) ? n = 200 : 1223 === n && (n = 204), 2 != (n / 100 | 0)) return void this.abort("[" + t.status + "] " + t.statusText + ": " + t.responseURL);
                                if (this.xhrType === e.XHR_RESPONSE_TYPE.TEXT) this.data = i, this.type = e.TYPE.TEXT;
                                else if (this.xhrType === e.XHR_RESPONSE_TYPE.JSON) try {
                                    this.data = JSON.parse(i), this.type = e.TYPE.JSON
                                } catch (e) {
                                    return void this.abort("Error trying to parse loaded json: " + e)
                                } else if (this.xhrType === e.XHR_RESPONSE_TYPE.DOCUMENT) try {
                                    if (window.DOMParser) {
                                        var r = new DOMParser;
                                        this.data = r.parseFromString(i, "text/xml")
                                    } else {
                                        var o = document.createElement("div");
                                        o.innerHTML = i, this.data = o
                                    }
                                    this.type = e.TYPE.XML
                                } catch (e) {
                                    return void this.abort("Error trying to parse loaded xml: " + e)
                                } else this.data = t.response || i;
                                this.complete()
                            }, e.prototype._determineCrossOrigin = function(e, t) {
                                if (0 === e.indexOf("data:")) return "";
                                if (window.origin !== window.location.origin) return "anonymous";
                                t = t || window.location, d || (d = document.createElement("a")), d.href = e, e = (0, c.default)(d.href, {
                                    strictMode: !0
                                });
                                var i = !e.port && "" === t.port || e.port === t.port,
                                    n = e.protocol ? e.protocol + ":" : "";
                                return e.host === t.hostname && i && n === t.protocol ? "" : "anonymous"
                            }, e.prototype._determineXhrType = function() {
                                return e._xhrTypeMap[this.extension] || e.XHR_RESPONSE_TYPE.TEXT
                            }, e.prototype._determineLoadType = function() {
                                return e._loadTypeMap[this.extension] || e.LOAD_TYPE.XHR
                            }, e.prototype._getExtension = function() {
                                var e = this.url,
                                    t = "";
                                if (this.isDataUrl) {
                                    var i = e.indexOf("/");
                                    t = e.substring(i + 1, e.indexOf(";", i))
                                } else {
                                    var n = e.indexOf("?"),
                                        r = e.indexOf("#"),
                                        o = Math.min(n > -1 ? n : e.length, r > -1 ? r : e.length);
                                    e = e.substring(0, o), t = e.substring(e.lastIndexOf(".") + 1)
                                }
                                return t.toLowerCase()
                            }, e.prototype._getMimeFromXhrType = function(t) {
                                switch (t) {
                                    case e.XHR_RESPONSE_TYPE.BUFFER:
                                        return "application/octet-binary";
                                    case e.XHR_RESPONSE_TYPE.BLOB:
                                        return "application/blob";
                                    case e.XHR_RESPONSE_TYPE.DOCUMENT:
                                        return "application/xml";
                                    case e.XHR_RESPONSE_TYPE.JSON:
                                        return "application/json";
                                    case e.XHR_RESPONSE_TYPE.DEFAULT:
                                    case e.XHR_RESPONSE_TYPE.TEXT:
                                    default:
                                        return "text/plain"
                                }
                            }, l(e, [{
                                key: "isDataUrl",
                                get: function() {
                                    return this._hasFlag(e.STATUS_FLAGS.DATA_URL)
                                }
                            }, {
                                key: "isComplete",
                                get: function() {
                                    return this._hasFlag(e.STATUS_FLAGS.COMPLETE)
                                }
                            }, {
                                key: "isLoading",
                                get: function() {
                                    return this._hasFlag(e.STATUS_FLAGS.LOADING)
                                }
                            }]), e
                        }();
                    _.STATUS_FLAGS = {
                        NONE: 0,
                        DATA_URL: 1,
                        COMPLETE: 2,
                        LOADING: 4
                    }, _.TYPE = {
                        UNKNOWN: 0,
                        JSON: 1,
                        XML: 2,
                        IMAGE: 3,
                        AUDIO: 4,
                        VIDEO: 5,
                        TEXT: 6
                    }, _.LOAD_TYPE = {
                        XHR: 1,
                        IMAGE: 2,
                        AUDIO: 3,
                        VIDEO: 4
                    }, _.XHR_RESPONSE_TYPE = {
                        DEFAULT: "text",
                        BUFFER: "arraybuffer",
                        BLOB: "blob",
                        DOCUMENT: "document",
                        JSON: "json",
                        TEXT: "text"
                    }, _._loadTypeMap = {
                        gif: _.LOAD_TYPE.IMAGE,
                        png: _.LOAD_TYPE.IMAGE,
                        bmp: _.LOAD_TYPE.IMAGE,
                        jpg: _.LOAD_TYPE.IMAGE,
                        jpeg: _.LOAD_TYPE.IMAGE,
                        tif: _.LOAD_TYPE.IMAGE,
                        tiff: _.LOAD_TYPE.IMAGE,
                        webp: _.LOAD_TYPE.IMAGE,
                        tga: _.LOAD_TYPE.IMAGE,
                        svg: _.LOAD_TYPE.IMAGE,
                        "svg+xml": _.LOAD_TYPE.IMAGE,
                        mp3: _.LOAD_TYPE.AUDIO,
                        ogg: _.LOAD_TYPE.AUDIO,
                        wav: _.LOAD_TYPE.AUDIO,
                        mp4: _.LOAD_TYPE.VIDEO,
                        webm: _.LOAD_TYPE.VIDEO
                    }, _._xhrTypeMap = {
                        xhtml: _.XHR_RESPONSE_TYPE.DOCUMENT,
                        html: _.XHR_RESPONSE_TYPE.DOCUMENT,
                        htm: _.XHR_RESPONSE_TYPE.DOCUMENT,
                        xml: _.XHR_RESPONSE_TYPE.DOCUMENT,
                        tmx: _.XHR_RESPONSE_TYPE.DOCUMENT,
                        svg: _.XHR_RESPONSE_TYPE.DOCUMENT,
                        tsx: _.XHR_RESPONSE_TYPE.DOCUMENT,
                        gif: _.XHR_RESPONSE_TYPE.BLOB,
                        png: _.XHR_RESPONSE_TYPE.BLOB,
                        bmp: _.XHR_RESPONSE_TYPE.BLOB,
                        jpg: _.XHR_RESPONSE_TYPE.BLOB,
                        jpeg: _.XHR_RESPONSE_TYPE.BLOB,
                        tif: _.XHR_RESPONSE_TYPE.BLOB,
                        tiff: _.XHR_RESPONSE_TYPE.BLOB,
                        webp: _.XHR_RESPONSE_TYPE.BLOB,
                        tga: _.XHR_RESPONSE_TYPE.BLOB,
                        json: _.XHR_RESPONSE_TYPE.JSON,
                        text: _.XHR_RESPONSE_TYPE.TEXT,
                        txt: _.XHR_RESPONSE_TYPE.TEXT,
                        ttf: _.XHR_RESPONSE_TYPE.BUFFER,
                        otf: _.XHR_RESPONSE_TYPE.BUFFER
                    }, _.EMPTY_GIF = "data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==", void 0 !== t && (t.exports.default = _)
                }, {
                    "mini-signals": 5,
                    "parse-uri": 7
                }],
                34: [function(e, t, i) {
                    "use strict";

                    function n() {}

                    function r(e, t, i, n) {
                        var r = 0,
                            o = e.length;
                        ! function a(s) {
                            if (s || r === o) return void(i && i(s));
                            n ? setTimeout(function() {
                                t(e[r++], a)
                            }, 1) : t(e[r++], a)
                        }()
                    }

                    function o(e) {
                        return function() {
                            if (null === e) throw new Error("Callback was already called.");
                            var t = e;
                            e = null, t.apply(this, arguments)
                        }
                    }

                    function a(e, t) {
                        function i(e, t, i) {
                            if (null != i && "function" != typeof i) throw new Error("task callback must be a function");
                            if (s.started = !0, null == e && s.idle()) return void setTimeout(function() {
                                return s.drain()
                            }, 1);
                            var r = {
                                data: e,
                                callback: "function" == typeof i ? i : n
                            };
                            t ? s._tasks.unshift(r) : s._tasks.push(r), setTimeout(function() {
                                return s.process()
                            }, 1)
                        }

                        function r(e) {
                            return function() {
                                a -= 1, e.callback.apply(e, arguments), null != arguments[0] && s.error(arguments[0], e.data), a <= s.concurrency - s.buffer && s.unsaturated(), s.idle() && s.drain(), s.process()
                            }
                        }
                        if (null == t) t = 1;
                        else if (0 === t) throw new Error("Concurrency must not be zero");
                        var a = 0,
                            s = {
                                _tasks: [],
                                concurrency: t,
                                saturated: n,
                                unsaturated: n,
                                buffer: t / 4,
                                empty: n,
                                drain: n,
                                error: n,
                                started: !1,
                                paused: !1,
                                push: function(e, t) {
                                    i(e, !1, t)
                                },
                                kill: function() {
                                    a = 0, s.drain = n, s.started = !1, s._tasks = []
                                },
                                unshift: function(e, t) {
                                    i(e, !0, t)
                                },
                                process: function() {
                                    for (; !s.paused && a < s.concurrency && s._tasks.length;) {
                                        var t = s._tasks.shift();
                                        0 === s._tasks.length && s.empty(), a += 1, a === s.concurrency && s.saturated(), e(t.data, o(r(t)))
                                    }
                                },
                                length: function() {
                                    return s._tasks.length
                                },
                                running: function() {
                                    return a
                                },
                                idle: function() {
                                    return s._tasks.length + a === 0
                                },
                                pause: function() {
                                    !0 !== s.paused && (s.paused = !0)
                                },
                                resume: function() {
                                    if (!1 !== s.paused) {
                                        s.paused = !1;
                                        for (var e = 1; e <= s.concurrency; e++) s.process()
                                    }
                                }
                            };
                        return s
                    }
                    i.__esModule = !0, i.eachSeries = r, i.queue = a
                }, {}],
                35: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        for (var t = "", i = 0; i < e.length;) {
                            for (var n = [0, 0, 0], o = [0, 0, 0, 0], a = 0; a < n.length; ++a) i < e.length ? n[a] = 255 & e.charCodeAt(i++) : n[a] = 0;
                            switch (o[0] = n[0] >> 2, o[1] = (3 & n[0]) << 4 | n[1] >> 4, o[2] = (15 & n[1]) << 2 | n[2] >> 6, o[3] = 63 & n[2], i - (e.length - 1)) {
                                case 2:
                                    o[3] = 64, o[2] = 64;
                                    break;
                                case 1:
                                    o[3] = 64
                            }
                            for (var s = 0; s < o.length; ++s) t += r.charAt(o[s])
                        }
                        return t
                    }
                    i.__esModule = !0, i.encodeBinary = n;
                    var r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
                    void 0 !== t && (t.exports.default = n)
                }, {}],
                36: [function(e, t, i) {
                    "use strict";
                    var n = e("./Loader").Loader,
                        r = e("./Resource").Resource,
                        o = e("./async"),
                        a = e("./b64");
                    n.Resource = r, n.async = o, n.encodeBinary = a, n.base64 = a, t.exports = n, t.exports.Loader = n, t.exports.default = n
                }, {
                    "./Loader": 32,
                    "./Resource": 33,
                    "./async": 34,
                    "./b64": 35
                }],
                37: [function(e, t, i) {
                    "use strict";

                    function n() {
                        return function(e, t) {
                            if (!e.data) return void t();
                            if (e.xhr && e.xhrType === r.Resource.XHR_RESPONSE_TYPE.BLOB)
                                if (window.Blob && "string" != typeof e.data) {
                                    if (0 === e.data.type.indexOf("image")) {
                                        var i = a.createObjectURL(e.data);
                                        return e.blob = e.data, e.data = new Image, e.data.src = i, e.type = r.Resource.TYPE.IMAGE, void(e.data.onload = function() {
                                            a.revokeObjectURL(i), e.data.onload = null, t()
                                        })
                                    }
                                } else {
                                    var n = e.xhr.getResponseHeader("content-type");
                                    if (n && 0 === n.indexOf("image")) return e.data = new Image, e.data.src = "data:" + n + ";base64," + (0, o.encodeBinary)(e.xhr.responseText), e.type = r.Resource.TYPE.IMAGE, void(e.data.onload = function() {
                                        e.data.onload = null, t()
                                    })
                                }
                            t()
                        }
                    }
                    i.__esModule = !0, i.blobMiddlewareFactory = n;
                    var r = e("../../Resource"),
                        o = e("../../b64"),
                        a = window.URL || window.webkitURL
                }, {
                    "../../Resource": 33,
                    "../../b64": 35
                }],
                38: [function(e, t, i) {
                    "use strict";

                    function n() {
                        this.protocol = null, this.slashes = null, this.auth = null, this.host = null, this.port = null, this.hostname = null, this.hash = null, this.search = null, this.query = null, this.pathname = null, this.path = null, this.href = null
                    }

                    function r(e, t, i) {
                        if (e && u.isObject(e) && e instanceof n) return e;
                        var r = new n;
                        return r.parse(e, t, i), r
                    }

                    function o(e) {
                        return u.isString(e) && (e = r(e)), e instanceof n ? e.format() : n.prototype.format.call(e)
                    }

                    function a(e, t) {
                        return r(e, !1, !0).resolve(t)
                    }

                    function s(e, t) {
                        return e ? r(e, !1, !0).resolveObject(t) : t
                    }
                    var l = e("punycode"),
                        u = e("./util");
                    i.parse = r, i.resolve = a, i.resolveObject = s, i.format = o, i.Url = n;
                    var c = /^([a-z0-9.+-]+:)/i,
                        h = /:[0-9]*$/,
                        p = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,
                        f = ["<", ">", '"', "`", " ", "\r", "\n", "\t"],
                        d = ["{", "}", "|", "\\", "^", "`"].concat(f),
                        _ = ["'"].concat(d),
                        m = ["%", "/", "?", ";", "#"].concat(_),
                        g = ["/", "?", "#"],
                        v = /^[+a-z0-9A-Z_-]{0,63}$/,
                        y = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,
                        b = {
                            javascript: !0,
                            "javascript:": !0
                        },
                        x = {
                            javascript: !0,
                            "javascript:": !0
                        },
                        S = {
                            http: !0,
                            https: !0,
                            ftp: !0,
                            gopher: !0,
                            file: !0,
                            "http:": !0,
                            "https:": !0,
                            "ftp:": !0,
                            "gopher:": !0,
                            "file:": !0
                        },
                        T = e("querystring");
                    n.prototype.parse = function(e, t, i) {
                        if (!u.isString(e)) throw new TypeError("Parameter 'url' must be a string, not " + typeof e);
                        var n = e.indexOf("?"),
                            r = -1 !== n && n < e.indexOf("#") ? "?" : "#",
                            o = e.split(r),
                            a = /\\/g;
                        o[0] = o[0].replace(a, "/"), e = o.join(r);
                        var s = e;
                        if (s = s.trim(), !i && 1 === e.split("#").length) {
                            var h = p.exec(s);
                            if (h) return this.path = s, this.href = s, this.pathname = h[1], h[2] ? (this.search = h[2], this.query = t ? T.parse(this.search.substr(1)) : this.search.substr(1)) : t && (this.search = "", this.query = {}), this
                        }
                        var f = c.exec(s);
                        if (f) {
                            f = f[0];
                            var d = f.toLowerCase();
                            this.protocol = d, s = s.substr(f.length)
                        }
                        if (i || f || s.match(/^\/\/[^@\/]+@[^@\/]+/)) {
                            var w = "//" === s.substr(0, 2);
                            !w || f && x[f] || (s = s.substr(2), this.slashes = !0)
                        }
                        if (!x[f] && (w || f && !S[f])) {
                            for (var E = -1, P = 0; P < g.length; P++) {
                                var R = s.indexOf(g[P]); - 1 !== R && (-1 === E || R < E) && (E = R)
                            }
                            var O, A;
                            A = -1 === E ? s.lastIndexOf("@") : s.lastIndexOf("@", E), -1 !== A && (O = s.slice(0, A), s = s.slice(A + 1), this.auth = decodeURIComponent(O)), E = -1;
                            for (var P = 0; P < m.length; P++) {
                                var R = s.indexOf(m[P]); - 1 !== R && (-1 === E || R < E) && (E = R)
                            } - 1 === E && (E = s.length), this.host = s.slice(0, E), s = s.slice(E), this.parseHost(), this.hostname = this.hostname || "";
                            var I = "[" === this.hostname[0] && "]" === this.hostname[this.hostname.length - 1];
                            if (!I)
                                for (var C = this.hostname.split(/\./), P = 0, M = C.length; P < M; P++) {
                                    var D = C[P];
                                    if (D && !D.match(v)) {
                                        for (var N = "", L = 0, k = D.length; L < k; L++) D.charCodeAt(L) > 127 ? N += "x" : N += D[L];
                                        if (!N.match(v)) {
                                            var F = C.slice(0, P),
                                                B = C.slice(P + 1),
                                                G = D.match(y);
                                            G && (F.push(G[1]), B.unshift(G[2])), B.length && (s = "/" + B.join(".") + s), this.hostname = F.join(".");
                                            break
                                        }
                                    }
                                }
                            this.hostname.length > 255 ? this.hostname = "" : this.hostname = this.hostname.toLowerCase(), I || (this.hostname = l.toASCII(this.hostname));
                            var U = this.port ? ":" + this.port : "",
                                j = this.hostname || "";
                            this.host = j + U, this.href += this.host, I && (this.hostname = this.hostname.substr(1, this.hostname.length - 2), "/" !== s[0] && (s = "/" + s))
                        }
                        if (!b[d])
                            for (var P = 0, M = _.length; P < M; P++) {
                                var W = _[P];
                                if (-1 !== s.indexOf(W)) {
                                    var H = encodeURIComponent(W);
                                    H === W && (H = escape(W)), s = s.split(W).join(H)
                                }
                            }
                        var X = s.indexOf("#"); - 1 !== X && (this.hash = s.substr(X), s = s.slice(0, X));
                        var z = s.indexOf("?");
                        if (-1 !== z ? (this.search = s.substr(z), this.query = s.substr(z + 1), t && (this.query = T.parse(this.query)), s = s.slice(0, z)) : t && (this.search = "", this.query = {}), s && (this.pathname = s), S[d] && this.hostname && !this.pathname && (this.pathname = "/"), this.pathname || this.search) {
                            var U = this.pathname || "",
                                Y = this.search || "";
                            this.path = U + Y
                        }
                        return this.href = this.format(), this
                    }, n.prototype.format = function() {
                        var e = this.auth || "";
                        e && (e = encodeURIComponent(e), e = e.replace(/%3A/i, ":"), e += "@");
                        var t = this.protocol || "",
                            i = this.pathname || "",
                            n = this.hash || "",
                            r = !1,
                            o = "";
                        this.host ? r = e + this.host : this.hostname && (r = e + (-1 === this.hostname.indexOf(":") ? this.hostname : "[" + this.hostname + "]"), this.port && (r += ":" + this.port)), this.query && u.isObject(this.query) && Object.keys(this.query).length && (o = T.stringify(this.query));
                        var a = this.search || o && "?" + o || "";
                        return t && ":" !== t.substr(-1) && (t += ":"), this.slashes || (!t || S[t]) && !1 !== r ? (r = "//" + (r || ""), i && "/" !== i.charAt(0) && (i = "/" + i)) : r || (r = ""), n && "#" !== n.charAt(0) && (n = "#" + n), a && "?" !== a.charAt(0) && (a = "?" + a), i = i.replace(/[?#]/g, function(e) {
                            return encodeURIComponent(e)
                        }), a = a.replace("#", "%23"), t + r + i + a + n
                    }, n.prototype.resolve = function(e) {
                        return this.resolveObject(r(e, !1, !0)).format()
                    }, n.prototype.resolveObject = function(e) {
                        if (u.isString(e)) {
                            var t = new n;
                            t.parse(e, !1, !0), e = t
                        }
                        for (var i = new n, r = Object.keys(this), o = 0; o < r.length; o++) {
                            var a = r[o];
                            i[a] = this[a]
                        }
                        if (i.hash = e.hash, "" === e.href) return i.href = i.format(), i;
                        if (e.slashes && !e.protocol) {
                            for (var s = Object.keys(e), l = 0; l < s.length; l++) {
                                var c = s[l];
                                "protocol" !== c && (i[c] = e[c])
                            }
                            return S[i.protocol] && i.hostname && !i.pathname && (i.path = i.pathname = "/"), i.href = i.format(), i
                        }
                        if (e.protocol && e.protocol !== i.protocol) {
                            if (!S[e.protocol]) {
                                for (var h = Object.keys(e), p = 0; p < h.length; p++) {
                                    var f = h[p];
                                    i[f] = e[f]
                                }
                                return i.href = i.format(), i
                            }
                            if (i.protocol = e.protocol, e.host || x[e.protocol]) i.pathname = e.pathname;
                            else {
                                for (var d = (e.pathname || "").split("/"); d.length && !(e.host = d.shift()););
                                e.host || (e.host = ""), e.hostname || (e.hostname = ""), "" !== d[0] && d.unshift(""), d.length < 2 && d.unshift(""), i.pathname = d.join("/")
                            }
                            if (i.search = e.search, i.query = e.query, i.host = e.host || "", i.auth = e.auth, i.hostname = e.hostname || e.host, i.port = e.port, i.pathname || i.search) {
                                var _ = i.pathname || "",
                                    m = i.search || "";
                                i.path = _ + m
                            }
                            return i.slashes = i.slashes || e.slashes, i.href = i.format(), i
                        }
                        var g = i.pathname && "/" === i.pathname.charAt(0),
                            v = e.host || e.pathname && "/" === e.pathname.charAt(0),
                            y = v || g || i.host && e.pathname,
                            b = y,
                            T = i.pathname && i.pathname.split("/") || [],
                            d = e.pathname && e.pathname.split("/") || [],
                            w = i.protocol && !S[i.protocol];
                        if (w && (i.hostname = "", i.port = null, i.host && ("" === T[0] ? T[0] = i.host : T.unshift(i.host)), i.host = "", e.protocol && (e.hostname = null, e.port = null, e.host && ("" === d[0] ? d[0] = e.host : d.unshift(e.host)), e.host = null), y = y && ("" === d[0] || "" === T[0])), v) i.host = e.host || "" === e.host ? e.host : i.host, i.hostname = e.hostname || "" === e.hostname ? e.hostname : i.hostname, i.search = e.search, i.query = e.query, T = d;
                        else if (d.length) T || (T = []), T.pop(), T = T.concat(d), i.search = e.search, i.query = e.query;
                        else if (!u.isNullOrUndefined(e.search)) {
                            if (w) {
                                i.hostname = i.host = T.shift();
                                var E = !!(i.host && i.host.indexOf("@") > 0) && i.host.split("@");
                                E && (i.auth = E.shift(), i.host = i.hostname = E.shift())
                            }
                            return i.search = e.search, i.query = e.query, u.isNull(i.pathname) && u.isNull(i.search) || (i.path = (i.pathname ? i.pathname : "") + (i.search ? i.search : "")), i.href = i.format(), i
                        }
                        if (!T.length) return i.pathname = null, i.search ? i.path = "/" + i.search : i.path = null, i.href = i.format(), i;
                        for (var P = T.slice(-1)[0], R = (i.host || e.host || T.length > 1) && ("." === P || ".." === P) || "" === P, O = 0, A = T.length; A >= 0; A--) P = T[A], "." === P ? T.splice(A, 1) : ".." === P ? (T.splice(A, 1), O++) : O && (T.splice(A, 1), O--);
                        if (!y && !b)
                            for (; O--; O) T.unshift("..");
                        !y || "" === T[0] || T[0] && "/" === T[0].charAt(0) || T.unshift(""), R && "/" !== T.join("/").substr(-1) && T.push("");
                        var I = "" === T[0] || T[0] && "/" === T[0].charAt(0);
                        if (w) {
                            i.hostname = i.host = I ? "" : T.length ? T.shift() : "";
                            var E = !!(i.host && i.host.indexOf("@") > 0) && i.host.split("@");
                            E && (i.auth = E.shift(), i.host = i.hostname = E.shift())
                        }
                        return y = y || i.host && T.length, y && !I && T.unshift(""), T.length ? i.pathname = T.join("/") : (i.pathname = null, i.path = null), u.isNull(i.pathname) && u.isNull(i.search) || (i.path = (i.pathname ? i.pathname : "") + (i.search ? i.search : "")), i.auth = e.auth || i.auth, i.slashes = i.slashes || e.slashes, i.href = i.format(), i
                    }, n.prototype.parseHost = function() {
                        var e = this.host,
                            t = h.exec(e);
                        t && (t = t[0], ":" !== t && (this.port = t.substr(1)), e = e.substr(0, e.length - t.length)), e && (this.hostname = e)
                    }
                }, {
                    "./util": 39,
                    punycode: 27,
                    querystring: 30
                }],
                39: [function(e, t, i) {
                    "use strict";
                    t.exports = {
                        isString: function(e) {
                            return "string" == typeof e
                        },
                        isObject: function(e) {
                            return "object" == typeof e && null !== e
                        },
                        isNull: function(e) {
                            return null === e
                        },
                        isNullOrUndefined: function(e) {
                            return null == e
                        }
                    }
                }, {}],
                40: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var o = e("../core"),
                        a = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(o),
                        s = e("ismobilejs"),
                        l = n(s),
                        u = e("./accessibleTarget"),
                        c = n(u);
                    a.utils.mixins.delayMixin(a.DisplayObject.prototype, c.default);
                    var h = 100,
                        p = 0,
                        f = 0,
                        d = 2,
                        _ = function() {
                            function e(t) {
                                r(this, e), !l.default.tablet && !l.default.phone || navigator.isCocoonJS || this.createTouchHook();
                                var i = document.createElement("div");
                                i.style.width = h + "px", i.style.height = h + "px", i.style.position = "absolute", i.style.top = p + "px", i.style.left = f + "px", i.style.zIndex = d, this.div = i, this.pool = [], this.renderId = 0, this.debug = !1, this.renderer = t, this.children = [], this._onKeyDown = this._onKeyDown.bind(this), this._onMouseMove = this._onMouseMove.bind(this), this.isActive = !1, this.isMobileAccessabillity = !1, window.addEventListener("keydown", this._onKeyDown, !1)
                            }
                            return e.prototype.createTouchHook = function() {
                                var e = this,
                                    t = document.createElement("button");
                                t.style.width = "1px", t.style.height = "1px", t.style.position = "absolute", t.style.top = "-1000px", t.style.left = "-1000px", t.style.zIndex = 2, t.style.backgroundColor = "#FF0000", t.title = "HOOK DIV", t.addEventListener("focus", function() {
                                    e.isMobileAccessabillity = !0, e.activate(), document.body.removeChild(t)
                                }), document.body.appendChild(t)
                            }, e.prototype.activate = function() {
                                this.isActive || (this.isActive = !0, window.document.addEventListener("mousemove", this._onMouseMove, !0), window.removeEventListener("keydown", this._onKeyDown, !1), this.renderer.on("postrender", this.update, this), this.renderer.view.parentNode && this.renderer.view.parentNode.appendChild(this.div))
                            }, e.prototype.deactivate = function() {
                                this.isActive && !this.isMobileAccessabillity && (this.isActive = !1, window.document.removeEventListener("mousemove", this._onMouseMove, !0), window.addEventListener("keydown", this._onKeyDown, !1), this.renderer.off("postrender", this.update), this.div.parentNode && this.div.parentNode.removeChild(this.div))
                            }, e.prototype.updateAccessibleObjects = function(e) {
                                if (e.visible) {
                                    e.accessible && e.interactive && (e._accessibleActive || this.addChild(e), e.renderId = this.renderId);
                                    for (var t = e.children, i = 0; i < t.length; i++) this.updateAccessibleObjects(t[i])
                                }
                            }, e.prototype.update = function() {
                                if (this.renderer.renderingToScreen) {
                                    this.updateAccessibleObjects(this.renderer._lastObjectRendered);
                                    var e = this.renderer.view.getBoundingClientRect(),
                                        t = e.width / this.renderer.width,
                                        i = e.height / this.renderer.height,
                                        n = this.div;
                                    n.style.left = e.left + "px", n.style.top = e.top + "px", n.style.width = this.renderer.width + "px", n.style.height = this.renderer.height + "px";
                                    for (var r = 0; r < this.children.length; r++) {
                                        var o = this.children[r];
                                        if (o.renderId !== this.renderId) o._accessibleActive = !1, a.utils.removeItems(this.children, r, 1), this.div.removeChild(o._accessibleDiv), this.pool.push(o._accessibleDiv), o._accessibleDiv = null, r--, 0 === this.children.length && this.deactivate();
                                        else {
                                            n = o._accessibleDiv;
                                            var s = o.hitArea,
                                                l = o.worldTransform;
                                            o.hitArea ? (n.style.left = (l.tx + s.x * l.a) * t + "px", n.style.top = (l.ty + s.y * l.d) * i + "px", n.style.width = s.width * l.a * t + "px", n.style.height = s.height * l.d * i + "px") : (s = o.getBounds(), this.capHitArea(s), n.style.left = s.x * t + "px", n.style.top = s.y * i + "px", n.style.width = s.width * t + "px", n.style.height = s.height * i + "px", n.title !== o.accessibleTitle && null !== o.accessibleTitle && (n.title = o.accessibleTitle), n.getAttribute("aria-label") !== o.accessibleHint && null !== o.accessibleHint && n.setAttribute("aria-label", o.accessibleHint))
                                        }
                                    }
                                    this.renderId++
                                }
                            }, e.prototype.capHitArea = function(e) {
                                e.x < 0 && (e.width += e.x, e.x = 0), e.y < 0 && (e.height += e.y, e.y = 0), e.x + e.width > this.renderer.width && (e.width = this.renderer.width - e.x), e.y + e.height > this.renderer.height && (e.height = this.renderer.height - e.y)
                            }, e.prototype.addChild = function(e) {
                                var t = this.pool.pop();
                                t || (t = document.createElement("button"), t.style.width = h + "px", t.style.height = h + "px",
                                    t.style.backgroundColor = this.debug ? "rgba(255,0,0,0.5)" : "transparent", t.style.position = "absolute", t.style.zIndex = d, t.style.borderStyle = "none", navigator.userAgent.toLowerCase().indexOf("chrome") > -1 ? t.setAttribute("aria-live", "off") : t.setAttribute("aria-live", "polite"), navigator.userAgent.match(/rv:.*Gecko\//) ? t.setAttribute("aria-relevant", "additions") : t.setAttribute("aria-relevant", "text"), t.addEventListener("click", this._onClick.bind(this)), t.addEventListener("focus", this._onFocus.bind(this)), t.addEventListener("focusout", this._onFocusOut.bind(this))), e.accessibleTitle && null !== e.accessibleTitle ? t.title = e.accessibleTitle : e.accessibleHint && null !== e.accessibleHint || (t.title = "displayObject " + e.tabIndex), e.accessibleHint && null !== e.accessibleHint && t.setAttribute("aria-label", e.accessibleHint), e._accessibleActive = !0, e._accessibleDiv = t, t.displayObject = e, this.children.push(e), this.div.appendChild(e._accessibleDiv), e._accessibleDiv.tabIndex = e.tabIndex
                            }, e.prototype._onClick = function(e) {
                                var t = this.renderer.plugins.interaction;
                                t.dispatchEvent(e.target.displayObject, "click", t.eventData)
                            }, e.prototype._onFocus = function(e) {
                                e.target.getAttribute("aria-live", "off") || e.target.setAttribute("aria-live", "assertive");
                                var t = this.renderer.plugins.interaction;
                                t.dispatchEvent(e.target.displayObject, "mouseover", t.eventData)
                            }, e.prototype._onFocusOut = function(e) {
                                e.target.getAttribute("aria-live", "off") || e.target.setAttribute("aria-live", "polite");
                                var t = this.renderer.plugins.interaction;
                                t.dispatchEvent(e.target.displayObject, "mouseout", t.eventData)
                            }, e.prototype._onKeyDown = function(e) {
                                9 === e.keyCode && this.activate()
                            }, e.prototype._onMouseMove = function(e) {
                                0 === e.movementX && 0 === e.movementY || this.deactivate()
                            }, e.prototype.destroy = function() {
                                this.div = null;
                                for (var e = 0; e < this.children.length; e++) this.children[e].div = null;
                                window.document.removeEventListener("mousemove", this._onMouseMove, !0), window.removeEventListener("keydown", this._onKeyDown), this.pool = null, this.children = null, this.renderer = null
                            }, e
                        }();
                    i.default = _, a.WebGLRenderer.registerPlugin("accessibility", _), a.CanvasRenderer.registerPlugin("accessibility", _)
                }, {
                    "../core": 65,
                    "./accessibleTarget": 41,
                    ismobilejs: 4
                }],
                41: [function(e, t, i) {
                    "use strict";
                    i.__esModule = !0, i.default = {
                        accessible: !1,
                        accessibleTitle: null,
                        accessibleHint: null,
                        tabIndex: 0,
                        _accessibleActive: !1,
                        _accessibleDiv: !1
                    }
                }, {}],
                42: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }
                    i.__esModule = !0;
                    var r = e("./accessibleTarget");
                    Object.defineProperty(i, "accessibleTarget", {
                        enumerable: !0,
                        get: function() {
                            return n(r).default
                        }
                    });
                    var o = e("./AccessibilityManager");
                    Object.defineProperty(i, "AccessibilityManager", {
                        enumerable: !0,
                        get: function() {
                            return n(o).default
                        }
                    })
                }, {
                    "./AccessibilityManager": 40,
                    "./accessibleTarget": 41
                }],
                43: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var o = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        a = e("./autoDetectRenderer"),
                        s = e("./display/Container"),
                        l = n(s),
                        u = e("./ticker"),
                        c = e("./settings"),
                        h = n(c),
                        p = e("./const"),
                        f = function() {
                            function e(t, i, n, o, s) {
                                r(this, e), "number" == typeof t && (t = Object.assign({
                                    width: t,
                                    height: i || h.default.RENDER_OPTIONS.height,
                                    forceCanvas: !!o,
                                    sharedTicker: !!s
                                }, n)), this._options = t = Object.assign({
                                    autoStart: !0,
                                    sharedTicker: !1,
                                    forceCanvas: !1,
                                    sharedLoader: !1
                                }, t), this.renderer = (0, a.autoDetectRenderer)(t), this.stage = new l.default, this._ticker = null, this.ticker = t.sharedTicker ? u.shared : new u.Ticker, t.autoStart && this.start()
                            }
                            return e.prototype.render = function() {
                                this.renderer.render(this.stage)
                            }, e.prototype.stop = function() {
                                this._ticker.stop()
                            }, e.prototype.start = function() {
                                this._ticker.start()
                            }, e.prototype.destroy = function(e, t) {
                                if (this._ticker) {
                                    var i = this._ticker;
                                    this.ticker = null, i.destroy()
                                }
                                this.stage.destroy(t), this.stage = null, this.renderer.destroy(e), this.renderer = null, this._options = null
                            }, o(e, [{
                                key: "ticker",
                                set: function(e) {
                                    this._ticker && this._ticker.remove(this.render, this), this._ticker = e, e && e.add(this.render, this, p.UPDATE_PRIORITY.LOW)
                                },
                                get: function() {
                                    return this._ticker
                                }
                            }, {
                                key: "view",
                                get: function() {
                                    return this.renderer.view
                                }
                            }, {
                                key: "screen",
                                get: function() {
                                    return this.renderer.screen
                                }
                            }]), e
                        }();
                    i.default = f
                }, {
                    "./autoDetectRenderer": 45,
                    "./const": 46,
                    "./display/Container": 48,
                    "./settings": 101,
                    "./ticker": 121
                }],
                44: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function o(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }

                    function a(e, t) {
                        if (e instanceof Array) {
                            if ("precision" !== e[0].substring(0, 9)) {
                                var i = e.slice(0);
                                return i.unshift("precision " + t + " float;"), i
                            }
                        } else if ("precision" !== e.trim().substring(0, 9)) return "precision " + t + " float;\n" + e;
                        return e
                    }
                    i.__esModule = !0;
                    var s = e("pixi-gl-core"),
                        l = e("./settings"),
                        u = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(l),
                        c = function(e) {
                            function t(i, o, s, l, c) {
                                return n(this, t), r(this, e.call(this, i, a(o, c || u.default.PRECISION_VERTEX), a(s, c || u.default.PRECISION_FRAGMENT), void 0, l))
                            }
                            return o(t, e), t
                        }(s.GLShader);
                    i.default = c
                }, {
                    "./settings": 101,
                    "pixi-gl-core": 15
                }],
                45: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t, i, n) {
                        var r = e && e.forceCanvas;
                        return void 0 !== n && (r = n), !r && a.isWebGLSupported() ? new c.default(e, t, i) : new l.default(e, t, i)
                    }
                    i.__esModule = !0, i.autoDetectRenderer = r;
                    var o = e("./utils"),
                        a = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(o),
                        s = e("./renderers/canvas/CanvasRenderer"),
                        l = n(s),
                        u = e("./renderers/webgl/WebGLRenderer"),
                        c = n(u)
                }, {
                    "./renderers/canvas/CanvasRenderer": 77,
                    "./renderers/webgl/WebGLRenderer": 84,
                    "./utils": 125
                }],
                46: [function(e, t, i) {
                    "use strict";
                    i.__esModule = !0, i.VERSION = "4.8.8", i.PI_2 = 2 * Math.PI, i.RAD_TO_DEG = 180 / Math.PI, i.DEG_TO_RAD = Math.PI / 180, i.RENDERER_TYPE = {
                        UNKNOWN: 0,
                        WEBGL: 1,
                        CANVAS: 2
                    }, i.BLEND_MODES = {
                        NORMAL: 0,
                        ADD: 1,
                        MULTIPLY: 2,
                        SCREEN: 3,
                        OVERLAY: 4,
                        DARKEN: 5,
                        LIGHTEN: 6,
                        COLOR_DODGE: 7,
                        COLOR_BURN: 8,
                        HARD_LIGHT: 9,
                        SOFT_LIGHT: 10,
                        DIFFERENCE: 11,
                        EXCLUSION: 12,
                        HUE: 13,
                        SATURATION: 14,
                        COLOR: 15,
                        LUMINOSITY: 16,
                        NORMAL_NPM: 17,
                        ADD_NPM: 18,
                        SCREEN_NPM: 19
                    }, i.DRAW_MODES = {
                        POINTS: 0,
                        LINES: 1,
                        LINE_LOOP: 2,
                        LINE_STRIP: 3,
                        TRIANGLES: 4,
                        TRIANGLE_STRIP: 5,
                        TRIANGLE_FAN: 6
                    }, i.SCALE_MODES = {
                        LINEAR: 0,
                        NEAREST: 1
                    }, i.WRAP_MODES = {
                        CLAMP: 0,
                        REPEAT: 1,
                        MIRRORED_REPEAT: 2
                    }, i.GC_MODES = {
                        AUTO: 0,
                        MANUAL: 1
                    }, i.URL_FILE_EXTENSION = /\.(\w{3,4})(?:$|\?|#)/i, i.DATA_URI = /^\s*data:(?:([\w-]+)\/([\w+.-]+))?(?:;charset=([\w-]+))?(?:;(base64))?,(.*)/i, i.SVG_SIZE = /<svg[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*>/i, i.SHAPES = {
                        POLY: 0,
                        RECT: 1,
                        CIRC: 2,
                        ELIP: 3,
                        RREC: 4
                    }, i.PRECISION = {
                        LOW: "lowp",
                        MEDIUM: "mediump",
                        HIGH: "highp"
                    }, i.TRANSFORM_MODE = {
                        STATIC: 0,
                        DYNAMIC: 1
                    }, i.TEXT_GRADIENT = {
                        LINEAR_VERTICAL: 0,
                        LINEAR_HORIZONTAL: 1
                    }, i.UPDATE_PRIORITY = {
                        INTERACTION: 50,
                        HIGH: 25,
                        NORMAL: 0,
                        LOW: -25,
                        UTILITY: -50
                    }
                }, {}],
                47: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = e("../math"),
                        o = function() {
                            function e() {
                                n(this, e), this.minX = 1 / 0, this.minY = 1 / 0, this.maxX = -1 / 0, this.maxY = -1 / 0, this.rect = null
                            }
                            return e.prototype.isEmpty = function() {
                                return this.minX > this.maxX || this.minY > this.maxY
                            }, e.prototype.clear = function() {
                                this.updateID++, this.minX = 1 / 0, this.minY = 1 / 0, this.maxX = -1 / 0, this.maxY = -1 / 0
                            }, e.prototype.getRectangle = function(e) {
                                return this.minX > this.maxX || this.minY > this.maxY ? r.Rectangle.EMPTY : (e = e || new r.Rectangle(0, 0, 1, 1), e.x = this.minX, e.y = this.minY, e.width = this.maxX - this.minX, e.height = this.maxY - this.minY, e)
                            }, e.prototype.addPoint = function(e) {
                                this.minX = Math.min(this.minX, e.x), this.maxX = Math.max(this.maxX, e.x), this.minY = Math.min(this.minY, e.y), this.maxY = Math.max(this.maxY, e.y)
                            }, e.prototype.addQuad = function(e) {
                                var t = this.minX,
                                    i = this.minY,
                                    n = this.maxX,
                                    r = this.maxY,
                                    o = e[0],
                                    a = e[1];
                                t = o < t ? o : t, i = a < i ? a : i, n = o > n ? o : n, r = a > r ? a : r, o = e[2], a = e[3], t = o < t ? o : t, i = a < i ? a : i, n = o > n ? o : n, r = a > r ? a : r, o = e[4], a = e[5], t = o < t ? o : t, i = a < i ? a : i, n = o > n ? o : n, r = a > r ? a : r, o = e[6], a = e[7], t = o < t ? o : t, i = a < i ? a : i, n = o > n ? o : n, r = a > r ? a : r, this.minX = t, this.minY = i, this.maxX = n, this.maxY = r
                            }, e.prototype.addFrame = function(e, t, i, n, r) {
                                var o = e.worldTransform,
                                    a = o.a,
                                    s = o.b,
                                    l = o.c,
                                    u = o.d,
                                    c = o.tx,
                                    h = o.ty,
                                    p = this.minX,
                                    f = this.minY,
                                    d = this.maxX,
                                    _ = this.maxY,
                                    m = a * t + l * i + c,
                                    g = s * t + u * i + h;
                                p = m < p ? m : p, f = g < f ? g : f, d = m > d ? m : d, _ = g > _ ? g : _, m = a * n + l * i + c, g = s * n + u * i + h, p = m < p ? m : p, f = g < f ? g : f, d = m > d ? m : d, _ = g > _ ? g : _, m = a * t + l * r + c, g = s * t + u * r + h, p = m < p ? m : p, f = g < f ? g : f, d = m > d ? m : d, _ = g > _ ? g : _, m = a * n + l * r + c, g = s * n + u * r + h, p = m < p ? m : p, f = g < f ? g : f, d = m > d ? m : d, _ = g > _ ? g : _, this.minX = p, this.minY = f, this.maxX = d, this.maxY = _
                            }, e.prototype.addVertices = function(e, t, i, n) {
                                for (var r = e.worldTransform, o = r.a, a = r.b, s = r.c, l = r.d, u = r.tx, c = r.ty, h = this.minX, p = this.minY, f = this.maxX, d = this.maxY, _ = i; _ < n; _ += 2) {
                                    var m = t[_],
                                        g = t[_ + 1],
                                        v = o * m + s * g + u,
                                        y = l * g + a * m + c;
                                    h = v < h ? v : h, p = y < p ? y : p, f = v > f ? v : f, d = y > d ? y : d
                                }
                                this.minX = h, this.minY = p, this.maxX = f, this.maxY = d
                            }, e.prototype.addBounds = function(e) {
                                var t = this.minX,
                                    i = this.minY,
                                    n = this.maxX,
                                    r = this.maxY;
                                this.minX = e.minX < t ? e.minX : t, this.minY = e.minY < i ? e.minY : i, this.maxX = e.maxX > n ? e.maxX : n, this.maxY = e.maxY > r ? e.maxY : r
                            }, e.prototype.addBoundsMask = function(e, t) {
                                var i = e.minX > t.minX ? e.minX : t.minX,
                                    n = e.minY > t.minY ? e.minY : t.minY,
                                    r = e.maxX < t.maxX ? e.maxX : t.maxX,
                                    o = e.maxY < t.maxY ? e.maxY : t.maxY;
                                if (i <= r && n <= o) {
                                    var a = this.minX,
                                        s = this.minY,
                                        l = this.maxX,
                                        u = this.maxY;
                                    this.minX = i < a ? i : a, this.minY = n < s ? n : s, this.maxX = r > l ? r : l, this.maxY = o > u ? o : u
                                }
                            }, e.prototype.addBoundsArea = function(e, t) {
                                var i = e.minX > t.x ? e.minX : t.x,
                                    n = e.minY > t.y ? e.minY : t.y,
                                    r = e.maxX < t.x + t.width ? e.maxX : t.x + t.width,
                                    o = e.maxY < t.y + t.height ? e.maxY : t.y + t.height;
                                if (i <= r && n <= o) {
                                    var a = this.minX,
                                        s = this.minY,
                                        l = this.maxX,
                                        u = this.maxY;
                                    this.minX = i < a ? i : a, this.minY = n < s ? n : s, this.maxX = r > l ? r : l, this.maxY = o > u ? o : u
                                }
                            }, e
                        }();
                    i.default = o
                }, {
                    "../math": 70
                }],
                48: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function o(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var a = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        s = e("../utils"),
                        l = e("./DisplayObject"),
                        u = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(l),
                        c = function(e) {
                            function t() {
                                n(this, t);
                                var i = r(this, e.call(this));
                                return i.children = [], i
                            }
                            return o(t, e), t.prototype.onChildrenChange = function() {}, t.prototype.addChild = function(e) {
                                var t = arguments.length;
                                if (t > 1)
                                    for (var i = 0; i < t; i++) this.addChild(arguments[i]);
                                else e.parent && e.parent.removeChild(e), e.parent = this, e.transform._parentID = -1, this.children.push(e), this._boundsID++, this.onChildrenChange(this.children.length - 1), e.emit("added", this);
                                return e
                            }, t.prototype.addChildAt = function(e, t) {
                                if (t < 0 || t > this.children.length) throw new Error(e + "addChildAt: The index " + t + " supplied is out of bounds " + this.children.length);
                                return e.parent && e.parent.removeChild(e), e.parent = this, e.transform._parentID = -1, this.children.splice(t, 0, e), this._boundsID++, this.onChildrenChange(t), e.emit("added", this), e
                            }, t.prototype.swapChildren = function(e, t) {
                                if (e !== t) {
                                    var i = this.getChildIndex(e),
                                        n = this.getChildIndex(t);
                                    this.children[i] = t, this.children[n] = e, this.onChildrenChange(i < n ? i : n)
                                }
                            }, t.prototype.getChildIndex = function(e) {
                                var t = this.children.indexOf(e);
                                if (-1 === t) throw new Error("The supplied DisplayObject must be a child of the caller");
                                return t
                            }, t.prototype.setChildIndex = function(e, t) {
                                if (t < 0 || t >= this.children.length) throw new Error("The index " + t + " supplied is out of bounds " + this.children.length);
                                var i = this.getChildIndex(e);
                                (0, s.removeItems)(this.children, i, 1), this.children.splice(t, 0, e), this.onChildrenChange(t)
                            }, t.prototype.getChildAt = function(e) {
                                if (e < 0 || e >= this.children.length) throw new Error("getChildAt: Index (" + e + ") does not exist.");
                                return this.children[e]
                            }, t.prototype.removeChild = function(e) {
                                var t = arguments.length;
                                if (t > 1)
                                    for (var i = 0; i < t; i++) this.removeChild(arguments[i]);
                                else {
                                    var n = this.children.indexOf(e);
                                    if (-1 === n) return null;
                                    e.parent = null, e.transform._parentID = -1, (0, s.removeItems)(this.children, n, 1), this._boundsID++, this.onChildrenChange(n), e.emit("removed", this)
                                }
                                return e
                            }, t.prototype.removeChildAt = function(e) {
                                var t = this.getChildAt(e);
                                return t.parent = null, t.transform._parentID = -1, (0, s.removeItems)(this.children, e, 1), this._boundsID++, this.onChildrenChange(e), t.emit("removed", this), t
                            }, t.prototype.removeChildren = function() {
                                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,
                                    t = arguments[1],
                                    i = e,
                                    n = "number" == typeof t ? t : this.children.length,
                                    r = n - i,
                                    o = void 0;
                                if (r > 0 && r <= n) {
                                    o = this.children.splice(i, r);
                                    for (var a = 0; a < o.length; ++a) o[a].parent = null, o[a].transform && (o[a].transform._parentID = -1);
                                    this._boundsID++, this.onChildrenChange(e);
                                    for (var s = 0; s < o.length; ++s) o[s].emit("removed", this);
                                    return o
                                }
                                if (0 === r && 0 === this.children.length) return [];
                                throw new RangeError("removeChildren: numeric values are outside the acceptable range.")
                            }, t.prototype.updateTransform = function() {
                                this._boundsID++, this.transform.updateTransform(this.parent.transform), this.worldAlpha = this.alpha * this.parent.worldAlpha;
                                for (var e = 0, t = this.children.length; e < t; ++e) {
                                    var i = this.children[e];
                                    i.visible && i.updateTransform()
                                }
                            }, t.prototype.calculateBounds = function() {
                                this._bounds.clear(), this._calculateBounds();
                                for (var e = 0; e < this.children.length; e++) {
                                    var t = this.children[e];
                                    t.visible && t.renderable && (t.calculateBounds(), t._mask ? (t._mask.calculateBounds(), this._bounds.addBoundsMask(t._bounds, t._mask._bounds)) : t.filterArea ? this._bounds.addBoundsArea(t._bounds, t.filterArea) : this._bounds.addBounds(t._bounds))
                                }
                                this._lastBoundsID = this._boundsID
                            }, t.prototype._calculateBounds = function() {}, t.prototype.renderWebGL = function(e) {
                                if (this.visible && !(this.worldAlpha <= 0) && this.renderable)
                                    if (this._mask || this._filters) this.renderAdvancedWebGL(e);
                                    else {
                                        this._renderWebGL(e);
                                        for (var t = 0, i = this.children.length; t < i; ++t) this.children[t].renderWebGL(e)
                                    }
                            }, t.prototype.renderAdvancedWebGL = function(e) {
                                e.flush();
                                var t = this._filters,
                                    i = this._mask;
                                if (t) {
                                    this._enabledFilters || (this._enabledFilters = []), this._enabledFilters.length = 0;
                                    for (var n = 0; n < t.length; n++) t[n].enabled && this._enabledFilters.push(t[n]);
                                    this._enabledFilters.length && e.filterManager.pushFilter(this, this._enabledFilters)
                                }
                                i && e.maskManager.pushMask(this, this._mask), this._renderWebGL(e);
                                for (var r = 0, o = this.children.length; r < o; r++) this.children[r].renderWebGL(e);
                                e.flush(), i && e.maskManager.popMask(this, this._mask), t && this._enabledFilters && this._enabledFilters.length && e.filterManager.popFilter()
                            }, t.prototype._renderWebGL = function(e) {}, t.prototype._renderCanvas = function(e) {}, t.prototype.renderCanvas = function(e) {
                                if (this.visible && !(this.worldAlpha <= 0) && this.renderable) {
                                    this._mask && e.maskManager.pushMask(this._mask), this._renderCanvas(e);
                                    for (var t = 0, i = this.children.length; t < i; ++t) this.children[t].renderCanvas(e);
                                    this._mask && e.maskManager.popMask(e)
                                }
                            }, t.prototype.destroy = function(t) {
                                e.prototype.destroy.call(this);
                                var i = "boolean" == typeof t ? t : t && t.children,
                                    n = this.removeChildren(0, this.children.length);
                                if (i)
                                    for (var r = 0; r < n.length; ++r) n[r].destroy(t)
                            }, a(t, [{
                                key: "width",
                                get: function() {
                                    return this.scale.x * this.getLocalBounds().width
                                },
                                set: function(e) {
                                    var t = this.getLocalBounds().width;
                                    this.scale.x = 0 !== t ? e / t : 1, this._width = e
                                }
                            }, {
                                key: "height",
                                get: function() {
                                    return this.scale.y * this.getLocalBounds().height
                                },
                                set: function(e) {
                                    var t = this.getLocalBounds().height;
                                    this.scale.y = 0 !== t ? e / t : 1, this._height = e
                                }
                            }]), t
                        }(u.default);
                    i.default = c, c.prototype.containerUpdateTransform = c.prototype.updateTransform
                }, {
                    "../utils": 125,
                    "./DisplayObject": 49
                }],
                49: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function a(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var s = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        l = e("eventemitter3"),
                        u = n(l),
                        c = e("../const"),
                        h = e("../settings"),
                        p = n(h),
                        f = e("./TransformStatic"),
                        d = n(f),
                        _ = e("./Transform"),
                        m = n(_),
                        g = e("./Bounds"),
                        v = n(g),
                        y = e("../math"),
                        b = function(e) {
                            function t() {
                                r(this, t);
                                var i = o(this, e.call(this)),
                                    n = p.default.TRANSFORM_MODE === c.TRANSFORM_MODE.STATIC ? d.default : m.default;
                                return i.tempDisplayObjectParent = null, i.transform = new n, i.alpha = 1, i.visible = !0, i.renderable = !0, i.parent = null, i.worldAlpha = 1, i.filterArea = null, i._filters = null, i._enabledFilters = null, i._bounds = new v.default, i._boundsID = 0, i._lastBoundsID = -1, i._boundsRect = null, i._localBoundsRect = null, i._mask = null, i._destroyed = !1, i
                            }
                            return a(t, e), t.prototype.updateTransform = function() {
                                this.transform.updateTransform(this.parent.transform), this.worldAlpha = this.alpha * this.parent.worldAlpha, this._bounds.updateID++
                            }, t.prototype._recursivePostUpdateTransform = function() {
                                this.parent ? (this.parent._recursivePostUpdateTransform(), this.transform.updateTransform(this.parent.transform)) : this.transform.updateTransform(this._tempDisplayObjectParent.transform)
                            }, t.prototype.getBounds = function(e, t) {
                                return e || (this.parent ? (this._recursivePostUpdateTransform(), this.updateTransform()) : (this.parent = this._tempDisplayObjectParent, this.updateTransform(), this.parent = null)), this._boundsID !== this._lastBoundsID && this.calculateBounds(), t || (this._boundsRect || (this._boundsRect = new y.Rectangle), t = this._boundsRect), this._bounds.getRectangle(t)
                            }, t.prototype.getLocalBounds = function(e) {
                                var t = this.transform,
                                    i = this.parent;
                                this.parent = null, this.transform = this._tempDisplayObjectParent.transform, e || (this._localBoundsRect || (this._localBoundsRect = new y.Rectangle), e = this._localBoundsRect);
                                var n = this.getBounds(!1, e);
                                return this.parent = i, this.transform = t, n
                            }, t.prototype.toGlobal = function(e, t) {
                                return arguments.length > 2 && void 0 !== arguments[2] && arguments[2] || (this._recursivePostUpdateTransform(), this.parent ? this.displayObjectUpdateTransform() : (this.parent = this._tempDisplayObjectParent, this.displayObjectUpdateTransform(), this.parent = null)), this.worldTransform.apply(e, t)
                            }, t.prototype.toLocal = function(e, t, i, n) {
                                return t && (e = t.toGlobal(e, i, n)), n || (this._recursivePostUpdateTransform(), this.parent ? this.displayObjectUpdateTransform() : (this.parent = this._tempDisplayObjectParent, this.displayObjectUpdateTransform(), this.parent = null)), this.worldTransform.applyInverse(e, i)
                            }, t.prototype.renderWebGL = function(e) {}, t.prototype.renderCanvas = function(e) {}, t.prototype.setParent = function(e) {
                                if (!e || !e.addChild) throw new Error("setParent: Argument must be a Container");
                                return e.addChild(this), e
                            }, t.prototype.setTransform = function() {
                                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,
                                    t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0,
                                    i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1,
                                    n = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 1,
                                    r = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 0,
                                    o = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : 0,
                                    a = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : 0,
                                    s = arguments.length > 7 && void 0 !== arguments[7] ? arguments[7] : 0,
                                    l = arguments.length > 8 && void 0 !== arguments[8] ? arguments[8] : 0;
                                return this.position.x = e, this.position.y = t, this.scale.x = i || 1, this.scale.y = n || 1, this.rotation = r, this.skew.x = o, this.skew.y = a, this.pivot.x = s, this.pivot.y = l, this
                            }, t.prototype.destroy = function() {
                                this.removeAllListeners(), this.parent && this.parent.removeChild(this), this.transform = null, this.parent = null, this._bounds = null, this._currentBounds = null, this._mask = null, this.filterArea = null, this.interactive = !1, this.interactiveChildren = !1, this._destroyed = !0
                            }, s(t, [{
                                key: "_tempDisplayObjectParent",
                                get: function() {
                                    return null === this.tempDisplayObjectParent && (this.tempDisplayObjectParent = new t), this.tempDisplayObjectParent
                                }
                            }, {
                                key: "x",
                                get: function() {
                                    return this.position.x
                                },
                                set: function(e) {
                                    this.transform.position.x = e
                                }
                            }, {
                                key: "y",
                                get: function() {
                                    return this.position.y
                                },
                                set: function(e) {
                                    this.transform.position.y = e
                                }
                            }, {
                                key: "worldTransform",
                                get: function() {
                                    return this.transform.worldTransform
                                }
                            }, {
                                key: "localTransform",
                                get: function() {
                                    return this.transform.localTransform
                                }
                            }, {
                                key: "position",
                                get: function() {
                                    return this.transform.position
                                },
                                set: function(e) {
                                    this.transform.position.copy(e)
                                }
                            }, {
                                key: "scale",
                                get: function() {
                                    return this.transform.scale
                                },
                                set: function(e) {
                                    this.transform.scale.copy(e)
                                }
                            }, {
                                key: "pivot",
                                get: function() {
                                    return this.transform.pivot
                                },
                                set: function(e) {
                                    this.transform.pivot.copy(e)
                                }
                            }, {
                                key: "skew",
                                get: function() {
                                    return this.transform.skew
                                },
                                set: function(e) {
                                    this.transform.skew.copy(e)
                                }
                            }, {
                                key: "rotation",
                                get: function() {
                                    return this.transform.rotation
                                },
                                set: function(e) {
                                    this.transform.rotation = e
                                }
                            }, {
                                key: "worldVisible",
                                get: function() {
                                    var e = this;
                                    do {
                                        if (!e.visible) return !1;
                                        e = e.parent
                                    } while (e);
                                    return !0
                                }
                            }, {
                                key: "mask",
                                get: function() {
                                    return this._mask
                                },
                                set: function(e) {
                                    this._mask && (this._mask.renderable = !0, this._mask.isMask = !1), this._mask = e, this._mask && (this._mask.renderable = !1, this._mask.isMask = !0)
                                }
                            }, {
                                key: "filters",
                                get: function() {
                                    return this._filters && this._filters.slice()
                                },
                                set: function(e) {
                                    this._filters = e && e.slice()
                                }
                            }]), t
                        }(u.default);
                    i.default = b, b.prototype.displayObjectUpdateTransform = b.prototype.updateTransform
                }, {
                    "../const": 46,
                    "../math": 70,
                    "../settings": 101,
                    "./Bounds": 47,
                    "./Transform": 50,
                    "./TransformStatic": 52,
                    eventemitter3: 3
                }],
                50: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function o(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var a = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        s = e("../math"),
                        l = e("./TransformBase"),
                        u = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(l),
                        c = function(e) {
                            function t() {
                                n(this, t);
                                var i = r(this, e.call(this));
                                return i.position = new s.Point(0, 0), i.scale = new s.Point(1, 1), i.skew = new s.ObservablePoint(i.updateSkew, i, 0, 0), i.pivot = new s.Point(0, 0), i._rotation = 0, i._cx = 1, i._sx = 0, i._cy = 0, i._sy = 1, i
                            }
                            return o(t, e), t.prototype.updateSkew = function() {
                                this._cx = Math.cos(this._rotation + this.skew._y), this._sx = Math.sin(this._rotation + this.skew._y), this._cy = -Math.sin(this._rotation - this.skew._x), this._sy = Math.cos(this._rotation - this.skew._x)
                            }, t.prototype.updateLocalTransform = function() {
                                var e = this.localTransform;
                                e.a = this._cx * this.scale.x, e.b = this._sx * this.scale.x, e.c = this._cy * this.scale.y, e.d = this._sy * this.scale.y, e.tx = this.position.x - (this.pivot.x * e.a + this.pivot.y * e.c), e.ty = this.position.y - (this.pivot.x * e.b + this.pivot.y * e.d)
                            }, t.prototype.updateTransform = function(e) {
                                var t = this.localTransform;
                                t.a = this._cx * this.scale.x, t.b = this._sx * this.scale.x, t.c = this._cy * this.scale.y, t.d = this._sy * this.scale.y, t.tx = this.position.x - (this.pivot.x * t.a + this.pivot.y * t.c), t.ty = this.position.y - (this.pivot.x * t.b + this.pivot.y * t.d);
                                var i = e.worldTransform,
                                    n = this.worldTransform;
                                n.a = t.a * i.a + t.b * i.c, n.b = t.a * i.b + t.b * i.d, n.c = t.c * i.a + t.d * i.c, n.d = t.c * i.b + t.d * i.d, n.tx = t.tx * i.a + t.ty * i.c + i.tx, n.ty = t.tx * i.b + t.ty * i.d + i.ty, this._worldID++
                            }, t.prototype.setFromMatrix = function(e) {
                                e.decompose(this)
                            }, a(t, [{
                                key: "rotation",
                                get: function() {
                                    return this._rotation
                                },
                                set: function(e) {
                                    this._rotation = e, this.updateSkew()
                                }
                            }]), t
                        }(u.default);
                    i.default = c
                }, {
                    "../math": 70,
                    "./TransformBase": 51
                }],
                51: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = e("../math"),
                        o = function() {
                            function e() {
                                n(this, e), this.worldTransform = new r.Matrix, this.localTransform = new r.Matrix, this._worldID = 0, this._parentID = 0
                            }
                            return e.prototype.updateLocalTransform = function() {}, e.prototype.updateTransform = function(e) {
                                var t = e.worldTransform,
                                    i = this.worldTransform,
                                    n = this.localTransform;
                                i.a = n.a * t.a + n.b * t.c, i.b = n.a * t.b + n.b * t.d, i.c = n.c * t.a + n.d * t.c, i.d = n.c * t.b + n.d * t.d, i.tx = n.tx * t.a + n.ty * t.c + t.tx, i.ty = n.tx * t.b + n.ty * t.d + t.ty, this._worldID++
                            }, e
                        }();
                    i.default = o, o.prototype.updateWorldTransform = o.prototype.updateTransform, o.IDENTITY = new o
                }, {
                    "../math": 70
                }],
                52: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function o(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var a = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        s = e("../math"),
                        l = e("./TransformBase"),
                        u = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(l),
                        c = function(e) {
                            function t() {
                                n(this, t);
                                var i = r(this, e.call(this));
                                return i.position = new s.ObservablePoint(i.onChange, i, 0, 0), i.scale = new s.ObservablePoint(i.onChange, i, 1, 1), i.pivot = new s.ObservablePoint(i.onChange, i, 0, 0), i.skew = new s.ObservablePoint(i.updateSkew, i, 0, 0), i._rotation = 0, i._cx = 1, i._sx = 0, i._cy = 0, i._sy = 1, i._localID = 0, i._currentLocalID = 0, i
                            }
                            return o(t, e), t.prototype.onChange = function() {
                                this._localID++
                            }, t.prototype.updateSkew = function() {
                                this._cx = Math.cos(this._rotation + this.skew._y), this._sx = Math.sin(this._rotation + this.skew._y), this._cy = -Math.sin(this._rotation - this.skew._x), this._sy = Math.cos(this._rotation - this.skew._x), this._localID++
                            }, t.prototype.updateLocalTransform = function() {
                                var e = this.localTransform;
                                this._localID !== this._currentLocalID && (e.a = this._cx * this.scale._x, e.b = this._sx * this.scale._x, e.c = this._cy * this.scale._y, e.d = this._sy * this.scale._y, e.tx = this.position._x - (this.pivot._x * e.a + this.pivot._y * e.c), e.ty = this.position._y - (this.pivot._x * e.b + this.pivot._y * e.d), this._currentLocalID = this._localID, this._parentID = -1)
                            }, t.prototype.updateTransform = function(e) {
                                var t = this.localTransform;
                                if (this._localID !== this._currentLocalID && (t.a = this._cx * this.scale._x, t.b = this._sx * this.scale._x, t.c = this._cy * this.scale._y, t.d = this._sy * this.scale._y, t.tx = this.position._x - (this.pivot._x * t.a + this.pivot._y * t.c), t.ty = this.position._y - (this.pivot._x * t.b + this.pivot._y * t.d), this._currentLocalID = this._localID, this._parentID = -1), this._parentID !== e._worldID) {
                                    var i = e.worldTransform,
                                        n = this.worldTransform;
                                    n.a = t.a * i.a + t.b * i.c, n.b = t.a * i.b + t.b * i.d, n.c = t.c * i.a + t.d * i.c, n.d = t.c * i.b + t.d * i.d, n.tx = t.tx * i.a + t.ty * i.c + i.tx, n.ty = t.tx * i.b + t.ty * i.d + i.ty, this._parentID = e._worldID, this._worldID++
                                }
                            }, t.prototype.setFromMatrix = function(e) {
                                e.decompose(this), this._localID++
                            }, a(t, [{
                                key: "rotation",
                                get: function() {
                                    return this._rotation
                                },
                                set: function(e) {
                                    this._rotation !== e && (this._rotation = e, this.updateSkew())
                                }
                            }]), t
                        }(u.default);
                    i.default = c
                }, {
                    "../math": 70,
                    "./TransformBase": 51
                }],
                53: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function a(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var s = e("../display/Container"),
                        l = n(s),
                        u = e("../textures/RenderTexture"),
                        c = n(u),
                        h = e("../textures/Texture"),
                        p = n(h),
                        f = e("./GraphicsData"),
                        d = n(f),
                        _ = e("../sprites/Sprite"),
                        m = n(_),
                        g = e("../math"),
                        v = e("../utils"),
                        y = e("../const"),
                        b = e("../display/Bounds"),
                        x = n(b),
                        S = e("./utils/bezierCurveTo"),
                        T = n(S),
                        w = e("../renderers/canvas/CanvasRenderer"),
                        E = n(w),
                        P = void 0,
                        R = new g.Matrix,
                        O = new g.Point,
                        A = new Float32Array(4),
                        I = new Float32Array(4),
                        C = function(e) {
                            function t() {
                                var i = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
                                r(this, t);
                                var n = o(this, e.call(this));
                                return n.fillAlpha = 1, n.lineWidth = 0, n.nativeLines = i, n.lineColor = 0, n.lineAlignment = .5, n.graphicsData = [], n.tint = 16777215, n._prevTint = 16777215, n.blendMode = y.BLEND_MODES.NORMAL, n.currentPath = null, n._webGL = {}, n.isMask = !1, n.boundsPadding = 0, n._localBounds = new x.default, n.dirty = 0, n.fastRectDirty = -1, n.clearDirty = 0, n.boundsDirty = -1, n.cachedSpriteDirty = !1, n._spriteRect = null, n._fastRect = !1, n._prevRectTint = null, n._prevRectFillColor = null, n
                            }
                            return a(t, e), t.prototype.clone = function() {
                                var e = new t;
                                e.renderable = this.renderable, e.fillAlpha = this.fillAlpha, e.lineWidth = this.lineWidth, e.lineColor = this.lineColor, e.lineAlignment = this.lineAlignment, e.tint = this.tint, e.blendMode = this.blendMode, e.isMask = this.isMask, e.boundsPadding = this.boundsPadding, e.dirty = 0, e.cachedSpriteDirty = this.cachedSpriteDirty;
                                for (var i = 0; i < this.graphicsData.length; ++i) e.graphicsData.push(this.graphicsData[i].clone());
                                return e.currentPath = e.graphicsData[e.graphicsData.length - 1], e.updateLocalBounds(), e
                            }, t.prototype._quadraticCurveLength = function(e, t, i, n, r, o) {
                                var a = e - 2 * i + r,
                                    s = t - 2 * n + o,
                                    l = 2 * i - 2 * e,
                                    u = 2 * n - 2 * t,
                                    c = 4 * (a * a + s * s),
                                    h = 4 * (a * l + s * u),
                                    p = l * l + u * u,
                                    f = 2 * Math.sqrt(c + h + p),
                                    d = Math.sqrt(c),
                                    _ = 2 * c * d,
                                    m = 2 * Math.sqrt(p),
                                    g = h / d;
                                return (_ * f + d * h * (f - m) + (4 * p * c - h * h) * Math.log((2 * d + g + f) / (g + m))) / (4 * _)
                            }, t.prototype._bezierCurveLength = function(e, t, i, n, r, o, a, s) {
                                for (var l = 0, u = 0, c = 0, h = 0, p = 0, f = 0, d = 0, _ = 0, m = 0, g = 0, v = 0, y = e, b = t, x = 1; x <= 10; ++x) u = x / 10, c = u * u, h = c * u, p = 1 - u, f = p * p, d = f * p, _ = d * e + 3 * f * u * i + 3 * p * c * r + h * a, m = d * t + 3 * f * u * n + 3 * p * c * o + h * s, g = y - _, v = b - m, y = _, b = m, l += Math.sqrt(g * g + v * v);
                                return l
                            }, t.prototype._segmentsCount = function(e) {
                                var i = Math.ceil(e / t.CURVES.maxLength);
                                return i < t.CURVES.minSegments ? i = t.CURVES.minSegments : i > t.CURVES.maxSegments && (i = t.CURVES.maxSegments), i
                            }, t.prototype.lineStyle = function() {
                                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,
                                    t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0,
                                    i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1,
                                    n = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : .5;
                                if (this.lineWidth = e,
                                    this.lineColor = t, this.lineAlpha = i, this.lineAlignment = n, this.currentPath)
                                    if (this.currentPath.shape.points.length) {
                                        var r = new g.Polygon(this.currentPath.shape.points.slice(-2));
                                        r.closed = !1, this.drawShape(r)
                                    } else this.currentPath.lineWidth = this.lineWidth, this.currentPath.lineColor = this.lineColor, this.currentPath.lineAlpha = this.lineAlpha, this.currentPath.lineAlignment = this.lineAlignment;
                                return this
                            }, t.prototype.moveTo = function(e, t) {
                                var i = new g.Polygon([e, t]);
                                return i.closed = !1, this.drawShape(i), this
                            }, t.prototype.lineTo = function(e, t) {
                                var i = this.currentPath.shape.points,
                                    n = i[i.length - 2],
                                    r = i[i.length - 1];
                                return n === e && r === t || (i.push(e, t), this.dirty++), this
                            }, t.prototype.quadraticCurveTo = function(e, i, n, r) {
                                this.currentPath ? 0 === this.currentPath.shape.points.length && (this.currentPath.shape.points = [0, 0]) : this.moveTo(0, 0);
                                var o = this.currentPath.shape.points,
                                    a = 0,
                                    s = 0;
                                0 === o.length && this.moveTo(0, 0);
                                for (var l = o[o.length - 2], u = o[o.length - 1], c = t.CURVES.adaptive ? this._segmentsCount(this._quadraticCurveLength(l, u, e, i, n, r)) : 20, h = 1; h <= c; ++h) {
                                    var p = h / c;
                                    a = l + (e - l) * p, s = u + (i - u) * p, o.push(a + (e + (n - e) * p - a) * p, s + (i + (r - i) * p - s) * p)
                                }
                                return this.dirty++, this
                            }, t.prototype.bezierCurveTo = function(e, i, n, r, o, a) {
                                this.currentPath ? 0 === this.currentPath.shape.points.length && (this.currentPath.shape.points = [0, 0]) : this.moveTo(0, 0);
                                var s = this.currentPath.shape.points,
                                    l = s[s.length - 2],
                                    u = s[s.length - 1];
                                s.length -= 2;
                                var c = t.CURVES.adaptive ? this._segmentsCount(this._bezierCurveLength(l, u, e, i, n, r, o, a)) : 20;
                                return (0, T.default)(l, u, e, i, n, r, o, a, c, s), this.dirty++, this
                            }, t.prototype.arcTo = function(e, t, i, n, r) {
                                this.currentPath ? 0 === this.currentPath.shape.points.length && this.currentPath.shape.points.push(e, t) : this.moveTo(e, t);
                                var o = this.currentPath.shape.points,
                                    a = o[o.length - 2],
                                    s = o[o.length - 1],
                                    l = s - t,
                                    u = a - e,
                                    c = n - t,
                                    h = i - e,
                                    p = Math.abs(l * h - u * c);
                                if (p < 1e-8 || 0 === r) o[o.length - 2] === e && o[o.length - 1] === t || o.push(e, t);
                                else {
                                    var f = l * l + u * u,
                                        d = c * c + h * h,
                                        _ = l * c + u * h,
                                        m = r * Math.sqrt(f) / p,
                                        g = r * Math.sqrt(d) / p,
                                        v = m * _ / f,
                                        y = g * _ / d,
                                        b = m * h + g * u,
                                        x = m * c + g * l,
                                        S = u * (g + v),
                                        T = l * (g + v),
                                        w = h * (m + y),
                                        E = c * (m + y),
                                        P = Math.atan2(T - x, S - b),
                                        R = Math.atan2(E - x, w - b);
                                    this.arc(b + e, x + t, r, P, R, u * c > h * l)
                                }
                                return this.dirty++, this
                            }, t.prototype.arc = function(e, i, n, r, o) {
                                var a = arguments.length > 5 && void 0 !== arguments[5] && arguments[5];
                                if (r === o) return this;
                                !a && o <= r ? o += y.PI_2 : a && r <= o && (r += y.PI_2);
                                var s = o - r,
                                    l = t.CURVES.adaptive ? this._segmentsCount(Math.abs(s) * n) : 40 * Math.ceil(Math.abs(s) / y.PI_2);
                                if (0 === s) return this;
                                var u = e + Math.cos(r) * n,
                                    c = i + Math.sin(r) * n,
                                    h = this.currentPath ? this.currentPath.shape.points : null;
                                if (h) {
                                    var p = Math.abs(h[h.length - 2] - u),
                                        f = Math.abs(h[h.length - 1] - c);
                                    p < .001 && f < .001 || h.push(u, c)
                                } else this.moveTo(u, c), h = this.currentPath.shape.points;
                                for (var d = s / (2 * l), _ = 2 * d, m = Math.cos(d), g = Math.sin(d), v = l - 1, b = v % 1 / v, x = 0; x <= v; ++x) {
                                    var S = x + b * x,
                                        T = d + r + _ * S,
                                        w = Math.cos(T),
                                        E = -Math.sin(T);
                                    h.push((m * w + g * E) * n + e, (m * -E + g * w) * n + i)
                                }
                                return this.dirty++, this
                            }, t.prototype.beginFill = function() {
                                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,
                                    t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;
                                return this.filling = !0, this.fillColor = e, this.fillAlpha = t, this.currentPath && this.currentPath.shape.points.length <= 2 && (this.currentPath.fill = this.filling, this.currentPath.fillColor = this.fillColor, this.currentPath.fillAlpha = this.fillAlpha), this
                            }, t.prototype.endFill = function() {
                                return this.filling = !1, this.fillColor = null, this.fillAlpha = 1, this
                            }, t.prototype.drawRect = function(e, t, i, n) {
                                return this.drawShape(new g.Rectangle(e, t, i, n)), this
                            }, t.prototype.drawRoundedRect = function(e, t, i, n, r) {
                                return this.drawShape(new g.RoundedRectangle(e, t, i, n, r)), this
                            }, t.prototype.drawCircle = function(e, t, i) {
                                return this.drawShape(new g.Circle(e, t, i)), this
                            }, t.prototype.drawEllipse = function(e, t, i, n) {
                                return this.drawShape(new g.Ellipse(e, t, i, n)), this
                            }, t.prototype.drawPolygon = function(e) {
                                var t = e,
                                    i = !0;
                                if (t instanceof g.Polygon && (i = t.closed, t = t.points), !Array.isArray(t)) {
                                    t = new Array(arguments.length);
                                    for (var n = 0; n < t.length; ++n) t[n] = arguments[n]
                                }
                                var r = new g.Polygon(t);
                                return r.closed = i, this.drawShape(r), this
                            }, t.prototype.drawStar = function(e, t, i, n, r) {
                                var o = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : 0;
                                r = r || n / 2;
                                for (var a = -1 * Math.PI / 2 + o, s = 2 * i, l = y.PI_2 / s, u = [], c = 0; c < s; c++) {
                                    var h = c % 2 ? r : n,
                                        p = c * l + a;
                                    u.push(e + h * Math.cos(p), t + h * Math.sin(p))
                                }
                                return this.drawPolygon(u)
                            }, t.prototype.clear = function() {
                                return (this.lineWidth || this.filling || this.graphicsData.length > 0) && (this.lineWidth = 0, this.lineAlignment = .5, this.filling = !1, this.boundsDirty = -1, this.canvasTintDirty = -1, this.dirty++, this.clearDirty++, this.graphicsData.length = 0), this.currentPath = null, this._spriteRect = null, this
                            }, t.prototype.isFastRect = function() {
                                return 1 === this.graphicsData.length && this.graphicsData[0].shape.type === y.SHAPES.RECT && !this.graphicsData[0].lineWidth
                            }, t.prototype._renderWebGL = function(e) {
                                this.dirty !== this.fastRectDirty && (this.fastRectDirty = this.dirty, this._fastRect = this.isFastRect()), this._fastRect ? this._renderSpriteRect(e) : (e.setObjectRenderer(e.plugins.graphics), e.plugins.graphics.render(this))
                            }, t.prototype._renderSpriteRect = function(e) {
                                var t = this.graphicsData[0].shape;
                                this._spriteRect || (this._spriteRect = new m.default(new p.default(p.default.WHITE)));
                                var i = this._spriteRect,
                                    n = this.graphicsData[0].fillColor;
                                if (16777215 === this.tint) i.tint = n;
                                else if (this.tint !== this._prevRectTint || n !== this._prevRectFillColor) {
                                    var r = A,
                                        o = I;
                                    (0, v.hex2rgb)(n, r), (0, v.hex2rgb)(this.tint, o), r[0] *= o[0], r[1] *= o[1], r[2] *= o[2], i.tint = (0, v.rgb2hex)(r), this._prevRectTint = this.tint, this._prevRectFillColor = n
                                }
                                i.alpha = this.graphicsData[0].fillAlpha, i.worldAlpha = this.worldAlpha * i.alpha, i.blendMode = this.blendMode, i._texture._frame.width = t.width, i._texture._frame.height = t.height, i.transform.worldTransform = this.transform.worldTransform, i.anchor.set(-t.x / t.width, -t.y / t.height), i._onAnchorUpdate(), i._renderWebGL(e)
                            }, t.prototype._renderCanvas = function(e) {
                                !0 !== this.isMask && e.plugins.graphics.render(this)
                            }, t.prototype._calculateBounds = function() {
                                this.boundsDirty !== this.dirty && (this.boundsDirty = this.dirty, this.updateLocalBounds(), this.cachedSpriteDirty = !0);
                                var e = this._localBounds;
                                this._bounds.addFrame(this.transform, e.minX, e.minY, e.maxX, e.maxY)
                            }, t.prototype.containsPoint = function(e) {
                                this.worldTransform.applyInverse(e, O);
                                for (var t = this.graphicsData, i = 0; i < t.length; ++i) {
                                    var n = t[i];
                                    if (n.fill && n.shape && n.shape.contains(O.x, O.y)) {
                                        if (n.holes)
                                            for (var r = 0; r < n.holes.length; r++) {
                                                var o = n.holes[r];
                                                if (o.contains(O.x, O.y)) return !1
                                            }
                                        return !0
                                    }
                                }
                                return !1
                            }, t.prototype.updateLocalBounds = function() {
                                var e = 1 / 0,
                                    t = -1 / 0,
                                    i = 1 / 0,
                                    n = -1 / 0;
                                if (this.graphicsData.length)
                                    for (var r = 0, o = 0, a = 0, s = 0, l = 0, u = 0; u < this.graphicsData.length; u++) {
                                        var c = this.graphicsData[u],
                                            h = c.type,
                                            p = c.lineWidth,
                                            f = c.lineAlignment,
                                            d = p * f;
                                        if (r = c.shape, h === y.SHAPES.RECT || h === y.SHAPES.RREC) o = r.x - d, a = r.y - d, s = r.width + 2 * d, l = r.height + 2 * d, e = o < e ? o : e, t = o + s > t ? o + s : t, i = a < i ? a : i, n = a + l > n ? a + l : n;
                                        else if (h === y.SHAPES.CIRC) o = r.x, a = r.y, s = r.radius + d, l = r.radius + d, e = o - s < e ? o - s : e, t = o + s > t ? o + s : t, i = a - l < i ? a - l : i, n = a + l > n ? a + l : n;
                                        else if (h === y.SHAPES.ELIP) o = r.x, a = r.y, s = r.width + d, l = r.height + d, e = o - s < e ? o - s : e, t = o + s > t ? o + s : t, i = a - l < i ? a - l : i, n = a + l > n ? a + l : n;
                                        else
                                            for (var _ = r.points, m = 0, g = 0, v = 0, b = 0, x = 0, S = 0, T = 0, w = 0, E = 0; E + 2 < _.length; E += 2) o = _[E], a = _[E + 1], m = _[E + 2], g = _[E + 3], v = Math.abs(m - o), b = Math.abs(g - a), l = 2 * d, (s = Math.sqrt(v * v + b * b)) < 1e-9 || (x = (l / s * b + v) / 2, S = (l / s * v + b) / 2, T = (m + o) / 2, w = (g + a) / 2, e = T - x < e ? T - x : e, t = T + x > t ? T + x : t, i = w - S < i ? w - S : i, n = w + S > n ? w + S : n)
                                    } else e = 0, t = 0, i = 0, n = 0;
                                var P = this.boundsPadding;
                                this._localBounds.minX = e - P, this._localBounds.maxX = t + P, this._localBounds.minY = i - P, this._localBounds.maxY = n + P
                            }, t.prototype.drawShape = function(e) {
                                this.currentPath && this.currentPath.shape.points.length <= 2 && this.graphicsData.pop(), this.currentPath = null;
                                var t = new d.default(this.lineWidth, this.lineColor, this.lineAlpha, this.fillColor, this.fillAlpha, this.filling, this.nativeLines, e, this.lineAlignment);
                                return this.graphicsData.push(t), t.type === y.SHAPES.POLY && (t.shape.closed = t.shape.closed, this.currentPath = t), this.dirty++, t
                            }, t.prototype.generateCanvasTexture = function(e) {
                                var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1,
                                    i = this.getLocalBounds(),
                                    n = c.default.create(i.width, i.height, e, t);
                                P || (P = new E.default), this.transform.updateLocalTransform(), this.transform.localTransform.copy(R), R.invert(), R.tx -= i.x, R.ty -= i.y, P.render(this, n, !0, R);
                                var r = p.default.fromCanvas(n.baseTexture._canvasRenderTarget.canvas, e, "graphics");
                                return r.baseTexture.resolution = t, r.baseTexture.update(), r
                            }, t.prototype.closePath = function() {
                                var e = this.currentPath;
                                return e && e.shape && e.shape.close(), this
                            }, t.prototype.addHole = function() {
                                var e = this.graphicsData.pop();
                                return this.currentPath = this.graphicsData[this.graphicsData.length - 1], this.currentPath.addHole(e.shape), this.currentPath = null, this
                            }, t.prototype.destroy = function(t) {
                                e.prototype.destroy.call(this, t);
                                for (var i = 0; i < this.graphicsData.length; ++i) this.graphicsData[i].destroy();
                                for (var n in this._webGL)
                                    for (var r = 0; r < this._webGL[n].data.length; ++r) this._webGL[n].data[r].destroy();
                                this._spriteRect && this._spriteRect.destroy(), this.graphicsData = null, this.currentPath = null, this._webGL = null, this._localBounds = null
                            }, t
                        }(l.default);
                    i.default = C, C._SPRITE_TEXTURE = null, C.CURVES = {
                        adaptive: !1,
                        maxLength: 10,
                        minSegments: 8,
                        maxSegments: 2048
                    }
                }, {
                    "../const": 46,
                    "../display/Bounds": 47,
                    "../display/Container": 48,
                    "../math": 70,
                    "../renderers/canvas/CanvasRenderer": 77,
                    "../sprites/Sprite": 102,
                    "../textures/RenderTexture": 113,
                    "../textures/Texture": 115,
                    "../utils": 125,
                    "./GraphicsData": 54,
                    "./utils/bezierCurveTo": 56
                }],
                54: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = function() {
                        function e(t, i, r, o, a, s, l, u, c) {
                            n(this, e), this.lineWidth = t, this.lineAlignment = c, this.nativeLines = l, this.lineColor = i, this.lineAlpha = r, this._lineTint = i, this.fillColor = o, this.fillAlpha = a, this._fillTint = o, this.fill = s, this.holes = [], this.shape = u, this.type = u.type
                        }
                        return e.prototype.clone = function() {
                            return new e(this.lineWidth, this.lineColor, this.lineAlpha, this.fillColor, this.fillAlpha, this.fill, this.nativeLines, this.shape, this.lineAlignment)
                        }, e.prototype.addHole = function(e) {
                            this.holes.push(e)
                        }, e.prototype.destroy = function() {
                            this.shape = null, this.holes = null
                        }, e
                    }();
                    i.default = r
                }, {}],
                55: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = e("../../renderers/canvas/CanvasRenderer"),
                        o = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(r),
                        a = e("../../const"),
                        s = function() {
                            function e(t) {
                                n(this, e), this.renderer = t
                            }
                            return e.prototype.render = function(e) {
                                var t = this.renderer,
                                    i = t.context,
                                    n = e.worldAlpha,
                                    r = e.transform.worldTransform,
                                    o = t.resolution;
                                i.setTransform(r.a * o, r.b * o, r.c * o, r.d * o, r.tx * o, r.ty * o), e.canvasTintDirty === e.dirty && e._prevTint === e.tint || this.updateGraphicsTint(e), t.setBlendMode(e.blendMode);
                                for (var s = 0; s < e.graphicsData.length; s++) {
                                    var l = e.graphicsData[s],
                                        u = l.shape,
                                        c = l._fillTint,
                                        h = l._lineTint;
                                    if (i.lineWidth = l.lineWidth, l.type === a.SHAPES.POLY) {
                                        i.beginPath();
                                        var p = u.points,
                                            f = l.holes,
                                            d = void 0,
                                            _ = void 0,
                                            m = void 0,
                                            g = void 0;
                                        i.moveTo(p[0], p[1]);
                                        for (var v = 2; v < p.length; v += 2) i.lineTo(p[v], p[v + 1]);
                                        if (u.closed && i.closePath(), f.length > 0) {
                                            d = 0, m = p[0], g = p[1];
                                            for (var y = 2; y + 2 < p.length; y += 2) d += (p[y] - m) * (p[y + 3] - g) - (p[y + 2] - m) * (p[y + 1] - g);
                                            for (var b = 0; b < f.length; b++)
                                                if (p = f[b].points) {
                                                    _ = 0, m = p[0], g = p[1];
                                                    for (var x = 2; x + 2 < p.length; x += 2) _ += (p[x] - m) * (p[x + 3] - g) - (p[x + 2] - m) * (p[x + 1] - g);
                                                    if (_ * d < 0) {
                                                        i.moveTo(p[0], p[1]);
                                                        for (var S = 2; S < p.length; S += 2) i.lineTo(p[S], p[S + 1])
                                                    } else {
                                                        i.moveTo(p[p.length - 2], p[p.length - 1]);
                                                        for (var T = p.length - 4; T >= 0; T -= 2) i.lineTo(p[T], p[T + 1])
                                                    }
                                                    f[b].close && i.closePath()
                                                }
                                        }
                                        l.fill && (i.globalAlpha = l.fillAlpha * n, i.fillStyle = "#" + ("00000" + (0 | c).toString(16)).substr(-6), i.fill()), l.lineWidth && (i.globalAlpha = l.lineAlpha * n, i.strokeStyle = "#" + ("00000" + (0 | h).toString(16)).substr(-6), i.stroke())
                                    } else if (l.type === a.SHAPES.RECT)(l.fillColor || 0 === l.fillColor) && (i.globalAlpha = l.fillAlpha * n, i.fillStyle = "#" + ("00000" + (0 | c).toString(16)).substr(-6), i.fillRect(u.x, u.y, u.width, u.height)), l.lineWidth && (i.globalAlpha = l.lineAlpha * n, i.strokeStyle = "#" + ("00000" + (0 | h).toString(16)).substr(-6), i.strokeRect(u.x, u.y, u.width, u.height));
                                    else if (l.type === a.SHAPES.CIRC) i.beginPath(), i.arc(u.x, u.y, u.radius, 0, 2 * Math.PI), i.closePath(), l.fill && (i.globalAlpha = l.fillAlpha * n, i.fillStyle = "#" + ("00000" + (0 | c).toString(16)).substr(-6), i.fill()), l.lineWidth && (i.globalAlpha = l.lineAlpha * n, i.strokeStyle = "#" + ("00000" + (0 | h).toString(16)).substr(-6), i.stroke());
                                    else if (l.type === a.SHAPES.ELIP) {
                                        var w = 2 * u.width,
                                            E = 2 * u.height,
                                            P = u.x - w / 2,
                                            R = u.y - E / 2;
                                        i.beginPath();
                                        var O = w / 2 * .5522848,
                                            A = E / 2 * .5522848,
                                            I = P + w,
                                            C = R + E,
                                            M = P + w / 2,
                                            D = R + E / 2;
                                        i.moveTo(P, D), i.bezierCurveTo(P, D - A, M - O, R, M, R), i.bezierCurveTo(M + O, R, I, D - A, I, D), i.bezierCurveTo(I, D + A, M + O, C, M, C), i.bezierCurveTo(M - O, C, P, D + A, P, D), i.closePath(), l.fill && (i.globalAlpha = l.fillAlpha * n, i.fillStyle = "#" + ("00000" + (0 | c).toString(16)).substr(-6), i.fill()), l.lineWidth && (i.globalAlpha = l.lineAlpha * n, i.strokeStyle = "#" + ("00000" + (0 | h).toString(16)).substr(-6), i.stroke())
                                    } else if (l.type === a.SHAPES.RREC) {
                                        var N = u.x,
                                            L = u.y,
                                            k = u.width,
                                            F = u.height,
                                            B = u.radius,
                                            G = Math.min(k, F) / 2 | 0;
                                        B = B > G ? G : B, i.beginPath(), i.moveTo(N, L + B), i.lineTo(N, L + F - B), i.quadraticCurveTo(N, L + F, N + B, L + F), i.lineTo(N + k - B, L + F), i.quadraticCurveTo(N + k, L + F, N + k, L + F - B), i.lineTo(N + k, L + B), i.quadraticCurveTo(N + k, L, N + k - B, L), i.lineTo(N + B, L), i.quadraticCurveTo(N, L, N, L + B), i.closePath(), (l.fillColor || 0 === l.fillColor) && (i.globalAlpha = l.fillAlpha * n, i.fillStyle = "#" + ("00000" + (0 | c).toString(16)).substr(-6), i.fill()), l.lineWidth && (i.globalAlpha = l.lineAlpha * n, i.strokeStyle = "#" + ("00000" + (0 | h).toString(16)).substr(-6), i.stroke())
                                    }
                                }
                            }, e.prototype.updateGraphicsTint = function(e) {
                                e._prevTint = e.tint, e.canvasTintDirty = e.dirty;
                                for (var t = (e.tint >> 16 & 255) / 255, i = (e.tint >> 8 & 255) / 255, n = (255 & e.tint) / 255, r = 0; r < e.graphicsData.length; ++r) {
                                    var o = e.graphicsData[r],
                                        a = 0 | o.fillColor,
                                        s = 0 | o.lineColor;
                                    o._fillTint = ((a >> 16 & 255) / 255 * t * 255 << 16) + ((a >> 8 & 255) / 255 * i * 255 << 8) + (255 & a) / 255 * n * 255, o._lineTint = ((s >> 16 & 255) / 255 * t * 255 << 16) + ((s >> 8 & 255) / 255 * i * 255 << 8) + (255 & s) / 255 * n * 255
                                }
                            }, e.prototype.renderPolygon = function(e, t, i) {
                                i.moveTo(e[0], e[1]);
                                for (var n = 1; n < e.length / 2; ++n) i.lineTo(e[2 * n], e[2 * n + 1]);
                                t && i.closePath()
                            }, e.prototype.destroy = function() {
                                this.renderer = null
                            }, e
                        }();
                    i.default = s, o.default.registerPlugin("graphics", s)
                }, {
                    "../../const": 46,
                    "../../renderers/canvas/CanvasRenderer": 77
                }],
                56: [function(e, t, i) {
                    "use strict";

                    function n(e, t, i, n, r, o, a, s, l) {
                        var u = arguments.length > 9 && void 0 !== arguments[9] ? arguments[9] : [],
                            c = 0,
                            h = 0,
                            p = 0,
                            f = 0,
                            d = 0;
                        u.push(e, t);
                        for (var _ = 1, m = 0; _ <= l; ++_) m = _ / l, c = 1 - m, h = c * c, p = h * c, f = m * m, d = f * m, u.push(p * e + 3 * h * m * i + 3 * c * f * r + d * a, p * t + 3 * h * m * n + 3 * c * f * o + d * s);
                        return u
                    }
                    i.__esModule = !0, i.default = n
                }, {}],
                57: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function a(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var s = e("../../utils"),
                        l = e("../../const"),
                        u = e("../../renderers/webgl/utils/ObjectRenderer"),
                        c = n(u),
                        h = e("../../renderers/webgl/WebGLRenderer"),
                        p = n(h),
                        f = e("./WebGLGraphicsData"),
                        d = n(f),
                        _ = e("./shaders/PrimitiveShader"),
                        m = n(_),
                        g = e("./utils/buildPoly"),
                        v = n(g),
                        y = e("./utils/buildRectangle"),
                        b = n(y),
                        x = e("./utils/buildRoundedRectangle"),
                        S = n(x),
                        T = e("./utils/buildCircle"),
                        w = n(T),
                        E = function(e) {
                            function t(i) {
                                r(this, t);
                                var n = o(this, e.call(this, i));
                                return n.graphicsDataPool = [], n.primitiveShader = null, n.gl = i.gl, n.CONTEXT_UID = 0, n
                            }
                            return a(t, e), t.prototype.onContextChange = function() {
                                this.gl = this.renderer.gl, this.CONTEXT_UID = this.renderer.CONTEXT_UID, this.primitiveShader = new m.default(this.gl)
                            }, t.prototype.destroy = function() {
                                c.default.prototype.destroy.call(this);
                                for (var e = 0; e < this.graphicsDataPool.length; ++e) this.graphicsDataPool[e].destroy();
                                this.graphicsDataPool = null
                            }, t.prototype.render = function(e) {
                                var t = this.renderer,
                                    i = t.gl,
                                    n = void 0,
                                    r = e._webGL[this.CONTEXT_UID];
                                r && e.dirty === r.dirty || (this.updateGraphics(e), r = e._webGL[this.CONTEXT_UID]);
                                var o = this.primitiveShader;
                                t.bindShader(o), t.state.setBlendMode(e.blendMode);
                                for (var a = 0, l = r.data.length; a < l; a++) {
                                    n = r.data[a];
                                    var u = n.shader;
                                    t.bindShader(u), u.uniforms.translationMatrix = e.transform.worldTransform.toArray(!0), u.uniforms.tint = (0, s.hex2rgb)(e.tint), u.uniforms.alpha = e.worldAlpha, t.bindVao(n.vao), n.nativeLines ? i.drawArrays(i.LINES, 0, n.points.length / 6) : n.vao.draw(i.TRIANGLE_STRIP, n.indices.length)
                                }
                            }, t.prototype.updateGraphics = function(e) {
                                var t = this.renderer.gl,
                                    i = e._webGL[this.CONTEXT_UID];
                                if (i || (i = e._webGL[this.CONTEXT_UID] = {
                                        lastIndex: 0,
                                        data: [],
                                        gl: t,
                                        clearDirty: -1,
                                        dirty: -1
                                    }), i.dirty = e.dirty, e.clearDirty !== i.clearDirty) {
                                    i.clearDirty = e.clearDirty;
                                    for (var n = 0; n < i.data.length; n++) this.graphicsDataPool.push(i.data[n]);
                                    i.data.length = 0, i.lastIndex = 0
                                }
                                for (var r = void 0, o = void 0, a = i.lastIndex; a < e.graphicsData.length; a++) {
                                    var s = e.graphicsData[a];
                                    r = this.getWebGLData(i, 0), s.nativeLines && s.lineWidth && (o = this.getWebGLData(i, 0, !0), i.lastIndex++), s.type === l.SHAPES.POLY && (0, v.default)(s, r, o), s.type === l.SHAPES.RECT ? (0, b.default)(s, r, o) : s.type === l.SHAPES.CIRC || s.type === l.SHAPES.ELIP ? (0, w.default)(s, r, o) : s.type === l.SHAPES.RREC && (0, S.default)(s, r, o), i.lastIndex++
                                }
                                this.renderer.bindVao(null);
                                for (var u = 0; u < i.data.length; u++) r = i.data[u], r.dirty && r.upload()
                            }, t.prototype.getWebGLData = function(e, t, i) {
                                var n = e.data[e.data.length - 1];
                                return (!n || n.nativeLines !== i || n.points.length > 32e4) && (n = this.graphicsDataPool.pop() || new d.default(this.renderer.gl, this.primitiveShader, this.renderer.state.attribsState), n.nativeLines = i, n.reset(t), e.data.push(n)), n.dirty = !0, n
                            }, t
                        }(c.default);
                    i.default = E, p.default.registerPlugin("graphics", E)
                }, {
                    "../../const": 46,
                    "../../renderers/webgl/WebGLRenderer": 84,
                    "../../renderers/webgl/utils/ObjectRenderer": 94,
                    "../../utils": 125,
                    "./WebGLGraphicsData": 58,
                    "./shaders/PrimitiveShader": 59,
                    "./utils/buildCircle": 60,
                    "./utils/buildPoly": 62,
                    "./utils/buildRectangle": 63,
                    "./utils/buildRoundedRectangle": 64
                }],
                58: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = e("pixi-gl-core"),
                        o = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(r),
                        a = function() {
                            function e(t, i, r) {
                                n(this, e), this.gl = t, this.color = [0, 0, 0], this.points = [], this.indices = [], this.buffer = o.default.GLBuffer.createVertexBuffer(t), this.indexBuffer = o.default.GLBuffer.createIndexBuffer(t), this.dirty = !0, this.nativeLines = !1, this.glPoints = null, this.glIndices = null, this.shader = i, this.vao = new o.default.VertexArrayObject(t, r).addIndex(this.indexBuffer).addAttribute(this.buffer, i.attributes.aVertexPosition, t.FLOAT, !1, 24, 0).addAttribute(this.buffer, i.attributes.aColor, t.FLOAT, !1, 24, 8)
                            }
                            return e.prototype.reset = function() {
                                this.points.length = 0, this.indices.length = 0
                            }, e.prototype.upload = function() {
                                this.glPoints = new Float32Array(this.points), this.buffer.upload(this.glPoints), this.glIndices = new Uint16Array(this.indices), this.indexBuffer.upload(this.glIndices), this.dirty = !1
                            }, e.prototype.destroy = function() {
                                this.color = null, this.points = null, this.indices = null, this.vao.destroy(), this.buffer.destroy(), this.indexBuffer.destroy(), this.gl = null, this.buffer = null, this.indexBuffer = null, this.glPoints = null, this.glIndices = null
                            }, e
                        }();
                    i.default = a
                }, {
                    "pixi-gl-core": 15
                }],
                59: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function o(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var a = e("../../../Shader"),
                        s = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(a),
                        l = function(e) {
                            function t(i) {
                                return n(this, t), r(this, e.call(this, i, ["attribute vec2 aVertexPosition;", "attribute vec4 aColor;", "uniform mat3 translationMatrix;", "uniform mat3 projectionMatrix;", "uniform float alpha;", "uniform vec3 tint;", "varying vec4 vColor;", "void main(void){", "   gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);", "   vColor = aColor * vec4(tint * alpha, alpha);", "}"].join("\n"), ["varying vec4 vColor;", "void main(void){", "   gl_FragColor = vColor;", "}"].join("\n")))
                            }
                            return o(t, e), t
                        }(s.default);
                    i.default = l
                }, {
                    "../../../Shader": 44
                }],
                60: [function(e, t, i) {
                    "use strict";

                    function n(e, t, i) {
                        var n = e.shape,
                            r = n.x,
                            l = n.y,
                            u = void 0,
                            c = void 0;
                        if (e.type === a.SHAPES.CIRC ? (u = n.radius, c = n.radius) : (u = n.width, c = n.height), 0 !== u && 0 !== c) {
                            var h = Math.floor(30 * Math.sqrt(n.radius)) || Math.floor(15 * Math.sqrt(n.width + n.height)),
                                p = 2 * Math.PI / h;
                            if (e.fill) {
                                var f = (0, s.hex2rgb)(e.fillColor),
                                    d = e.fillAlpha,
                                    _ = f[0] * d,
                                    m = f[1] * d,
                                    g = f[2] * d,
                                    v = t.points,
                                    y = t.indices,
                                    b = v.length / 6;
                                y.push(b);
                                for (var x = 0; x < h + 1; x++) v.push(r, l, _, m, g, d), v.push(r + Math.sin(p * x) * u, l + Math.cos(p * x) * c, _, m, g, d), y.push(b++, b++);
                                y.push(b - 1)
                            }
                            if (e.lineWidth) {
                                var S = e.points;
                                e.points = [];
                                for (var T = 0; T < h; T++) e.points.push(r + Math.sin(p * -T) * u, l + Math.cos(p * -T) * c);
                                e.points.push(e.points[0], e.points[1]), (0, o.default)(e, t, i), e.points = S
                            }
                        }
                    }
                    i.__esModule = !0, i.default = n;
                    var r = e("./buildLine"),
                        o = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(r),
                        a = e("../../../const"),
                        s = e("../../../utils")
                }, {
                    "../../../const": 46,
                    "../../../utils": 125,
                    "./buildLine": 61
                }],
                61: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        var i = e.points;
                        if (0 !== i.length) {
                            var n = new o.Point(i[0], i[1]),
                                r = new o.Point(i[i.length - 2], i[i.length - 1]);
                            if (n.x === r.x && n.y === r.y) {
                                i = i.slice(), i.pop(), i.pop(), r = new o.Point(i[i.length - 2], i[i.length - 1]);
                                var s = r.x + .5 * (n.x - r.x),
                                    l = r.y + .5 * (n.y - r.y);
                                i.unshift(s, l), i.push(s, l)
                            }
                            var u = t.points,
                                c = t.indices,
                                h = i.length / 2,
                                p = i.length,
                                f = u.length / 6,
                                d = e.lineWidth / 2,
                                _ = (0, a.hex2rgb)(e.lineColor),
                                m = e.lineAlpha,
                                g = _[0] * m,
                                v = _[1] * m,
                                y = _[2] * m,
                                b = i[0],
                                x = i[1],
                                S = i[2],
                                T = i[3],
                                w = 0,
                                E = 0,
                                P = -(x - T),
                                R = b - S,
                                O = 0,
                                A = 0,
                                I = 0,
                                C = 0,
                                M = Math.sqrt(P * P + R * R);
                            P /= M, R /= M, P *= d, R *= d;
                            var D = e.lineAlignment,
                                N = 2 * (1 - D),
                                L = 2 * D;
                            u.push(b - P * N, x - R * N, g, v, y, m), u.push(b + P * L, x + R * L, g, v, y, m);
                            for (var k = 1; k < h - 1; ++k) {
                                b = i[2 * (k - 1)], x = i[2 * (k - 1) + 1], S = i[2 * k], T = i[2 * k + 1], w = i[2 * (k + 1)], E = i[2 * (k + 1) + 1], P = -(x - T), R = b - S, M = Math.sqrt(P * P + R * R), P /= M, R /= M, P *= d, R *= d, O = -(T - E), A = S - w, M = Math.sqrt(O * O + A * A), O /= M, A /= M, O *= d, A *= d;
                                var F = -R + x - (-R + T),
                                    B = -P + S - (-P + b),
                                    G = (-P + b) * (-R + T) - (-P + S) * (-R + x),
                                    U = -A + E - (-A + T),
                                    j = -O + S - (-O + w),
                                    W = (-O + w) * (-A + T) - (-O + S) * (-A + E),
                                    H = F * j - U * B;
                                if (Math.abs(H) < .1) H += 10.1, u.push(S - P * N, T - R * N, g, v, y, m), u.push(S + P * L, T + R * L, g, v, y, m);
                                else {
                                    var X = (B * W - j * G) / H,
                                        z = (U * G - F * W) / H;
                                    (X - S) * (X - S) + (z - T) * (z - T) > 196 * d * d ? (I = P - O, C = R - A, M = Math.sqrt(I * I + C * C), I /= M, C /= M, I *= d, C *= d, u.push(S - I * N, T - C * N), u.push(g, v, y, m), u.push(S + I * L, T + C * L), u.push(g, v, y, m), u.push(S - I * L * N, T - C * N), u.push(g, v, y, m), p++) : (u.push(S + (X - S) * N, T + (z - T) * N), u.push(g, v, y, m), u.push(S - (X - S) * L, T - (z - T) * L), u.push(g, v, y, m))
                                }
                            }
                            b = i[2 * (h - 2)], x = i[2 * (h - 2) + 1], S = i[2 * (h - 1)], T = i[2 * (h - 1) + 1], P = -(x - T), R = b - S, M = Math.sqrt(P * P + R * R), P /= M, R /= M, P *= d, R *= d, u.push(S - P * N, T - R * N), u.push(g, v, y, m), u.push(S + P * L, T + R * L), u.push(g, v, y, m), c.push(f);
                            for (var Y = 0; Y < p; ++Y) c.push(f++);
                            c.push(f - 1)
                        }
                    }

                    function r(e, t) {
                        var i = 0,
                            n = e.points;
                        if (0 !== n.length) {
                            var r = t.points,
                                o = n.length / 2,
                                s = (0, a.hex2rgb)(e.lineColor),
                                l = e.lineAlpha,
                                u = s[0] * l,
                                c = s[1] * l,
                                h = s[2] * l;
                            for (i = 1; i < o; i++) {
                                var p = n[2 * (i - 1)],
                                    f = n[2 * (i - 1) + 1],
                                    d = n[2 * i],
                                    _ = n[2 * i + 1];
                                r.push(p, f), r.push(u, c, h, l), r.push(d, _), r.push(u, c, h, l)
                            }
                        }
                    }
                    i.__esModule = !0, i.default = function(e, t, i) {
                        e.nativeLines ? r(e, i) : n(e, t)
                    };
                    var o = e("../../../math"),
                        a = e("../../../utils")
                }, {
                    "../../../math": 70,
                    "../../../utils": 125
                }],
                62: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t, i) {
                        e.points = e.shape.points.slice();
                        var n = e.points;
                        if (e.fill && n.length >= 6) {
                            for (var r = [], o = e.holes, l = 0; l < o.length; l++) {
                                var c = o[l];
                                r.push(n.length / 2), n = n.concat(c.points)
                            }
                            var h = t.points,
                                p = t.indices,
                                f = n.length / 2,
                                d = (0, s.hex2rgb)(e.fillColor),
                                _ = e.fillAlpha,
                                m = d[0] * _,
                                g = d[1] * _,
                                v = d[2] * _,
                                y = (0, u.default)(n, r, 2);
                            if (!y) return;
                            for (var b = h.length / 6, x = 0; x < y.length; x += 3) p.push(y[x] + b), p.push(y[x] + b), p.push(y[x + 1] + b), p.push(y[x + 2] + b), p.push(y[x + 2] + b);
                            for (var S = 0; S < f; S++) h.push(n[2 * S], n[2 * S + 1], m, g, v, _)
                        }
                        e.lineWidth > 0 && (0, a.default)(e, t, i)
                    }
                    i.__esModule = !0, i.default = r;
                    var o = e("./buildLine"),
                        a = n(o),
                        s = e("../../../utils"),
                        l = e("earcut"),
                        u = n(l)
                }, {
                    "../../../utils": 125,
                    "./buildLine": 61,
                    earcut: 2
                }],
                63: [function(e, t, i) {
                    "use strict";

                    function n(e, t, i) {
                        var n = e.shape,
                            r = n.x,
                            s = n.y,
                            l = n.width,
                            u = n.height;
                        if (e.fill) {
                            var c = (0, a.hex2rgb)(e.fillColor),
                                h = e.fillAlpha,
                                p = c[0] * h,
                                f = c[1] * h,
                                d = c[2] * h,
                                _ = t.points,
                                m = t.indices,
                                g = _.length / 6;
                            _.push(r, s), _.push(p, f, d, h), _.push(r + l, s), _.push(p, f, d, h), _.push(r, s + u), _.push(p, f, d, h), _.push(r + l, s + u), _.push(p, f, d, h), m.push(g, g, g + 1, g + 2, g + 3, g + 3)
                        }
                        if (e.lineWidth) {
                            var v = e.points;
                            e.points = [r, s, r + l, s, r + l, s + u, r, s + u, r, s], (0, o.default)(e, t, i), e.points = v
                        }
                    }
                    i.__esModule = !0, i.default = n;
                    var r = e("./buildLine"),
                        o = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(r),
                        a = e("../../../utils")
                }, {
                    "../../../utils": 125,
                    "./buildLine": 61
                }],
                64: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t, i) {
                        var n = e.shape,
                            r = n.x,
                            o = n.y,
                            s = n.width,
                            u = n.height,
                            p = n.radius,
                            f = [];
                        if (f.push(r + p, o), a(r + s - p, o, r + s, o, r + s, o + p, f), a(r + s, o + u - p, r + s, o + u, r + s - p, o + u, f), a(r + p, o + u, r, o + u, r, o + u - p, f), a(r, o + p, r, o, r + p + 1e-10, o, f), e.fill) {
                            for (var d = (0, h.hex2rgb)(e.fillColor), _ = e.fillAlpha, m = d[0] * _, g = d[1] * _, v = d[2] * _, y = t.points, b = t.indices, x = y.length / 6, S = (0, l.default)(f, null, 2), T = 0, w = S.length; T < w; T += 3) b.push(S[T] + x), b.push(S[T] + x), b.push(S[T + 1] + x), b.push(S[T + 2] + x), b.push(S[T + 2] + x);
                            for (var E = 0, P = f.length; E < P; E++) y.push(f[E], f[++E], m, g, v, _)
                        }
                        if (e.lineWidth) {
                            var R = e.points;
                            e.points = f, (0, c.default)(e, t, i), e.points = R
                        }
                    }

                    function o(e, t, i) {
                        return e + (t - e) * i
                    }

                    function a(e, t, i, n, r, a) {
                        for (var s = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : [], l = s, u = 0, c = 0, h = 0, p = 0, f = 0, d = 0, _ = 0, m = 0; _ <= 20; ++_) m = _ / 20, u = o(e, i, m), c = o(t, n, m), h = o(i, r, m), p = o(n, a, m), f = o(u, h, m), d = o(c, p, m), l.push(f, d);
                        return l
                    }
                    i.__esModule = !0, i.default = r;
                    var s = e("earcut"),
                        l = n(s),
                        u = e("./buildLine"),
                        c = n(u),
                        h = e("../../../utils")
                }, {
                    "../../../utils": 125,
                    "./buildLine": 61,
                    earcut: 2
                }],
                65: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                        return t.default = e, t
                    }

                    function r(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }
                    i.__esModule = !0, i.autoDetectRenderer = i.Application = i.Filter = i.SpriteMaskFilter = i.Quad = i.RenderTarget = i.ObjectRenderer = i.WebGLManager = i.Shader = i.CanvasRenderTarget = i.TextureUvs = i.VideoBaseTexture = i.BaseRenderTexture = i.RenderTexture = i.BaseTexture = i.TextureMatrix = i.Texture = i.Spritesheet = i.CanvasGraphicsRenderer = i.GraphicsRenderer = i.GraphicsData = i.Graphics = i.TextMetrics = i.TextStyle = i.Text = i.SpriteRenderer = i.CanvasTinter = i.CanvasSpriteRenderer = i.Sprite = i.TransformBase = i.TransformStatic = i.Transform = i.Container = i.DisplayObject = i.Bounds = i.glCore = i.WebGLRenderer = i.CanvasRenderer = i.ticker = i.utils = i.settings = void 0;
                    var o = e("./const");
                    Object.keys(o).forEach(function(e) {
                        "default" !== e && "__esModule" !== e && Object.defineProperty(i, e, {
                            enumerable: !0,
                            get: function() {
                                return o[e]
                            }
                        })
                    });
                    var a = e("./math");
                    Object.keys(a).forEach(function(e) {
                        "default" !== e && "__esModule" !== e && Object.defineProperty(i, e, {
                            enumerable: !0,
                            get: function() {
                                return a[e]
                            }
                        })
                    });
                    var s = e("pixi-gl-core");
                    Object.defineProperty(i, "glCore", {
                        enumerable: !0,
                        get: function() {
                            return r(s).default
                        }
                    });
                    var l = e("./display/Bounds");
                    Object.defineProperty(i, "Bounds", {
                        enumerable: !0,
                        get: function() {
                            return r(l).default
                        }
                    });
                    var u = e("./display/DisplayObject");
                    Object.defineProperty(i, "DisplayObject", {
                        enumerable: !0,
                        get: function() {
                            return r(u).default
                        }
                    });
                    var c = e("./display/Container");
                    Object.defineProperty(i, "Container", {
                        enumerable: !0,
                        get: function() {
                            return r(c).default
                        }
                    });
                    var h = e("./display/Transform");
                    Object.defineProperty(i, "Transform", {
                        enumerable: !0,
                        get: function() {
                            return r(h).default
                        }
                    });
                    var p = e("./display/TransformStatic");
                    Object.defineProperty(i, "TransformStatic", {
                        enumerable: !0,
                        get: function() {
                            return r(p).default
                        }
                    });
                    var f = e("./display/TransformBase");
                    Object.defineProperty(i, "TransformBase", {
                        enumerable: !0,
                        get: function() {
                            return r(f).default
                        }
                    });
                    var d = e("./sprites/Sprite");
                    Object.defineProperty(i, "Sprite", {
                        enumerable: !0,
                        get: function() {
                            return r(d).default
                        }
                    });
                    var _ = e("./sprites/canvas/CanvasSpriteRenderer");
                    Object.defineProperty(i, "CanvasSpriteRenderer", {
                        enumerable: !0,
                        get: function() {
                            return r(_).default
                        }
                    });
                    var m = e("./sprites/canvas/CanvasTinter");
                    Object.defineProperty(i, "CanvasTinter", {
                        enumerable: !0,
                        get: function() {
                            return r(m).default
                        }
                    });
                    var g = e("./sprites/webgl/SpriteRenderer");
                    Object.defineProperty(i, "SpriteRenderer", {
                        enumerable: !0,
                        get: function() {
                            return r(g).default
                        }
                    });
                    var v = e("./text/Text");
                    Object.defineProperty(i, "Text", {
                        enumerable: !0,
                        get: function() {
                            return r(v).default
                        }
                    });
                    var y = e("./text/TextStyle");
                    Object.defineProperty(i, "TextStyle", {
                        enumerable: !0,
                        get: function() {
                            return r(y).default
                        }
                    });
                    var b = e("./text/TextMetrics");
                    Object.defineProperty(i, "TextMetrics", {
                        enumerable: !0,
                        get: function() {
                            return r(b).default
                        }
                    });
                    var x = e("./graphics/Graphics");
                    Object.defineProperty(i, "Graphics", {
                        enumerable: !0,
                        get: function() {
                            return r(x).default
                        }
                    });
                    var S = e("./graphics/GraphicsData");
                    Object.defineProperty(i, "GraphicsData", {
                        enumerable: !0,
                        get: function() {
                            return r(S).default
                        }
                    });
                    var T = e("./graphics/webgl/GraphicsRenderer");
                    Object.defineProperty(i, "GraphicsRenderer", {
                        enumerable: !0,
                        get: function() {
                            return r(T).default
                        }
                    });
                    var w = e("./graphics/canvas/CanvasGraphicsRenderer");
                    Object.defineProperty(i, "CanvasGraphicsRenderer", {
                        enumerable: !0,
                        get: function() {
                            return r(w).default
                        }
                    });
                    var E = e("./textures/Spritesheet");
                    Object.defineProperty(i, "Spritesheet", {
                        enumerable: !0,
                        get: function() {
                            return r(E).default
                        }
                    });
                    var P = e("./textures/Texture");
                    Object.defineProperty(i, "Texture", {
                        enumerable: !0,
                        get: function() {
                            return r(P).default
                        }
                    });
                    var R = e("./textures/TextureMatrix");
                    Object.defineProperty(i, "TextureMatrix", {
                        enumerable: !0,
                        get: function() {
                            return r(R).default
                        }
                    });
                    var O = e("./textures/BaseTexture");
                    Object.defineProperty(i, "BaseTexture", {
                        enumerable: !0,
                        get: function() {
                            return r(O).default
                        }
                    });
                    var A = e("./textures/RenderTexture");
                    Object.defineProperty(i, "RenderTexture", {
                        enumerable: !0,
                        get: function() {
                            return r(A).default
                        }
                    });
                    var I = e("./textures/BaseRenderTexture");
                    Object.defineProperty(i, "BaseRenderTexture", {
                        enumerable: !0,
                        get: function() {
                            return r(I).default
                        }
                    });
                    var C = e("./textures/VideoBaseTexture");
                    Object.defineProperty(i, "VideoBaseTexture", {
                        enumerable: !0,
                        get: function() {
                            return r(C).default
                        }
                    });
                    var M = e("./textures/TextureUvs");
                    Object.defineProperty(i, "TextureUvs", {
                        enumerable: !0,
                        get: function() {
                            return r(M).default
                        }
                    });
                    var D = e("./renderers/canvas/utils/CanvasRenderTarget");
                    Object.defineProperty(i, "CanvasRenderTarget", {
                        enumerable: !0,
                        get: function() {
                            return r(D).default
                        }
                    });
                    var N = e("./Shader");
                    Object.defineProperty(i, "Shader", {
                        enumerable: !0,
                        get: function() {
                            return r(N).default
                        }
                    });
                    var L = e("./renderers/webgl/managers/WebGLManager");
                    Object.defineProperty(i, "WebGLManager", {
                        enumerable: !0,
                        get: function() {
                            return r(L).default
                        }
                    });
                    var k = e("./renderers/webgl/utils/ObjectRenderer");
                    Object.defineProperty(i, "ObjectRenderer", {
                        enumerable: !0,
                        get: function() {
                            return r(k).default
                        }
                    });
                    var F = e("./renderers/webgl/utils/RenderTarget");
                    Object.defineProperty(i, "RenderTarget", {
                        enumerable: !0,
                        get: function() {
                            return r(F).default
                        }
                    });
                    var B = e("./renderers/webgl/utils/Quad");
                    Object.defineProperty(i, "Quad", {
                        enumerable: !0,
                        get: function() {
                            return r(B).default
                        }
                    });
                    var G = e("./renderers/webgl/filters/spriteMask/SpriteMaskFilter");
                    Object.defineProperty(i, "SpriteMaskFilter", {
                        enumerable: !0,
                        get: function() {
                            return r(G).default
                        }
                    });
                    var U = e("./renderers/webgl/filters/Filter");
                    Object.defineProperty(i, "Filter", {
                        enumerable: !0,
                        get: function() {
                            return r(U).default
                        }
                    });
                    var j = e("./Application");
                    Object.defineProperty(i, "Application", {
                        enumerable: !0,
                        get: function() {
                            return r(j).default
                        }
                    });
                    var W = e("./autoDetectRenderer");
                    Object.defineProperty(i, "autoDetectRenderer", {
                        enumerable: !0,
                        get: function() {
                            return W.autoDetectRenderer
                        }
                    });
                    var H = e("./utils"),
                        X = n(H),
                        z = e("./ticker"),
                        Y = n(z),
                        V = e("./settings"),
                        q = r(V),
                        J = e("./renderers/canvas/CanvasRenderer"),
                        K = r(J),
                        $ = e("./renderers/webgl/WebGLRenderer"),
                        Q = r($);
                    i.settings = q.default, i.utils = X, i.ticker = Y, i.CanvasRenderer = K.default, i.WebGLRenderer = Q.default
                }, {
                    "./Application": 43,
                    "./Shader": 44,
                    "./autoDetectRenderer": 45,
                    "./const": 46,
                    "./display/Bounds": 47,
                    "./display/Container": 48,
                    "./display/DisplayObject": 49,
                    "./display/Transform": 50,
                    "./display/TransformBase": 51,
                    "./display/TransformStatic": 52,
                    "./graphics/Graphics": 53,
                    "./graphics/GraphicsData": 54,
                    "./graphics/canvas/CanvasGraphicsRenderer": 55,
                    "./graphics/webgl/GraphicsRenderer": 57,
                    "./math": 70,
                    "./renderers/canvas/CanvasRenderer": 77,
                    "./renderers/canvas/utils/CanvasRenderTarget": 79,
                    "./renderers/webgl/WebGLRenderer": 84,
                    "./renderers/webgl/filters/Filter": 86,
                    "./renderers/webgl/filters/spriteMask/SpriteMaskFilter": 89,
                    "./renderers/webgl/managers/WebGLManager": 93,
                    "./renderers/webgl/utils/ObjectRenderer": 94,
                    "./renderers/webgl/utils/Quad": 95,
                    "./renderers/webgl/utils/RenderTarget": 96,
                    "./settings": 101,
                    "./sprites/Sprite": 102,
                    "./sprites/canvas/CanvasSpriteRenderer": 103,
                    "./sprites/canvas/CanvasTinter": 104,
                    "./sprites/webgl/SpriteRenderer": 106,
                    "./text/Text": 108,
                    "./text/TextMetrics": 109,
                    "./text/TextStyle": 110,
                    "./textures/BaseRenderTexture": 111,
                    "./textures/BaseTexture": 112,
                    "./textures/RenderTexture": 113,
                    "./textures/Spritesheet": 114,
                    "./textures/Texture": 115,
                    "./textures/TextureMatrix": 116,
                    "./textures/TextureUvs": 117,
                    "./textures/VideoBaseTexture": 118,
                    "./ticker": 121,
                    "./utils": 125,
                    "pixi-gl-core": 15
                }],
                66: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e < 0 ? -1 : e > 0 ? 1 : 0
                    }
                    i.__esModule = !0;
                    var r = e("./Matrix"),
                        o = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(r),
                        a = [1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1, 0, 1],
                        s = [0, 1, 1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1],
                        l = [0, -1, -1, -1, 0, 1, 1, 1, 0, 1, 1, 1, 0, -1, -1, -1],
                        u = [1, 1, 0, -1, -1, -1, 0, 1, -1, -1, 0, 1, 1, 1, 0, -1],
                        c = [],
                        h = [];
                    ! function() {
                        for (var e = 0; e < 16; e++) {
                            var t = [];
                            h.push(t);
                            for (var i = 0; i < 16; i++)
                                for (var r = n(a[e] * a[i] + l[e] * s[i]), p = n(s[e] * a[i] + u[e] * s[i]), f = n(a[e] * l[i] + l[e] * u[i]), d = n(s[e] * l[i] + u[e] * u[i]), _ = 0; _ < 16; _++)
                                    if (a[_] === r && s[_] === p && l[_] === f && u[_] === d) {
                                        t.push(_);
                                        break
                                    }
                        }
                        for (var m = 0; m < 16; m++) {
                            var g = new o.default;
                            g.set(a[m], s[m], l[m], u[m], 0, 0), c.push(g)
                        }
                    }();
                    var p = {
                        E: 0,
                        SE: 1,
                        S: 2,
                        SW: 3,
                        W: 4,
                        NW: 5,
                        N: 6,
                        NE: 7,
                        MIRROR_VERTICAL: 8,
                        MIRROR_HORIZONTAL: 12,
                        uX: function(e) {
                            return a[e]
                        },
                        uY: function(e) {
                            return s[e]
                        },
                        vX: function(e) {
                            return l[e]
                        },
                        vY: function(e) {
                            return u[e]
                        },
                        inv: function(e) {
                            return 8 & e ? 15 & e : 7 & -e
                        },
                        add: function(e, t) {
                            return h[e][t]
                        },
                        sub: function(e, t) {
                            return h[e][p.inv(t)]
                        },
                        rotate180: function(e) {
                            return 4 ^ e
                        },
                        isVertical: function(e) {
                            return 2 == (3 & e)
                        },
                        byDirection: function(e, t) {
                            return 2 * Math.abs(e) <= Math.abs(t) ? t >= 0 ? p.S : p.N : 2 * Math.abs(t) <= Math.abs(e) ? e > 0 ? p.E : p.W : t > 0 ? e > 0 ? p.SE : p.SW : e > 0 ? p.NE : p.NW
                        },
                        matrixAppendRotationInv: function(e, t) {
                            var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0,
                                n = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0,
                                r = c[p.inv(t)];
                            r.tx = i, r.ty = n, e.append(r)
                        }
                    };
                    i.default = p
                }, {
                    "./Matrix": 67
                }],
                67: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        o = e("./Point"),
                        a = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(o),
                        s = e("../const"),
                        l = function() {
                            function e() {
                                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1,
                                    i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0,
                                    r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0,
                                    o = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 1,
                                    a = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 0,
                                    s = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : 0;
                                n(this, e), this.a = t, this.b = i, this.c = r, this.d = o, this.tx = a, this.ty = s, this.array = null
                            }
                            return e.prototype.fromArray = function(e) {
                                this.a = e[0], this.b = e[1], this.c = e[3], this.d = e[4], this.tx = e[2], this.ty = e[5]
                            }, e.prototype.set = function(e, t, i, n, r, o) {
                                return this.a = e, this.b = t, this.c = i, this.d = n, this.tx = r, this.ty = o, this
                            }, e.prototype.toArray = function(e, t) {
                                this.array || (this.array = new Float32Array(9));
                                var i = t || this.array;
                                return e ? (i[0] = this.a, i[1] = this.b, i[2] = 0, i[3] = this.c, i[4] = this.d, i[5] = 0, i[6] = this.tx, i[7] = this.ty, i[8] = 1) : (i[0] = this.a, i[1] = this.c, i[2] = this.tx, i[3] = this.b, i[4] = this.d, i[5] = this.ty, i[6] = 0, i[7] = 0, i[8] = 1), i
                            }, e.prototype.apply = function(e, t) {
                                t = t || new a.default;
                                var i = e.x,
                                    n = e.y;
                                return t.x = this.a * i + this.c * n + this.tx, t.y = this.b * i + this.d * n + this.ty, t
                            }, e.prototype.applyInverse = function(e, t) {
                                t = t || new a.default;
                                var i = 1 / (this.a * this.d + this.c * -this.b),
                                    n = e.x,
                                    r = e.y;
                                return t.x = this.d * i * n + -this.c * i * r + (this.ty * this.c - this.tx * this.d) * i, t.y = this.a * i * r + -this.b * i * n + (-this.ty * this.a + this.tx * this.b) * i, t
                            }, e.prototype.translate = function(e, t) {
                                return this.tx += e, this.ty += t, this
                            }, e.prototype.scale = function(e, t) {
                                return this.a *= e, this.d *= t, this.c *= e, this.b *= t, this.tx *= e, this.ty *= t, this
                            }, e.prototype.rotate = function(e) {
                                var t = Math.cos(e),
                                    i = Math.sin(e),
                                    n = this.a,
                                    r = this.c,
                                    o = this.tx;
                                return this.a = n * t - this.b * i, this.b = n * i + this.b * t, this.c = r * t - this.d * i, this.d = r * i + this.d * t, this.tx = o * t - this.ty * i, this.ty = o * i + this.ty * t, this
                            }, e.prototype.append = function(e) {
                                var t = this.a,
                                    i = this.b,
                                    n = this.c,
                                    r = this.d;
                                return this.a = e.a * t + e.b * n, this.b = e.a * i + e.b * r, this.c = e.c * t + e.d * n, this.d = e.c * i + e.d * r, this.tx = e.tx * t + e.ty * n + this.tx, this.ty = e.tx * i + e.ty * r + this.ty, this
                            }, e.prototype.setTransform = function(e, t, i, n, r, o, a, s, l) {
                                return this.a = Math.cos(a + l) * r, this.b = Math.sin(a + l) * r, this.c = -Math.sin(a - s) * o, this.d = Math.cos(a - s) * o, this.tx = e - (i * this.a + n * this.c), this.ty = t - (i * this.b + n * this.d), this
                            }, e.prototype.prepend = function(e) {
                                var t = this.tx;
                                if (1 !== e.a || 0 !== e.b || 0 !== e.c || 1 !== e.d) {
                                    var i = this.a,
                                        n = this.c;
                                    this.a = i * e.a + this.b * e.c, this.b = i * e.b + this.b * e.d, this.c = n * e.a + this.d * e.c, this.d = n * e.b + this.d * e.d
                                }
                                return this.tx = t * e.a + this.ty * e.c + e.tx, this.ty = t * e.b + this.ty * e.d + e.ty, this
                            }, e.prototype.decompose = function(e) {
                                var t = this.a,
                                    i = this.b,
                                    n = this.c,
                                    r = this.d,
                                    o = -Math.atan2(-n, r),
                                    a = Math.atan2(i, t),
                                    l = Math.abs(o + a);
                                return l < 1e-5 || Math.abs(s.PI_2 - l) < 1e-5 ? (e.rotation = a, e.skew.x = e.skew.y = 0) : (e.rotation = 0, e.skew.x = o, e.skew.y = a), e.scale.x = Math.sqrt(t * t + i * i), e.scale.y = Math.sqrt(n * n + r * r), e.position.x = this.tx, e.position.y = this.ty, e
                            }, e.prototype.invert = function() {
                                var e = this.a,
                                    t = this.b,
                                    i = this.c,
                                    n = this.d,
                                    r = this.tx,
                                    o = e * n - t * i;
                                return this.a = n / o, this.b = -t / o, this.c = -i / o, this.d = e / o, this.tx = (i * this.ty - n * r) / o, this.ty = -(e * this.ty - t * r) / o, this
                            }, e.prototype.identity = function() {
                                return this.a = 1, this.b = 0, this.c = 0, this.d = 1, this.tx = 0, this.ty = 0, this
                            }, e.prototype.clone = function() {
                                var t = new e;
                                return t.a = this.a, t.b = this.b, t.c = this.c, t.d = this.d, t.tx = this.tx, t.ty = this.ty, t
                            }, e.prototype.copy = function(e) {
                                return e.a = this.a, e.b = this.b, e.c = this.c, e.d = this.d, e.tx = this.tx, e.ty = this.ty, e
                            }, r(e, null, [{
                                key: "IDENTITY",
                                get: function() {
                                    return new e
                                }
                            }, {
                                key: "TEMP_MATRIX",
                                get: function() {
                                    return new e
                                }
                            }]), e
                        }();
                    i.default = l
                }, {
                    "../const": 46,
                    "./Point": 69
                }],
                68: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        o = function() {
                            function e(t, i) {
                                var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0,
                                    o = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0;
                                n(this, e), this._x = r, this._y = o, this.cb = t, this.scope = i
                            }
                            return e.prototype.clone = function() {
                                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null,
                                    i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;
                                return new e(t || this.cb, i || this.scope, this._x, this._y)
                            }, e.prototype.set = function(e, t) {
                                var i = e || 0,
                                    n = t || (0 !== t ? i : 0);
                                this._x === i && this._y === n || (this._x = i, this._y = n, this.cb.call(this.scope))
                            }, e.prototype.copy = function(e) {
                                this._x === e.x && this._y === e.y || (this._x = e.x, this._y = e.y, this.cb.call(this.scope))
                            }, e.prototype.equals = function(e) {
                                return e.x === this._x && e.y === this._y
                            }, r(e, [{
                                key: "x",
                                get: function() {
                                    return this._x
                                },
                                set: function(e) {
                                    this._x !== e && (this._x = e, this.cb.call(this.scope))
                                }
                            }, {
                                key: "y",
                                get: function() {
                                    return this._y
                                },
                                set: function(e) {
                                    this._y !== e && (this._y = e, this.cb.call(this.scope))
                                }
                            }]), e
                        }();
                    i.default = o
                }, {}],
                69: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = function() {
                        function e() {
                            var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,
                                i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;
                            n(this, e), this.x = t, this.y = i
                        }
                        return e.prototype.clone = function() {
                            return new e(this.x, this.y)
                        }, e.prototype.copy = function(e) {
                            this.set(e.x, e.y)
                        }, e.prototype.equals = function(e) {
                            return e.x === this.x && e.y === this.y
                        }, e.prototype.set = function(e, t) {
                            this.x = e || 0, this.y = t || (0 !== t ? this.x : 0)
                        }, e
                    }();
                    i.default = r
                }, {}],
                70: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }
                    i.__esModule = !0;
                    var r = e("./Point");
                    Object.defineProperty(i, "Point", {
                        enumerable: !0,
                        get: function() {
                            return n(r).default
                        }
                    });
                    var o = e("./ObservablePoint");
                    Object.defineProperty(i, "ObservablePoint", {
                        enumerable: !0,
                        get: function() {
                            return n(o).default
                        }
                    });
                    var a = e("./Matrix");
                    Object.defineProperty(i, "Matrix", {
                        enumerable: !0,
                        get: function() {
                            return n(a).default
                        }
                    });
                    var s = e("./GroupD8");
                    Object.defineProperty(i, "GroupD8", {
                        enumerable: !0,
                        get: function() {
                            return n(s).default
                        }
                    });
                    var l = e("./shapes/Circle");
                    Object.defineProperty(i, "Circle", {
                        enumerable: !0,
                        get: function() {
                            return n(l).default
                        }
                    });
                    var u = e("./shapes/Ellipse");
                    Object.defineProperty(i, "Ellipse", {
                        enumerable: !0,
                        get: function() {
                            return n(u).default
                        }
                    });
                    var c = e("./shapes/Polygon");
                    Object.defineProperty(i, "Polygon", {
                        enumerable: !0,
                        get: function() {
                            return n(c).default
                        }
                    });
                    var h = e("./shapes/Rectangle");
                    Object.defineProperty(i, "Rectangle", {
                        enumerable: !0,
                        get: function() {
                            return n(h).default
                        }
                    });
                    var p = e("./shapes/RoundedRectangle");
                    Object.defineProperty(i, "RoundedRectangle", {
                        enumerable: !0,
                        get: function() {
                            return n(p).default
                        }
                    })
                }, {
                    "./GroupD8": 66,
                    "./Matrix": 67,
                    "./ObservablePoint": 68,
                    "./Point": 69,
                    "./shapes/Circle": 71,
                    "./shapes/Ellipse": 72,
                    "./shapes/Polygon": 73,
                    "./shapes/Rectangle": 74,
                    "./shapes/RoundedRectangle": 75
                }],
                71: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = e("./Rectangle"),
                        o = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(r),
                        a = e("../../const"),
                        s = function() {
                            function e() {
                                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,
                                    i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0,
                                    r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0;
                                n(this, e), this.x = t, this.y = i, this.radius = r, this.type = a.SHAPES.CIRC
                            }
                            return e.prototype.clone = function() {
                                return new e(this.x, this.y, this.radius)
                            }, e.prototype.contains = function(e, t) {
                                if (this.radius <= 0) return !1;
                                var i = this.radius * this.radius,
                                    n = this.x - e,
                                    r = this.y - t;
                                return n *= n, r *= r, n + r <= i
                            }, e.prototype.getBounds = function() {
                                return new o.default(this.x - this.radius, this.y - this.radius, 2 * this.radius, 2 * this.radius)
                            }, e
                        }();
                    i.default = s
                }, {
                    "../../const": 46,
                    "./Rectangle": 74
                }],
                72: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = e("./Rectangle"),
                        o = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(r),
                        a = e("../../const"),
                        s = function() {
                            function e() {
                                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,
                                    i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0,
                                    r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0,
                                    o = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0;
                                n(this, e), this.x = t, this.y = i, this.width = r, this.height = o, this.type = a.SHAPES.ELIP
                            }
                            return e.prototype.clone = function() {
                                return new e(this.x, this.y, this.width, this.height)
                            }, e.prototype.contains = function(e, t) {
                                if (this.width <= 0 || this.height <= 0) return !1;
                                var i = (e - this.x) / this.width,
                                    n = (t - this.y) / this.height;
                                return i *= i, n *= n, i + n <= 1
                            }, e.prototype.getBounds = function() {
                                return new o.default(this.x - this.width, this.y - this.height, this.width, this.height)
                            }, e
                        }();
                    i.default = s
                }, {
                    "../../const": 46,
                    "./Rectangle": 74
                }],
                73: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = e("../Point"),
                        o = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(r),
                        a = e("../../const"),
                        s = function() {
                            function e() {
                                for (var t = arguments.length, i = Array(t), r = 0; r < t; r++) i[r] = arguments[r];
                                if (n(this, e), Array.isArray(i[0]) && (i = i[0]), i[0] instanceof o.default) {
                                    for (var s = [], l = 0, u = i.length; l < u; l++) s.push(i[l].x, i[l].y);
                                    i = s
                                }
                                this.closed = !0, this.points = i, this.type = a.SHAPES.POLY
                            }
                            return e.prototype.clone = function() {
                                return new e(this.points.slice())
                            }, e.prototype.close = function() {
                                var e = this.points;
                                e[0] === e[e.length - 2] && e[1] === e[e.length - 1] || e.push(e[0], e[1])
                            }, e.prototype.contains = function(e, t) {
                                for (var i = !1, n = this.points.length / 2, r = 0, o = n - 1; r < n; o = r++) {
                                    var a = this.points[2 * r],
                                        s = this.points[2 * r + 1],
                                        l = this.points[2 * o],
                                        u = this.points[2 * o + 1];
                                    s > t != u > t && e < (t - s) / (u - s) * (l - a) + a && (i = !i)
                                }
                                return i
                            }, e
                        }();
                    i.default = s
                }, {
                    "../../const": 46,
                    "../Point": 69
                }],
                74: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        o = e("../../const"),
                        a = function() {
                            function e() {
                                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,
                                    i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0,
                                    r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0,
                                    a = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0;
                                n(this, e), this.x = Number(t), this.y = Number(i), this.width = Number(r), this.height = Number(a), this.type = o.SHAPES.RECT
                            }
                            return e.prototype.clone = function() {
                                return new e(this.x, this.y, this.width, this.height)
                            }, e.prototype.copy = function(e) {
                                return this.x = e.x, this.y = e.y, this.width = e.width, this.height = e.height, this
                            }, e.prototype.contains = function(e, t) {
                                return !(this.width <= 0 || this.height <= 0) && e >= this.x && e < this.x + this.width && t >= this.y && t < this.y + this.height
                            }, e.prototype.pad = function(e, t) {
                                e = e || 0, t = t || (0 !== t ? e : 0), this.x -= e, this.y -= t, this.width += 2 * e, this.height += 2 * t
                            }, e.prototype.fit = function(e) {
                                var t = Math.max(this.x, e.x),
                                    i = Math.min(this.x + this.width, e.x + e.width),
                                    n = Math.max(this.y, e.y),
                                    r = Math.min(this.y + this.height, e.y + e.height);
                                this.x = t, this.width = Math.max(i - t, 0), this.y = n, this.height = Math.max(r - n, 0)
                            }, e.prototype.enlarge = function(e) {
                                var t = Math.min(this.x, e.x),
                                    i = Math.max(this.x + this.width, e.x + e.width),
                                    n = Math.min(this.y, e.y),
                                    r = Math.max(this.y + this.height, e.y + e.height);
                                this.x = t, this.width = i - t, this.y = n, this.height = r - n
                            }, e.prototype.ceil = function() {
                                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1,
                                    t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : .001,
                                    i = Math.ceil((this.x + this.width - t) * e) / e,
                                    n = Math.ceil((this.y + this.height - t) * e) / e;
                                this.x = Math.floor((this.x + t) * e) / e, this.y = Math.floor((this.y + t) * e) / e, this.width = i - this.x, this.height = n - this.y
                            }, r(e, [{
                                key: "left",
                                get: function() {
                                    return this.x
                                }
                            }, {
                                key: "right",
                                get: function() {
                                    return this.x + this.width
                                }
                            }, {
                                key: "top",
                                get: function() {
                                    return this.y
                                }
                            }, {
                                key: "bottom",
                                get: function() {
                                    return this.y + this.height
                                }
                            }], [{
                                key: "EMPTY",
                                get: function() {
                                    return new e(0, 0, 0, 0)
                                }
                            }]), e
                        }();
                    i.default = a
                }, {
                    "../../const": 46
                }],
                75: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = e("../../const"),
                        o = function() {
                            function e() {
                                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,
                                    i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0,
                                    o = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0,
                                    a = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0,
                                    s = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 20;
                                n(this, e), this.x = t, this.y = i, this.width = o, this.height = a, this.radius = s, this.type = r.SHAPES.RREC
                            }
                            return e.prototype.clone = function() {
                                return new e(this.x, this.y, this.width, this.height, this.radius)
                            }, e.prototype.contains = function(e, t) {
                                if (this.width <= 0 || this.height <= 0) return !1;
                                if (e >= this.x && e <= this.x + this.width && t >= this.y && t <= this.y + this.height) {
                                    if (t >= this.y + this.radius && t <= this.y + this.height - this.radius || e >= this.x + this.radius && e <= this.x + this.width - this.radius) return !0;
                                    var i = e - (this.x + this.radius),
                                        n = t - (this.y + this.radius),
                                        r = this.radius * this.radius;
                                    if (i * i + n * n <= r) return !0;
                                    if ((i = e - (this.x + this.width - this.radius)) * i + n * n <= r) return !0;
                                    if (n = t - (this.y + this.height - this.radius), i * i + n * n <= r) return !0;
                                    if ((i = e - (this.x + this.radius)) * i + n * n <= r) return !0
                                }
                                return !1
                            }, e
                        }();
                    i.default = o
                }, {
                    "../../const": 46
                }],
                76: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function a(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var s = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        l = e("../utils"),
                        u = e("../math"),
                        c = e("../const"),
                        h = e("../settings"),
                        p = n(h),
                        f = e("../display/Container"),
                        d = n(f),
                        _ = e("../textures/RenderTexture"),
                        m = n(_),
                        g = e("eventemitter3"),
                        v = n(g),
                        y = new u.Matrix,
                        b = function(e) {
                            function t(i, n, a, s) {
                                r(this, t);
                                var h = o(this, e.call(this));
                                return (0, l.sayHello)(i), "number" == typeof n && (n = Object.assign({
                                    width: n,
                                    height: a || p.default.RENDER_OPTIONS.height
                                }, s)), n = Object.assign({}, p.default.RENDER_OPTIONS, n), h.options = n, h.type = c.RENDERER_TYPE.UNKNOWN, h.screen = new u.Rectangle(0, 0, n.width, n.height), h.view = n.view || document.createElement("canvas"), h.resolution = n.resolution || p.default.RESOLUTION, h.transparent = n.transparent, h.autoResize = n.autoResize || !1, h.blendModes = null, h.preserveDrawingBuffer = n.preserveDrawingBuffer, h.clearBeforeRender = n.clearBeforeRender, h.roundPixels = n.roundPixels, h._backgroundColor = 0, h._backgroundColorRgba = [0, 0, 0, 0], h._backgroundColorString = "#000000", h.backgroundColor = n.backgroundColor || h._backgroundColor, h._tempDisplayObjectParent = new d.default, h._lastObjectRendered = h._tempDisplayObjectParent, h
                            }
                            return a(t, e), t.prototype.resize = function(e, t) {
                                this.screen.width = e, this.screen.height = t, this.view.width = e * this.resolution, this.view.height = t * this.resolution, this.autoResize && (this.view.style.width = e + "px", this.view.style.height = t + "px")
                            }, t.prototype.generateTexture = function(e, t, i, n) {
                                n = n || e.getLocalBounds();
                                var r = m.default.create(0 | n.width, 0 | n.height, t, i);
                                return y.tx = -n.x, y.ty = -n.y, this.render(e, r, !1, y, !!e.parent), r
                            }, t.prototype.destroy = function(e) {
                                e && this.view.parentNode && this.view.parentNode.removeChild(this.view), this.type = c.RENDERER_TYPE.UNKNOWN, this.view = null, this.screen = null, this.resolution = 0, this.transparent = !1, this.autoResize = !1, this.blendModes = null, this.options = null, this.preserveDrawingBuffer = !1, this.clearBeforeRender = !1, this.roundPixels = !1, this._backgroundColor = 0, this._backgroundColorRgba = null, this._backgroundColorString = null, this._tempDisplayObjectParent = null, this._lastObjectRendered = null
                            }, s(t, [{
                                key: "width",
                                get: function() {
                                    return this.view.width
                                }
                            }, {
                                key: "height",
                                get: function() {
                                    return this.view.height
                                }
                            }, {
                                key: "backgroundColor",
                                get: function() {
                                    return this._backgroundColor
                                },
                                set: function(e) {
                                    this._backgroundColor = e, this._backgroundColorString = (0, l.hex2string)(e), (0, l.hex2rgb)(e, this._backgroundColorRgba)
                                }
                            }]), t
                        }(v.default);
                    i.default = b
                }, {
                    "../const": 46,
                    "../display/Container": 48,
                    "../math": 70,
                    "../settings": 101,
                    "../textures/RenderTexture": 113,
                    "../utils": 125,
                    eventemitter3: 3
                }],
                77: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function a(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var s = e("../SystemRenderer"),
                        l = n(s),
                        u = e("./utils/CanvasMaskManager"),
                        c = n(u),
                        h = e("./utils/CanvasRenderTarget"),
                        p = n(h),
                        f = e("./utils/mapCanvasBlendModesToPixi"),
                        d = n(f),
                        _ = e("../../utils"),
                        m = e("../../const"),
                        g = e("../../settings"),
                        v = n(g),
                        y = function(e) {
                            function t(i, n, a) {
                                r(this, t);
                                var s = o(this, e.call(this, "Canvas", i, n, a));
                                return s.type = m.RENDERER_TYPE.CANVAS, s.rootContext = s.view.getContext("2d", {
                                    alpha: s.transparent
                                }), s.context = s.rootContext, s.refresh = !0, s.maskManager = new c.default(s), s.smoothProperty = "imageSmoothingEnabled", s.rootContext.imageSmoothingEnabled || (s.rootContext.webkitImageSmoothingEnabled ? s.smoothProperty = "webkitImageSmoothingEnabled" : s.rootContext.mozImageSmoothingEnabled ? s.smoothProperty = "mozImageSmoothingEnabled" : s.rootContext.oImageSmoothingEnabled ? s.smoothProperty = "oImageSmoothingEnabled" : s.rootContext.msImageSmoothingEnabled && (s.smoothProperty = "msImageSmoothingEnabled")), s.initPlugins(), s.blendModes = (0, d.default)(), s._activeBlendMode = null, s.renderingToScreen = !1, s.resize(s.options.width, s.options.height), s
                            }
                            return a(t, e), t.prototype.render = function(e, t, i, n, r) {
                                if (this.view) {
                                    this.renderingToScreen = !t, this.emit("prerender");
                                    var o = this.resolution;
                                    t ? (t = t.baseTexture || t, t._canvasRenderTarget || (t._canvasRenderTarget = new p.default(t.width, t.height, t.resolution), t.source = t._canvasRenderTarget.canvas, t.valid = !0), this.context = t._canvasRenderTarget.context, this.resolution = t._canvasRenderTarget.resolution) : this.context = this.rootContext;
                                    var a = this.context;
                                    if (t || (this._lastObjectRendered = e), !r) {
                                        var s = e.parent,
                                            l = this._tempDisplayObjectParent.transform.worldTransform;
                                        n ? (n.copy(l), this._tempDisplayObjectParent.transform._worldID = -1) : l.identity(), e.parent = this._tempDisplayObjectParent, e.updateTransform(), e.parent = s
                                    }
                                    a.save(), a.setTransform(1, 0, 0, 1, 0, 0), a.globalAlpha = 1, this._activeBlendMode = m.BLEND_MODES.NORMAL, a.globalCompositeOperation = this.blendModes[m.BLEND_MODES.NORMAL], navigator.isCocoonJS && this.view.screencanvas && (a.fillStyle = "black", a.clear()), (void 0 !== i ? i : this.clearBeforeRender) && this.renderingToScreen && (this.transparent ? a.clearRect(0, 0, this.width, this.height) : (a.fillStyle = this._backgroundColorString, a.fillRect(0, 0, this.width, this.height)));
                                    var u = this.context;
                                    this.context = a, e.renderCanvas(this), this.context = u, a.restore(), this.resolution = o, this.emit("postrender")
                                }
                            }, t.prototype.clear = function(e) {
                                var t = this.context;
                                e = e || this._backgroundColorString, !this.transparent && e ? (t.fillStyle = e, t.fillRect(0, 0, this.width, this.height)) : t.clearRect(0, 0, this.width, this.height)
                            }, t.prototype.setBlendMode = function(e) {
                                this._activeBlendMode !== e && (this._activeBlendMode = e, this.context.globalCompositeOperation = this.blendModes[e])
                            }, t.prototype.destroy = function(t) {
                                this.destroyPlugins(), e.prototype.destroy.call(this, t), this.context = null, this.refresh = !0, this.maskManager.destroy(), this.maskManager = null, this.smoothProperty = null
                            }, t.prototype.resize = function(t, i) {
                                e.prototype.resize.call(this, t, i), this.smoothProperty && (this.rootContext[this.smoothProperty] = v.default.SCALE_MODE === m.SCALE_MODES.LINEAR)
                            }, t.prototype.invalidateBlendMode = function() {
                                this._activeBlendMode = this.blendModes.indexOf(this.context.globalCompositeOperation)
                            }, t
                        }(l.default);
                    i.default = y, _.pluginTarget.mixin(y)
                }, {
                    "../../const": 46,
                    "../../settings": 101,
                    "../../utils": 125,
                    "../SystemRenderer": 76,
                    "./utils/CanvasMaskManager": 78,
                    "./utils/CanvasRenderTarget": 79,
                    "./utils/mapCanvasBlendModesToPixi": 81
                }],
                78: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = e("../../../const"),
                        o = function() {
                            function e(t) {
                                n(this, e), this.renderer = t
                            }
                            return e.prototype.pushMask = function(e) {
                                var t = this.renderer;
                                t.context.save();
                                var i = e.alpha,
                                    n = e.transform.worldTransform,
                                    r = t.resolution;
                                t.context.setTransform(n.a * r, n.b * r, n.c * r, n.d * r, n.tx * r, n.ty * r), e._texture || (this.renderGraphicsShape(e), t.context.clip()), e.worldAlpha = i
                            }, e.prototype.renderGraphicsShape = function(e) {
                                var t = this.renderer.context,
                                    i = e.graphicsData.length;
                                if (0 !== i) {
                                    t.beginPath();
                                    for (var n = 0; n < i; n++) {
                                        var o = e.graphicsData[n],
                                            a = o.shape;
                                        if (o.type === r.SHAPES.POLY) {
                                            var s = a.points,
                                                l = o.holes,
                                                u = void 0,
                                                c = void 0;
                                            t.moveTo(s[0], s[1]);
                                            for (var h = 2; h < s.length; h += 2) t.lineTo(s[h], s[h + 1]);
                                            if (s[0] === s[s.length - 2] && s[1] === s[s.length - 1] && t.closePath(), l.length > 0) {
                                                u = 0;
                                                for (var p = 0; p < s.length; p += 2) u += s[p] * s[p + 3] - s[p + 1] * s[p + 2];
                                                for (var f = 0; f < l.length; f++) {
                                                    s = l[f].points, c = 0;
                                                    for (var d = 0; d < s.length; d += 2) c += s[d] * s[d + 3] - s[d + 1] * s[d + 2];
                                                    if (t.moveTo(s[0], s[1]), c * u < 0)
                                                        for (var _ = 2; _ < s.length; _ += 2) t.lineTo(s[_], s[_ + 1]);
                                                    else
                                                        for (var m = s.length - 2; m >= 2; m -= 2) t.lineTo(s[m], s[m + 1])
                                                }
                                            }
                                        } else if (o.type === r.SHAPES.RECT) t.rect(a.x, a.y, a.width, a.height), t.closePath();
                                        else if (o.type === r.SHAPES.CIRC) t.arc(a.x, a.y, a.radius, 0, 2 * Math.PI), t.closePath();
                                        else if (o.type === r.SHAPES.ELIP) {
                                            var g = 2 * a.width,
                                                v = 2 * a.height,
                                                y = a.x - g / 2,
                                                b = a.y - v / 2,
                                                x = g / 2 * .5522848,
                                                S = v / 2 * .5522848,
                                                T = y + g,
                                                w = b + v,
                                                E = y + g / 2,
                                                P = b + v / 2;
                                            t.moveTo(y, P), t.bezierCurveTo(y, P - S, E - x, b, E, b), t.bezierCurveTo(E + x, b, T, P - S, T, P), t.bezierCurveTo(T, P + S, E + x, w, E, w), t.bezierCurveTo(E - x, w, y, P + S, y, P), t.closePath()
                                        } else if (o.type === r.SHAPES.RREC) {
                                            var R = a.x,
                                                O = a.y,
                                                A = a.width,
                                                I = a.height,
                                                C = a.radius,
                                                M = Math.min(A, I) / 2 | 0;
                                            C = C > M ? M : C, t.moveTo(R, O + C), t.lineTo(R, O + I - C), t.quadraticCurveTo(R, O + I, R + C, O + I), t.lineTo(R + A - C, O + I), t.quadraticCurveTo(R + A, O + I, R + A, O + I - C), t.lineTo(R + A, O + C), t.quadraticCurveTo(R + A, O, R + A - C, O), t.lineTo(R + C, O), t.quadraticCurveTo(R, O, R, O + C), t.closePath()
                                        }
                                    }
                                }
                            }, e.prototype.popMask = function(e) {
                                e.context.restore(), e.invalidateBlendMode()
                            }, e.prototype.destroy = function() {}, e
                        }();
                    i.default = o
                }, {
                    "../../../const": 46
                }],
                79: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        o = e("../../../settings"),
                        a = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(o),
                        s = function() {
                            function e(t, i, r) {
                                n(this, e), this.canvas = document.createElement("canvas"), this.context = this.canvas.getContext("2d"), this.resolution = r || a.default.RESOLUTION, this.resize(t, i)
                            }
                            return e.prototype.clear = function() {
                                this.context.setTransform(1, 0, 0, 1, 0, 0), this.context.clearRect(0, 0, this.canvas.width, this.canvas.height)
                            }, e.prototype.resize = function(e, t) {
                                this.canvas.width = e * this.resolution, this.canvas.height = t * this.resolution
                            }, e.prototype.destroy = function() {
                                this.context = null, this.canvas = null
                            }, r(e, [{
                                key: "width",
                                get: function() {
                                    return this.canvas.width
                                },
                                set: function(e) {
                                    this.canvas.width = e
                                }
                            }, {
                                key: "height",
                                get: function() {
                                    return this.canvas.height
                                },
                                set: function(e) {
                                    this.canvas.height = e
                                }
                            }]), e
                        }();
                    i.default = s
                }, {
                    "../../../settings": 101
                }],
                80: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        var t = document.createElement("canvas");
                        t.width = 6, t.height = 1;
                        var i = t.getContext("2d");
                        return i.fillStyle = e, i.fillRect(0, 0, 6, 1), t
                    }

                    function r() {
                        if ("undefined" == typeof document) return !1;
                        var e = n("#ff00ff"),
                            t = n("#ffff00"),
                            i = document.createElement("canvas");
                        i.width = 6, i.height = 1;
                        var r = i.getContext("2d");
                        r.globalCompositeOperation = "multiply", r.drawImage(e, 0, 0), r.drawImage(t, 2, 0);
                        var o = r.getImageData(2, 0, 1, 1);
                        if (!o) return !1;
                        var a = o.data;
                        return 255 === a[0] && 0 === a[1] && 0 === a[2]
                    }
                    i.__esModule = !0, i.default = r
                }, {}],
                81: [function(e, t, i) {
                    "use strict";

                    function n() {
                        var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];
                        return (0, a.default)() ? (e[r.BLEND_MODES.NORMAL] = "source-over", e[r.BLEND_MODES.ADD] = "lighter", e[r.BLEND_MODES.MULTIPLY] = "multiply", e[r.BLEND_MODES.SCREEN] = "screen", e[r.BLEND_MODES.OVERLAY] = "overlay", e[r.BLEND_MODES.DARKEN] = "darken", e[r.BLEND_MODES.LIGHTEN] = "lighten", e[r.BLEND_MODES.COLOR_DODGE] = "color-dodge", e[r.BLEND_MODES.COLOR_BURN] = "color-burn", e[r.BLEND_MODES.HARD_LIGHT] = "hard-light", e[r.BLEND_MODES.SOFT_LIGHT] = "soft-light", e[r.BLEND_MODES.DIFFERENCE] = "difference", e[r.BLEND_MODES.EXCLUSION] = "exclusion", e[r.BLEND_MODES.HUE] = "hue", e[r.BLEND_MODES.SATURATION] = "saturate", e[r.BLEND_MODES.COLOR] = "color", e[r.BLEND_MODES.LUMINOSITY] = "luminosity") : (e[r.BLEND_MODES.NORMAL] = "source-over", e[r.BLEND_MODES.ADD] = "lighter", e[r.BLEND_MODES.MULTIPLY] = "source-over", e[r.BLEND_MODES.SCREEN] = "source-over", e[r.BLEND_MODES.OVERLAY] = "source-over", e[r.BLEND_MODES.DARKEN] = "source-over", e[r.BLEND_MODES.LIGHTEN] = "source-over", e[r.BLEND_MODES.COLOR_DODGE] = "source-over", e[r.BLEND_MODES.COLOR_BURN] = "source-over", e[r.BLEND_MODES.HARD_LIGHT] = "source-over", e[r.BLEND_MODES.SOFT_LIGHT] = "source-over", e[r.BLEND_MODES.DIFFERENCE] = "source-over", e[r.BLEND_MODES.EXCLUSION] = "source-over", e[r.BLEND_MODES.HUE] = "source-over", e[r.BLEND_MODES.SATURATION] = "source-over", e[r.BLEND_MODES.COLOR] = "source-over", e[r.BLEND_MODES.LUMINOSITY] = "source-over"), e[r.BLEND_MODES.NORMAL_NPM] = e[r.BLEND_MODES.NORMAL], e[r.BLEND_MODES.ADD_NPM] = e[r.BLEND_MODES.ADD], e[r.BLEND_MODES.SCREEN_NPM] = e[r.BLEND_MODES.SCREEN], e
                    }
                    i.__esModule = !0, i.default = n;
                    var r = e("../../../const"),
                        o = e("./canUseNewCanvasBlendModes"),
                        a = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(o)
                }, {
                    "../../../const": 46,
                    "./canUseNewCanvasBlendModes": 80
                }],
                82: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = e("../../const"),
                        o = e("../../settings"),
                        a = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(o),
                        s = function() {
                            function e(t) {
                                n(this, e), this.renderer = t, this.count = 0, this.checkCount = 0, this.maxIdle = a.default.GC_MAX_IDLE, this.checkCountMax = a.default.GC_MAX_CHECK_COUNT, this.mode = a.default.GC_MODE
                            }
                            return e.prototype.update = function() {
                                this.count++, this.mode !== r.GC_MODES.MANUAL && ++this.checkCount > this.checkCountMax && (this.checkCount = 0, this.run())
                            }, e.prototype.run = function() {
                                for (var e = this.renderer.textureManager, t = e._managedTextures, i = !1, n = 0; n < t.length; n++) {
                                    var r = t[n];
                                    !r._glRenderTargets && this.count - r.touched > this.maxIdle && (e.destroyTexture(r, !0), t[n] = null, i = !0)
                                }
                                if (i) {
                                    for (var o = 0, a = 0; a < t.length; a++) null !== t[a] && (t[o++] = t[a]);
                                    t.length = o
                                }
                            }, e.prototype.unload = function(e) {
                                var t = this.renderer.textureManager;
                                e._texture && e._texture._glRenderTargets && t.destroyTexture(e._texture, !0);
                                for (var i = e.children.length - 1; i >= 0; i--) this.unload(e.children[i])
                            }, e
                        }();
                    i.default = s
                }, {
                    "../../const": 46,
                    "../../settings": 101
                }],
                83: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = e("pixi-gl-core"),
                        o = e("../../const"),
                        a = e("./utils/RenderTarget"),
                        s = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(a),
                        l = e("../../utils"),
                        u = function() {
                            function e(t) {
                                n(this, e), this.renderer = t, this.gl = t.gl, this._managedTextures = []
                            }
                            return e.prototype.bindTexture = function() {}, e.prototype.getTexture = function() {}, e.prototype.updateTexture = function(e, t) {
                                var i = this.gl,
                                    n = !!e._glRenderTargets;
                                if (!e.hasLoaded) return null;
                                var a = this.renderer.boundTextures;
                                if (void 0 === t) {
                                    t = 0;
                                    for (var l = 0; l < a.length; ++l)
                                        if (a[l] === e) {
                                            t = l;
                                            break
                                        }
                                }
                                a[t] = e, i.activeTexture(i.TEXTURE0 + t);
                                var u = e._glTextures[this.renderer.CONTEXT_UID];
                                if (u) n ? e._glRenderTargets[this.renderer.CONTEXT_UID].resize(e.width, e.height) : u.upload(e.source);
                                else {
                                    if (n) {
                                        var c = new s.default(this.gl, e.width, e.height, e.scaleMode, e.resolution);
                                        c.resize(e.width, e.height), e._glRenderTargets[this.renderer.CONTEXT_UID] = c, u = c.texture, this.renderer._activeRenderTarget.root || this.renderer._activeRenderTarget.frameBuffer.bind()
                                    } else u = new r.GLTexture(this.gl, null, null, null, null), u.bind(t), u.premultiplyAlpha = !0, u.upload(e.source);
                                    e._glTextures[this.renderer.CONTEXT_UID] = u, e.on("update", this.updateTexture, this), e.on("dispose", this.destroyTexture, this), this._managedTextures.push(e), e.isPowerOfTwo ? (e.mipmap && u.enableMipmap(), e.wrapMode === o.WRAP_MODES.CLAMP ? u.enableWrapClamp() : e.wrapMode === o.WRAP_MODES.REPEAT ? u.enableWrapRepeat() : u.enableWrapMirrorRepeat()) : u.enableWrapClamp(), e.scaleMode === o.SCALE_MODES.NEAREST ? u.enableNearestScaling() : u.enableLinearScaling()
                                }
                                return u
                            }, e.prototype.destroyTexture = function(e, t) {
                                if (e = e.baseTexture || e, e.hasLoaded) {
                                    var i = this.renderer,
                                        n = i.CONTEXT_UID,
                                        r = e._glTextures,
                                        o = e._glRenderTargets;
                                    if (r[n] && (i.unbindTexture(e), r[n].destroy(), e.off("update", this.updateTexture, this), e.off("dispose", this.destroyTexture, this), delete r[n], !t)) {
                                        var a = this._managedTextures.indexOf(e); - 1 !== a && (0, l.removeItems)(this._managedTextures, a, 1)
                                    }
                                    o && o[n] && (i._activeRenderTarget === o[n] && i.bindRenderTarget(i.rootRenderTarget), o[n].destroy(), delete o[n])
                                }
                            }, e.prototype.removeAll = function() {
                                for (var e = 0; e < this._managedTextures.length; ++e) {
                                    var t = this._managedTextures[e];
                                    t._glTextures[this.renderer.CONTEXT_UID] && delete t._glTextures[this.renderer.CONTEXT_UID]
                                }
                            }, e.prototype.destroy = function() {
                                for (var e = 0; e < this._managedTextures.length; ++e) {
                                    var t = this._managedTextures[e];
                                    this.destroyTexture(t, !0), t.off("update", this.updateTexture, this), t.off("dispose", this.destroyTexture, this)
                                }
                                this._managedTextures = null
                            }, e
                        }();
                    i.default = u
                }, {
                    "../../const": 46,
                    "../../utils": 125,
                    "./utils/RenderTarget": 96,
                    "pixi-gl-core": 15
                }],
                84: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function a(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var s = e("../SystemRenderer"),
                        l = n(s),
                        u = e("./managers/MaskManager"),
                        c = n(u),
                        h = e("./managers/StencilManager"),
                        p = n(h),
                        f = e("./managers/FilterManager"),
                        d = n(f),
                        _ = e("./utils/RenderTarget"),
                        m = n(_),
                        g = e("./utils/ObjectRenderer"),
                        v = n(g),
                        y = e("./TextureManager"),
                        b = n(y),
                        x = e("../../textures/BaseTexture"),
                        S = n(x),
                        T = e("./TextureGarbageCollector"),
                        w = n(T),
                        E = e("./WebGLState"),
                        P = n(E),
                        R = e("./utils/mapWebGLDrawModesToPixi"),
                        O = n(R),
                        A = e("./utils/validateContext"),
                        I = n(A),
                        C = e("../../utils"),
                        M = e("pixi-gl-core"),
                        D = n(M),
                        N = e("../../const"),
                        L = 0,
                        k = function(e) {
                            function t(i, n, a) {
                                r(this, t);
                                var s = o(this, e.call(this, "WebGL", i, n, a));
                                return s.legacy = s.options.legacy, s.legacy && (D.default.VertexArrayObject.FORCE_NATIVE = !0), s.type = N.RENDERER_TYPE.WEBGL, s.handleContextLost = s.handleContextLost.bind(s), s.handleContextRestored = s.handleContextRestored.bind(s), s.view.addEventListener("webglcontextlost", s.handleContextLost, !1), s.view.addEventListener("webglcontextrestored", s.handleContextRestored, !1), s._contextOptions = {
                                    alpha: s.transparent,
                                    antialias: s.options.antialias,
                                    premultipliedAlpha: s.transparent && "notMultiplied" !== s.transparent,
                                    stencil: !0,
                                    preserveDrawingBuffer: s.options.preserveDrawingBuffer,
                                    powerPreference: s.options.powerPreference
                                }, s._backgroundColorRgba[3] = s.transparent ? 0 : 1, s.maskManager = new c.default(s), s.stencilManager = new p.default(s), s.emptyRenderer = new v.default(s), s.currentRenderer = s.emptyRenderer, s.textureManager = null, s.filterManager = null, s.initPlugins(), s.options.context && (0, I.default)(s.options.context), s.gl = s.options.context || D.default.createContext(s.view, s._contextOptions), s.CONTEXT_UID = L++, s.state = new P.default(s.gl), s.renderingToScreen = !0, s.boundTextures = null, s._activeShader = null, s._activeVao = null, s._activeRenderTarget = null, s._initContext(), s.drawModes = (0, O.default)(s.gl), s._nextTextureLocation = 0, s.setBlendMode(0), s
                            }
                            return a(t, e), t.prototype._initContext = function() {
                                var e = this.gl;
                                e.isContextLost() && e.getExtension("WEBGL_lose_context") && e.getExtension("WEBGL_lose_context").restoreContext();
                                var t = e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS);
                                this._activeShader = null, this._activeVao = null, this.boundTextures = new Array(t), this.emptyTextures = new Array(t), this._unknownBoundTextures = !1, this.textureManager = new b.default(this), this.filterManager = new d.default(this), this.textureGC = new w.default(this), this.state.resetToDefault(), this.rootRenderTarget = new m.default(e, this.width, this.height, null, this.resolution, !0), this.rootRenderTarget.clearColor = this._backgroundColorRgba, this.bindRenderTarget(this.rootRenderTarget);
                                var i = new D.default.GLTexture.fromData(e, null, 1, 1),
                                    n = {
                                        _glTextures: {}
                                    };
                                n._glTextures[this.CONTEXT_UID] = {};
                                for (var r = 0; r < t; r++) {
                                    var o = new S.default;
                                    o._glTextures[this.CONTEXT_UID] = i, this.boundTextures[r] = n, this.emptyTextures[r] = o, this.bindTexture(null, r)
                                }
                                this.emit("context", e), this.resize(this.screen.width, this.screen.height)
                            }, t.prototype.render = function(e, t, i, n, r) {
                                if (this.renderingToScreen = !t, this.emit("prerender"), this.gl && !this.gl.isContextLost()) {
                                    if (this._nextTextureLocation = 0, t || (this._lastObjectRendered = e), !r) {
                                        var o = e.parent;
                                        e.parent = this._tempDisplayObjectParent, e.updateTransform(), e.parent = o
                                    }
                                    this.bindRenderTexture(t, n), this.currentRenderer.start(), (void 0 !== i ? i : this.clearBeforeRender) && this._activeRenderTarget.clear(), e.renderWebGL(this), this.currentRenderer.flush(), this.textureGC.update(), this.emit("postrender")
                                }
                            }, t.prototype.setObjectRenderer = function(e) {
                                this.currentRenderer !== e && (this.currentRenderer.stop(), this.currentRenderer = e, this.currentRenderer.start())
                            }, t.prototype.flush = function() {
                                this.setObjectRenderer(this.emptyRenderer)
                            }, t.prototype.resize = function(e, t) {
                                l.default.prototype.resize.call(this, e, t), this.rootRenderTarget.resize(e, t), this._activeRenderTarget === this.rootRenderTarget && (this.rootRenderTarget.activate(), this._activeShader && (this._activeShader.uniforms.projectionMatrix = this.rootRenderTarget.projectionMatrix.toArray(!0)))
                            }, t.prototype.setBlendMode = function(e) {
                                this.state.setBlendMode(e)
                            }, t.prototype.clear = function(e) {
                                this._activeRenderTarget.clear(e)
                            }, t.prototype.setTransform = function(e) {
                                this._activeRenderTarget.transform = e
                            }, t.prototype.clearRenderTexture = function(e, t) {
                                var i = e.baseTexture,
                                    n = i._glRenderTargets[this.CONTEXT_UID];
                                return n && n.clear(t), this
                            }, t.prototype.bindRenderTexture = function(e, t) {
                                var i = void 0;
                                if (e) {
                                    var n = e.baseTexture;
                                    n._glRenderTargets[this.CONTEXT_UID] || this.textureManager.updateTexture(n, 0), this.unbindTexture(n), i = n._glRenderTargets[this.CONTEXT_UID], i.setFrame(e.frame)
                                } else i = this.rootRenderTarget;
                                return i.transform = t, this.bindRenderTarget(i), this
                            }, t.prototype.bindRenderTarget = function(e) {
                                return e !== this._activeRenderTarget && (this._activeRenderTarget = e, e.activate(), this._activeShader && (this._activeShader.uniforms.projectionMatrix = e.projectionMatrix.toArray(!0)), this.stencilManager.setMaskStack(e.stencilMaskStack)), this
                            }, t.prototype.bindShader = function(e, t) {
                                return this._activeShader !== e && (this._activeShader = e, e.bind(), !1 !== t && (e.uniforms.projectionMatrix = this._activeRenderTarget.projectionMatrix.toArray(!0))), this
                            }, t.prototype.bindTexture = function(e, t, i) {
                                if (e = e || this.emptyTextures[t], e = e.baseTexture || e, e.touched = this.textureGC.count, i) t = t || 0;
                                else {
                                    for (var n = 0; n < this.boundTextures.length; n++)
                                        if (this.boundTextures[n] === e) return n;
                                    void 0 === t && (this._nextTextureLocation++, this._nextTextureLocation %= this.boundTextures.length, t = this.boundTextures.length - this._nextTextureLocation - 1)
                                }
                                var r = this.gl,
                                    o = e._glTextures[this.CONTEXT_UID];
                                return o ? (this.boundTextures[t] = e, r.activeTexture(r.TEXTURE0 + t), r.bindTexture(r.TEXTURE_2D, o.texture)) : this.textureManager.updateTexture(e, t), t
                            }, t.prototype.unbindTexture = function(e) {
                                var t = this.gl;
                                if (e = e.baseTexture || e, this._unknownBoundTextures) {
                                    this._unknownBoundTextures = !1;
                                    for (var i = 0; i < this.boundTextures.length; i++) this.boundTextures[i] === this.emptyTextures[i] && (t.activeTexture(t.TEXTURE0 + i), t.bindTexture(t.TEXTURE_2D, this.emptyTextures[i]._glTextures[this.CONTEXT_UID].texture))
                                }
                                for (var n = 0; n < this.boundTextures.length; n++) this.boundTextures[n] === e && (this.boundTextures[n] = this.emptyTextures[n], t.activeTexture(t.TEXTURE0 + n), t.bindTexture(t.TEXTURE_2D, this.emptyTextures[n]._glTextures[this.CONTEXT_UID].texture));
                                return this
                            }, t.prototype.createVao = function() {
                                return new D.default.VertexArrayObject(this.gl, this.state.attribState)
                            }, t.prototype.bindVao = function(e) {
                                return this._activeVao === e ? this : (e ? e.bind() : this._activeVao && this._activeVao.unbind(), this._activeVao = e, this)
                            }, t.prototype.reset = function() {
                                this.setObjectRenderer(this.emptyRenderer), this.bindVao(null), this._activeShader = null, this._activeRenderTarget = this.rootRenderTarget, this._unknownBoundTextures = !0;
                                for (var e = 0; e < this.boundTextures.length; e++) this.boundTextures[e] = this.emptyTextures[e];
                                return this.rootRenderTarget.activate(), this.state.resetToDefault(), this
                            }, t.prototype.handleContextLost = function(e) {
                                e.preventDefault()
                            }, t.prototype.handleContextRestored = function() {
                                this.textureManager.removeAll(), this.filterManager.destroy(!0), this._initContext()
                            }, t.prototype.destroy = function(t) {
                                this.destroyPlugins(), this.view.removeEventListener("webglcontextlost", this.handleContextLost), this.view.removeEventListener("webglcontextrestored", this.handleContextRestored), this.textureManager.destroy(), e.prototype.destroy.call(this, t), this.uid = 0, this.maskManager.destroy(), this.stencilManager.destroy(), this.filterManager.destroy(), this.maskManager = null, this.filterManager = null, this.textureManager = null, this.currentRenderer = null, this.handleContextLost = null, this.handleContextRestored = null, this._contextOptions = null, this.gl.useProgram(null), this.gl.getExtension("WEBGL_lose_context") && this.gl.getExtension("WEBGL_lose_context").loseContext(), this.gl = null
                            }, t
                        }(l.default);
                    i.default = k, C.pluginTarget.mixin(k)
                }, {
                    "../../const": 46,
                    "../../textures/BaseTexture": 112,
                    "../../utils": 125,
                    "../SystemRenderer": 76,
                    "./TextureGarbageCollector": 82,
                    "./TextureManager": 83,
                    "./WebGLState": 85,
                    "./managers/FilterManager": 90,
                    "./managers/MaskManager": 91,
                    "./managers/StencilManager": 92,
                    "./utils/ObjectRenderer": 94,
                    "./utils/RenderTarget": 96,
                    "./utils/mapWebGLDrawModesToPixi": 99,
                    "./utils/validateContext": 100,
                    "pixi-gl-core": 15
                }],
                85: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = e("./utils/mapWebGLBlendModesToPixi"),
                        o = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(r),
                        a = function() {
                            function e(t) {
                                n(this, e), this.activeState = new Uint8Array(16), this.defaultState = new Uint8Array(16), this.defaultState[0] = 1, this.stackIndex = 0, this.stack = [], this.gl = t, this.maxAttribs = t.getParameter(t.MAX_VERTEX_ATTRIBS), this.attribState = {
                                    tempAttribState: new Array(this.maxAttribs),
                                    attribState: new Array(this.maxAttribs)
                                }, this.blendModes = (0, o.default)(t), this.nativeVaoExtension = t.getExtension("OES_vertex_array_object") || t.getExtension("MOZ_OES_vertex_array_object") || t.getExtension("WEBKIT_OES_vertex_array_object")
                            }
                            return e.prototype.push = function() {
                                var e = this.stack[this.stackIndex];
                                e || (e = this.stack[this.stackIndex] = new Uint8Array(16)), ++this.stackIndex;
                                for (var t = 0; t < this.activeState.length; t++) e[t] = this.activeState[t]
                            }, e.prototype.pop = function() {
                                var e = this.stack[--this.stackIndex];
                                this.setState(e)
                            }, e.prototype.setState = function(e) {
                                this.setBlend(e[0]), this.setDepthTest(e[1]), this.setFrontFace(e[2]), this.setCullFace(e[3]), this.setBlendMode(e[4])
                            }, e.prototype.setBlend = function(e) {
                                e = e ? 1 : 0, this.activeState[0] !== e && (this.activeState[0] = e, this.gl[e ? "enable" : "disable"](this.gl.BLEND))
                            }, e.prototype.setBlendMode = function(e) {
                                if (e !== this.activeState[4]) {
                                    this.activeState[4] = e;
                                    var t = this.blendModes[e];
                                    2 === t.length ? this.gl.blendFunc(t[0], t[1]) : this.gl.blendFuncSeparate(t[0], t[1], t[2], t[3])
                                }
                            }, e.prototype.setDepthTest = function(e) {
                                e = e ? 1 : 0, this.activeState[1] !== e && (this.activeState[1] = e, this.gl[e ? "enable" : "disable"](this.gl.DEPTH_TEST))
                            }, e.prototype.setCullFace = function(e) {
                                e = e ? 1 : 0, this.activeState[3] !== e && (this.activeState[3] = e, this.gl[e ? "enable" : "disable"](this.gl.CULL_FACE))
                            }, e.prototype.setFrontFace = function(e) {
                                e = e ? 1 : 0, this.activeState[2] !== e && (this.activeState[2] = e, this.gl.frontFace(this.gl[e ? "CW" : "CCW"]))
                            }, e.prototype.resetAttributes = function() {
                                for (var e = 0; e < this.attribState.tempAttribState.length; e++) this.attribState.tempAttribState[e] = 0;
                                for (var t = 0; t < this.attribState.attribState.length; t++) this.attribState.attribState[t] = 0;
                                for (var i = 1; i < this.maxAttribs; i++) this.gl.disableVertexAttribArray(i)
                            }, e.prototype.resetToDefault = function() {
                                this.nativeVaoExtension && this.nativeVaoExtension.bindVertexArrayOES(null), this.resetAttributes();
                                for (var e = 0; e < this.activeState.length; ++e) this.activeState[e] = 32;
                                this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL, !1), this.setState(this.defaultState)
                            }, e
                        }();
                    i.default = a
                }, {
                    "./utils/mapWebGLBlendModesToPixi": 98
                }],
                86: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var o = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        a = e("./extractUniformsFromSrc"),
                        s = n(a),
                        l = e("../../../utils"),
                        u = e("../../../const"),
                        c = e("../../../settings"),
                        h = n(c),
                        p = {},
                        f = function() {
                            function e(t, i, n) {
                                r(this, e), this.vertexSrc = t || e.defaultVertexSrc, this.fragmentSrc = i || e.defaultFragmentSrc, this._blendMode = u.BLEND_MODES.NORMAL, this.uniformData = n || (0, s.default)(this.vertexSrc, this.fragmentSrc, "projectionMatrix|uSampler"), this.uniforms = {};
                                for (var o in this.uniformData) this.uniforms[o] = this.uniformData[o].value, this.uniformData[o].type && (this.uniformData[o].type = this.uniformData[o].type.toLowerCase());
                                this.glShaders = {}, p[this.vertexSrc + this.fragmentSrc] || (p[this.vertexSrc + this.fragmentSrc] = (0, l.uid)()), this.glShaderKey = p[this.vertexSrc + this.fragmentSrc], this.padding = 4, this.resolution = h.default.FILTER_RESOLUTION, this.enabled = !0, this.autoFit = !0
                            }
                            return e.prototype.apply = function(e, t, i, n, r) {
                                e.applyFilter(this, t, i, n)
                            }, o(e, [{
                                key: "blendMode",
                                get: function() {
                                    return this._blendMode
                                },
                                set: function(e) {
                                    this._blendMode = e
                                }
                            }], [{
                                key: "defaultVertexSrc",
                                get: function() {
                                    return ["attribute vec2 aVertexPosition;", "attribute vec2 aTextureCoord;", "uniform mat3 projectionMatrix;", "uniform mat3 filterMatrix;", "varying vec2 vTextureCoord;", "varying vec2 vFilterCoord;", "void main(void){", "   gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);", "   vFilterCoord = ( filterMatrix * vec3( aTextureCoord, 1.0)  ).xy;", "   vTextureCoord = aTextureCoord ;", "}"].join("\n")
                                }
                            }, {
                                key: "defaultFragmentSrc",
                                get: function() {
                                    return ["varying vec2 vTextureCoord;", "varying vec2 vFilterCoord;", "uniform sampler2D uSampler;", "uniform sampler2D filterSampler;", "void main(void){", "   vec4 masky = texture2D(filterSampler, vFilterCoord);", "   vec4 sample = texture2D(uSampler, vTextureCoord);", "   vec4 color;", "   if(mod(vFilterCoord.x, 1.0) > 0.5)", "   {", "     color = vec4(1.0, 0.0, 0.0, 1.0);", "   }", "   else", "   {", "     color = vec4(0.0, 1.0, 0.0, 1.0);", "   }", "   gl_FragColor = mix(sample, masky, 0.5);", "   gl_FragColor *= sample.a;", "}"].join("\n")
                                }
                            }]), e
                        }();
                    i.default = f
                }, {
                    "../../../const": 46,
                    "../../../settings": 101,
                    "../../../utils": 125,
                    "./extractUniformsFromSrc": 87
                }],
                87: [function(e, t, i) {
                    "use strict";

                    function n(e, t, i) {
                        var n = r(e),
                            o = r(t);
                        return Object.assign(n, o)
                    }

                    function r(e) {
                        for (var t = new RegExp("^(projectionMatrix|uSampler|filterArea|filterClamp)$"), i = {}, n = void 0, r = e.replace(/\s+/g, " ").split(/\s*;\s*/), o = 0; o < r.length; o++) {
                            var a = r[o].trim();
                            if (a.indexOf("uniform") > -1) {
                                var l = a.split(" "),
                                    u = l[1],
                                    c = l[2],
                                    h = 1;
                                c.indexOf("[") > -1 && (n = c.split(/\[|]/), c = n[0], h *= Number(n[1])), c.match(t) || (i[c] = {
                                    value: s(u, h),
                                    name: c,
                                    type: u
                                })
                            }
                        }
                        return i
                    }
                    i.__esModule = !0, i.default = n;
                    var o = e("pixi-gl-core"),
                        a = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(o),
                        s = a.default.shader.defaultValue
                }, {
                    "pixi-gl-core": 15
                }],
                88: [function(e, t, i) {
                    "use strict";

                    function n(e, t, i) {
                        var n = e.identity();
                        return n.translate(t.x / i.width, t.y / i.height), n.scale(i.width, i.height), n
                    }

                    function r(e, t, i) {
                        var n = e.identity();
                        n.translate(t.x / i.width, t.y / i.height);
                        var r = i.width / t.width,
                            o = i.height / t.height;
                        return n.scale(r, o), n
                    }

                    function o(e, t, i, n) {
                        var r = n._texture.orig,
                            o = e.set(i.width, 0, 0, i.height, t.x, t.y),
                            s = n.worldTransform.copy(a.Matrix.TEMP_MATRIX);
                        return s.invert(), o.prepend(s), o.scale(1 / r.width, 1 / r.height), o.translate(n.anchor.x, n.anchor.y), o
                    }
                    i.__esModule = !0, i.calculateScreenSpaceMatrix = n, i.calculateNormalizedScreenSpaceMatrix = r, i.calculateSpriteMatrix = o;
                    var a = e("../../../math")
                }, {
                    "../../../math": 70
                }],
                89: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function a(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var s = e("../Filter"),
                        l = n(s),
                        u = e("../../../../math"),
                        c = (e("path"), e("../../../../textures/TextureMatrix")),
                        h = n(c),
                        p = function(e) {
                            function t(i) {
                                r(this, t);
                                var n = new u.Matrix,
                                    a = o(this, e.call(this, "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 otherMatrix;\n\nvarying vec2 vMaskCoord;\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n    gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n    vTextureCoord = aTextureCoord;\n    vMaskCoord = ( otherMatrix * vec3( aTextureCoord, 1.0)  ).xy;\n}\n", "varying vec2 vMaskCoord;\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform sampler2D mask;\nuniform float alpha;\nuniform vec4 maskClamp;\n\nvoid main(void)\n{\n    float clip = step(3.5,\n        step(maskClamp.x, vMaskCoord.x) +\n        step(maskClamp.y, vMaskCoord.y) +\n        step(vMaskCoord.x, maskClamp.z) +\n        step(vMaskCoord.y, maskClamp.w));\n\n    vec4 original = texture2D(uSampler, vTextureCoord);\n    vec4 masky = texture2D(mask, vMaskCoord);\n\n    original *= (masky.r * masky.a * alpha * clip);\n\n    gl_FragColor = original;\n}\n"));
                                return i.renderable = !1, a.maskSprite = i, a.maskMatrix = n, a
                            }
                            return a(t, e), t.prototype.apply = function(e, t, i, n) {
                                var r = this.maskSprite,
                                    o = this.maskSprite.texture;
                                o.valid && (o.transform || (o.transform = new h.default(o, 0)), o.transform.update(), this.uniforms.mask = o, this.uniforms.otherMatrix = e.calculateSpriteMatrix(this.maskMatrix, r).prepend(o.transform.mapCoord), this.uniforms.alpha = r.worldAlpha, this.uniforms.maskClamp = o.transform.uClampFrame, e.applyFilter(this, t, i, n))
                            }, t
                        }(l.default);
                    i.default = p
                }, {
                    "../../../../math": 70,
                    "../../../../textures/TextureMatrix": 116,
                    "../Filter": 86,
                    path: 8
                }],
                90: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function o(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }

                    function a(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var s = e("./WebGLManager"),
                        l = n(s),
                        u = e("../utils/RenderTarget"),
                        c = n(u),
                        h = e("../utils/Quad"),
                        p = n(h),
                        f = e("../../../math"),
                        d = e("../../../Shader"),
                        _ = n(d),
                        m = e("../filters/filterTransforms"),
                        g = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(m),
                        v = e("bit-twiddle"),
                        y = n(v),
                        b = function() {
                            function e() {
                                a(this, e), this.renderTarget = null, this.target = null, this.resolution = 1, this.sourceFrame = new f.Rectangle, this.destinationFrame = new f.Rectangle, this.filters = []
                            }
                            return e.prototype.clear = function() {
                                this.filters = null, this.target = null, this.renderTarget = null
                            }, e
                        }(),
                        x = function(e) {
                            function t(i) {
                                a(this, t);
                                var n = r(this, e.call(this, i));
                                return n.gl = n.renderer.gl, n.quad = new p.default(n.gl, i.state.attribState), n.shaderCache = {}, n.pool = {}, n.filterData = null, n.managedFilters = [], n.renderer.on("prerender", n.onPrerender, n), n._screenWidth = i.view.width, n._screenHeight = i.view.height, n
                            }
                            return o(t, e), t.prototype.pushFilter = function(e, t) {
                                var i = this.renderer,
                                    n = this.filterData;
                                if (!n) {
                                    n = this.renderer._activeRenderTarget.filterStack;
                                    var r = new b;
                                    r.sourceFrame = r.destinationFrame = this.renderer._activeRenderTarget.size, r.renderTarget = i._activeRenderTarget, this.renderer._activeRenderTarget.filterData = n = {
                                        index: 0,
                                        stack: [r]
                                    }, this.filterData = n
                                }
                                var o = n.stack[++n.index],
                                    a = n.stack[0].destinationFrame;
                                o || (o = n.stack[n.index] = new b);
                                var s = e.filterArea && 0 === e.filterArea.x && 0 === e.filterArea.y && e.filterArea.width === i.screen.width && e.filterArea.height === i.screen.height,
                                    l = t[0].resolution,
                                    u = 0 | t[0].padding,
                                    c = s ? i.screen : e.filterArea || e.getBounds(!0),
                                    h = o.sourceFrame,
                                    p = o.destinationFrame;
                                h.x = (c.x * l | 0) / l, h.y = (c.y * l | 0) / l, h.width = (c.width * l | 0) / l, h.height = (c.height * l | 0) / l, s || (n.stack[0].renderTarget.transform || t[0].autoFit && h.fit(a), h.pad(u)), p.width = h.width, p.height = h.height;
                                var f = this.getPotRenderTarget(i.gl, h.width, h.height, l);
                                o.target = e, o.filters = t, o.resolution = l, o.renderTarget = f, f.setFrame(p, h), i.bindRenderTarget(f), f.clear()
                            }, t.prototype.popFilter = function() {
                                var e = this.filterData,
                                    t = e.stack[e.index - 1],
                                    i = e.stack[e.index];
                                this.quad.map(i.renderTarget.size, i.sourceFrame).upload();
                                var n = i.filters;
                                if (1 === n.length) n[0].apply(this, i.renderTarget, t.renderTarget, !1, i), this.freePotRenderTarget(i.renderTarget);
                                else {
                                    var r = i.renderTarget,
                                        o = this.getPotRenderTarget(this.renderer.gl, i.sourceFrame.width, i.sourceFrame.height, i.resolution);
                                    o.setFrame(i.destinationFrame, i.sourceFrame), o.clear();
                                    var a = 0;
                                    for (a = 0; a < n.length - 1; ++a) {
                                        n[a].apply(this, r, o, !0, i);
                                        var s = r;
                                        r = o, o = s
                                    }
                                    n[a].apply(this, r, t.renderTarget, !1, i), this.freePotRenderTarget(r), this.freePotRenderTarget(o)
                                }
                                i.clear(), 0 == --e.index && (this.filterData = null)
                            }, t.prototype.applyFilter = function(e, t, i, n) {
                                var r = this.renderer,
                                    o = r.gl,
                                    a = e.glShaders[r.CONTEXT_UID];
                                a || (e.glShaderKey ? (a = this.shaderCache[e.glShaderKey]) || (a = new _.default(this.gl, e.vertexSrc, e.fragmentSrc), e.glShaders[r.CONTEXT_UID] = this.shaderCache[e.glShaderKey] = a, this.managedFilters.push(e)) : (a = e.glShaders[r.CONTEXT_UID] = new _.default(this.gl, e.vertexSrc, e.fragmentSrc), this.managedFilters.push(e)), r.bindVao(null), this.quad.initVao(a)), r.bindVao(this.quad.vao), r.bindRenderTarget(i), n && (o.disable(o.SCISSOR_TEST), r.clear(), o.enable(o.SCISSOR_TEST)), i === r.maskManager.scissorRenderTarget && r.maskManager.pushScissorMask(null, r.maskManager.scissorData), r.bindShader(a);
                                var s = this.renderer.emptyTextures[0];
                                this.renderer.boundTextures[0] = s, this.syncUniforms(a, e), r.state.setBlendMode(e.blendMode), o.activeTexture(o.TEXTURE0), o.bindTexture(o.TEXTURE_2D, t.texture.texture), this.quad.vao.draw(this.renderer.gl.TRIANGLES, 6, 0), o.bindTexture(o.TEXTURE_2D, s._glTextures[this.renderer.CONTEXT_UID].texture)
                            }, t.prototype.syncUniforms = function(e, t) {
                                var i = t.uniformData,
                                    n = t.uniforms,
                                    r = 1,
                                    o = void 0;
                                if (e.uniforms.filterArea) {
                                    o = this.filterData.stack[this.filterData.index];
                                    var a = e.uniforms.filterArea;
                                    a[0] = o.renderTarget.size.width, a[1] = o.renderTarget.size.height, a[2] = o.sourceFrame.x, a[3] = o.sourceFrame.y, e.uniforms.filterArea = a
                                }
                                if (e.uniforms.filterClamp) {
                                    o = o || this.filterData.stack[this.filterData.index];
                                    var s = e.uniforms.filterClamp;
                                    s[0] = 0, s[1] = 0, s[2] = (o.sourceFrame.width - 1) / o.renderTarget.size.width, s[3] = (o.sourceFrame.height - 1) / o.renderTarget.size.height, e.uniforms.filterClamp = s
                                }
                                for (var l in i)
                                    if (e.uniforms.data[l]) {
                                        var u = i[l].type;
                                        if ("sampler2d" === u && 0 !== n[l]) {
                                            if (n[l].baseTexture) e.uniforms[l] = this.renderer.bindTexture(n[l].baseTexture, r);
                                            else {
                                                e.uniforms[l] = r;
                                                var c = this.renderer.gl;
                                                this.renderer.boundTextures[r] = this.renderer.emptyTextures[r], c.activeTexture(c.TEXTURE0 + r), n[l].texture.bind()
                                            }
                                            r++
                                        } else if ("mat3" === u) void 0 !== n[l].a ? e.uniforms[l] = n[l].toArray(!0) : e.uniforms[l] = n[l];
                                        else if ("vec2" === u)
                                            if (void 0 !== n[l].x) {
                                                var h = e.uniforms[l] || new Float32Array(2);
                                                h[0] = n[l].x, h[1] = n[l].y, e.uniforms[l] = h
                                            } else e.uniforms[l] = n[l];
                                        else "float" === u ? e.uniforms.data[l].value !== i[l] && (e.uniforms[l] = n[l]) : e.uniforms[l] = n[l]
                                    }
                            }, t.prototype.getRenderTarget = function(e, t) {
                                var i = this.filterData.stack[this.filterData.index],
                                    n = this.getPotRenderTarget(this.renderer.gl, i.sourceFrame.width, i.sourceFrame.height, t || i.resolution);
                                return n.setFrame(i.destinationFrame, i.sourceFrame), n
                            }, t.prototype.returnRenderTarget = function(e) {
                                this.freePotRenderTarget(e)
                            }, t.prototype.calculateScreenSpaceMatrix = function(e) {
                                var t = this.filterData.stack[this.filterData.index];
                                return g.calculateScreenSpaceMatrix(e, t.sourceFrame, t.renderTarget.size)
                            }, t.prototype.calculateNormalizedScreenSpaceMatrix = function(e) {
                                var t = this.filterData.stack[this.filterData.index];
                                return g.calculateNormalizedScreenSpaceMatrix(e, t.sourceFrame, t.renderTarget.size, t.destinationFrame)
                            }, t.prototype.calculateSpriteMatrix = function(e, t) {
                                var i = this.filterData.stack[this.filterData.index];
                                return g.calculateSpriteMatrix(e, i.sourceFrame, i.renderTarget.size, t)
                            }, t.prototype.destroy = function() {
                                var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0],
                                    t = this.renderer,
                                    i = this.managedFilters;
                                t.off("prerender", this.onPrerender, this);
                                for (var n = 0; n < i.length; n++) e || i[n].glShaders[t.CONTEXT_UID].destroy(), delete i[n].glShaders[t.CONTEXT_UID];
                                this.shaderCache = {}, e ? this.pool = {} : this.emptyPool()
                            }, t.prototype.getPotRenderTarget = function(e, t, i, n) {
                                var r = "screen";
                                t *= n, i *= n, t === this._screenWidth && i === this._screenHeight || (t = y.default.nextPow2(t), i = y.default.nextPow2(i), r = (65535 & t) << 16 | 65535 & i), this.pool[r] || (this.pool[r] = []);
                                var o = this.pool[r].pop();
                                if (!o) {
                                    var a = this.renderer.boundTextures[0];
                                    e.activeTexture(e.TEXTURE0), o = new c.default(e, t, i, null, 1), e.bindTexture(e.TEXTURE_2D, a._glTextures[this.renderer.CONTEXT_UID].texture)
                                }
                                return o.resolution = n, o.defaultFrame.width = o.size.width = t / n, o.defaultFrame.height = o.size.height = i / n, o.filterPoolKey = r, o
                            }, t.prototype.emptyPool = function() {
                                for (var e in this.pool) {
                                    var t = this.pool[e];
                                    if (t)
                                        for (var i = 0; i < t.length; i++) t[i].destroy(!0)
                                }
                                this.pool = {}
                            }, t.prototype.freePotRenderTarget = function(e) {
                                this.pool[e.filterPoolKey].push(e)
                            }, t.prototype.onPrerender = function() {
                                if (this._screenWidth !== this.renderer.view.width || this._screenHeight !== this.renderer.view.height) {
                                    this._screenWidth = this.renderer.view.width, this._screenHeight = this.renderer.view.height;
                                    var e = this.pool.screen;
                                    if (e)
                                        for (var t = 0; t < e.length; t++) e[t].destroy(!0);
                                    this.pool.screen = []
                                }
                            }, t
                        }(l.default);
                    i.default = x
                }, {
                    "../../../Shader": 44,
                    "../../../math": 70,
                    "../filters/filterTransforms": 88,
                    "../utils/Quad": 95,
                    "../utils/RenderTarget": 96,
                    "./WebGLManager": 93,
                    "bit-twiddle": 1
                }],
                91: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function a(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var s = e("./WebGLManager"),
                        l = n(s),
                        u = e("../filters/spriteMask/SpriteMaskFilter"),
                        c = n(u),
                        h = function(e) {
                            function t(i) {
                                r(this, t);
                                var n = o(this, e.call(this, i));
                                return n.scissor = !1, n.scissorData = null, n.scissorRenderTarget = null, n.enableScissor = !0, n.alphaMaskPool = [], n.alphaMaskIndex = 0, n
                            }
                            return a(t, e), t.prototype.pushMask = function(e, t) {
                                if (t.texture) this.pushSpriteMask(e, t);
                                else if (this.enableScissor && !this.scissor && this.renderer._activeRenderTarget.root && !this.renderer.stencilManager.stencilMaskStack.length && t.isFastRect()) {
                                    var i = t.worldTransform,
                                        n = Math.atan2(i.b, i.a);
                                    n = Math.round(n * (180 / Math.PI)), n % 90 ? this.pushStencilMask(t) : this.pushScissorMask(e, t)
                                } else this.pushStencilMask(t)
                            }, t.prototype.popMask = function(e, t) {
                                t.texture ? this.popSpriteMask(e, t) : this.enableScissor && !this.renderer.stencilManager.stencilMaskStack.length ? this.popScissorMask(e, t) : this.popStencilMask(e, t)
                            }, t.prototype.pushSpriteMask = function(e, t) {
                                var i = this.alphaMaskPool[this.alphaMaskIndex];
                                i || (i = this.alphaMaskPool[this.alphaMaskIndex] = [new c.default(t)]), i[0].resolution = this.renderer.resolution, i[0].maskSprite = t;
                                var n = e.filterArea;
                                e.filterArea = t.getBounds(!0), this.renderer.filterManager.pushFilter(e, i), e.filterArea = n, this.alphaMaskIndex++
                            }, t.prototype.popSpriteMask = function() {
                                this.renderer.filterManager.popFilter(), this.alphaMaskIndex--
                            }, t.prototype.pushStencilMask = function(e) {
                                this.renderer.currentRenderer.stop(), this.renderer.stencilManager.pushStencil(e)
                            }, t.prototype.popStencilMask = function() {
                                this.renderer.currentRenderer.stop(), this.renderer.stencilManager.popStencil()
                            }, t.prototype.pushScissorMask = function(e, t) {
                                t.renderable = !0;
                                var i = this.renderer._activeRenderTarget,
                                    n = t.getBounds();
                                n.fit(i.size), t.renderable = !1, this.renderer.gl.enable(this.renderer.gl.SCISSOR_TEST);
                                var r = this.renderer.resolution;
                                this.renderer.gl.scissor(n.x * r, (i.root ? i.size.height - n.y - n.height : n.y) * r, n.width * r, n.height * r), this.scissorRenderTarget = i, this.scissorData = t, this.scissor = !0
                            }, t.prototype.popScissorMask = function() {
                                this.scissorRenderTarget = null, this.scissorData = null, this.scissor = !1;
                                var e = this.renderer.gl;
                                e.disable(e.SCISSOR_TEST)
                            }, t
                        }(l.default);
                    i.default = h
                }, {
                    "../filters/spriteMask/SpriteMaskFilter": 89,
                    "./WebGLManager": 93
                }],
                92: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function o(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var a = e("./WebGLManager"),
                        s = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(a),
                        l = function(e) {
                            function t(i) {
                                n(this, t);
                                var o = r(this, e.call(this, i));
                                return o.stencilMaskStack = null, o
                            }
                            return o(t, e), t.prototype.setMaskStack = function(e) {
                                this.stencilMaskStack = e;
                                var t = this.renderer.gl;
                                0 === e.length ? t.disable(t.STENCIL_TEST) : t.enable(t.STENCIL_TEST)
                            }, t.prototype.pushStencil = function(e) {
                                this.renderer.setObjectRenderer(this.renderer.plugins.graphics), this.renderer._activeRenderTarget.attachStencilBuffer();
                                var t = this.renderer.gl,
                                    i = this.stencilMaskStack.length;
                                0 === i && t.enable(t.STENCIL_TEST), this.stencilMaskStack.push(e), t.colorMask(!1, !1, !1, !1), t.stencilFunc(t.EQUAL, i, this._getBitwiseMask()), t.stencilOp(t.KEEP, t.KEEP, t.INCR), this.renderer.plugins.graphics.render(e), this._useCurrent()
                            }, t.prototype.popStencil = function() {
                                this.renderer.setObjectRenderer(this.renderer.plugins.graphics);
                                var e = this.renderer.gl,
                                    t = this.stencilMaskStack.pop();
                                0 === this.stencilMaskStack.length ? (e.disable(e.STENCIL_TEST), e.clear(e.STENCIL_BUFFER_BIT), e.clearStencil(0)) : (e.colorMask(!1, !1, !1, !1), e.stencilOp(e.KEEP, e.KEEP, e.DECR), this.renderer.plugins.graphics.render(t), this._useCurrent())
                            }, t.prototype._useCurrent = function() {
                                var e = this.renderer.gl;
                                e.colorMask(!0, !0, !0, !0), e.stencilFunc(e.EQUAL, this.stencilMaskStack.length, this._getBitwiseMask()), e.stencilOp(e.KEEP, e.KEEP, e.KEEP)
                            }, t.prototype._getBitwiseMask = function() {
                                return (1 << this.stencilMaskStack.length) - 1
                            }, t.prototype.destroy = function() {
                                s.default.prototype.destroy.call(this), this.stencilMaskStack.stencilStack = null
                            }, t
                        }(s.default);
                    i.default = l
                }, {
                    "./WebGLManager": 93
                }],
                93: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = function() {
                        function e(t) {
                            n(this, e), this.renderer = t, this.renderer.on("context", this.onContextChange, this)
                        }
                        return e.prototype.onContextChange = function() {}, e.prototype.destroy = function() {
                            this.renderer.off("context", this.onContextChange, this), this.renderer = null
                        }, e
                    }();
                    i.default = r
                }, {}],
                94: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function o(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var a = e("../managers/WebGLManager"),
                        s = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(a),
                        l = function(e) {
                            function t() {
                                return n(this, t), r(this, e.apply(this, arguments))
                            }
                            return o(t, e), t.prototype.start = function() {}, t.prototype.stop = function() {
                                this.flush()
                            }, t.prototype.flush = function() {}, t.prototype.render = function(e) {}, t
                        }(s.default);
                    i.default = l
                }, {
                    "../managers/WebGLManager": 93
                }],
                95: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var o = e("pixi-gl-core"),
                        a = n(o),
                        s = e("../../../utils/createIndicesForQuads"),
                        l = n(s),
                        u = function() {
                            function e(t, i) {
                                r(this, e), this.gl = t, this.vertices = new Float32Array([-1, -1, 1, -1, 1, 1, -1, 1]), this.uvs = new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]), this.interleaved = new Float32Array(16);
                                for (var n = 0; n < 4; n++) this.interleaved[4 * n] = this.vertices[2 * n], this.interleaved[4 * n + 1] = this.vertices[2 * n + 1], this.interleaved[4 * n + 2] = this.uvs[2 * n], this.interleaved[4 * n + 3] = this.uvs[2 * n + 1];
                                this.indices = (0, l.default)(1), this.vertexBuffer = a.default.GLBuffer.createVertexBuffer(t, this.interleaved, t.STATIC_DRAW), this.indexBuffer = a.default.GLBuffer.createIndexBuffer(t, this.indices, t.STATIC_DRAW), this.vao = new a.default.VertexArrayObject(t, i)
                            }
                            return e.prototype.initVao = function(e) {
                                this.vao.clear().addIndex(this.indexBuffer).addAttribute(this.vertexBuffer, e.attributes.aVertexPosition, this.gl.FLOAT, !1, 16, 0).addAttribute(this.vertexBuffer, e.attributes.aTextureCoord, this.gl.FLOAT, !1, 16, 8)
                            }, e.prototype.map = function(e, t) {
                                var i = 0,
                                    n = 0;
                                return this.uvs[0] = i, this.uvs[1] = n, this.uvs[2] = i + t.width / e.width, this.uvs[3] = n, this.uvs[4] = i + t.width / e.width, this.uvs[5] = n + t.height / e.height, this.uvs[6] = i, this.uvs[7] = n + t.height / e.height, i = t.x, n = t.y, this.vertices[0] = i, this.vertices[1] = n, this.vertices[2] = i + t.width, this.vertices[3] = n, this.vertices[4] = i + t.width, this.vertices[5] = n + t.height, this.vertices[6] = i, this.vertices[7] = n + t.height, this
                            }, e.prototype.upload = function() {
                                for (var e = 0; e < 4; e++) this.interleaved[4 * e] = this.vertices[2 * e], this.interleaved[4 * e + 1] = this.vertices[2 * e + 1], this.interleaved[4 * e + 2] = this.uvs[2 * e], this.interleaved[4 * e + 3] = this.uvs[2 * e + 1];
                                return this.vertexBuffer.upload(this.interleaved), this
                            }, e.prototype.destroy = function() {
                                var e = this.gl;
                                e.deleteBuffer(this.vertexBuffer), e.deleteBuffer(this.indexBuffer)
                            }, e
                        }();
                    i.default = u
                }, {
                    "../../../utils/createIndicesForQuads": 123,
                    "pixi-gl-core": 15
                }],
                96: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = e("../../../math"),
                        o = e("../../../const"),
                        a = e("../../../settings"),
                        s = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(a),
                        l = e("pixi-gl-core"),
                        u = function() {
                            function e(t, i, a, u, c, h) {
                                n(this, e), this.gl = t, this.frameBuffer = null, this.texture = null, this.clearColor = [0, 0, 0, 0], this.size = new r.Rectangle(0, 0, 1, 1), this.resolution = c || s.default.RESOLUTION, this.projectionMatrix = new r.Matrix, this.transform = null, this.frame = null, this.defaultFrame = new r.Rectangle, this.destinationFrame = null, this.sourceFrame = null, this.stencilBuffer = null, this.stencilMaskStack = [], this.filterData = null, this.filterPoolKey = "", this.scaleMode = void 0 !== u ? u : s.default.SCALE_MODE, this.root = h || !1, this.root ? (this.frameBuffer = new l.GLFramebuffer(t, 100, 100), this.frameBuffer.framebuffer = null) : (this.frameBuffer = l.GLFramebuffer.createRGBA(t, 100, 100), this.scaleMode === o.SCALE_MODES.NEAREST ? this.frameBuffer.texture.enableNearestScaling() : this.frameBuffer.texture.enableLinearScaling(), this.texture = this.frameBuffer.texture), this.setFrame(), this.resize(i, a)
                            }
                            return e.prototype.clear = function(e) {
                                var t = e || this.clearColor;
                                this.frameBuffer.clear(t[0], t[1], t[2], t[3])
                            }, e.prototype.attachStencilBuffer = function() {
                                this.root || this.frameBuffer.enableStencil()
                            }, e.prototype.setFrame = function(e, t) {
                                this.destinationFrame = e || this.destinationFrame || this.defaultFrame, this.sourceFrame = t || this.sourceFrame || this.destinationFrame
                            }, e.prototype.activate = function() {
                                var e = this.gl;
                                this.frameBuffer.bind(), this.calculateProjection(this.destinationFrame, this.sourceFrame), this.transform && this.projectionMatrix.append(this.transform), this.destinationFrame !== this.sourceFrame ? (e.enable(e.SCISSOR_TEST), e.scissor(0 | this.destinationFrame.x, 0 | this.destinationFrame.y, this.destinationFrame.width * this.resolution | 0, this.destinationFrame.height * this.resolution | 0)) : e.disable(e.SCISSOR_TEST), e.viewport(0 | this.destinationFrame.x, 0 | this.destinationFrame.y, this.destinationFrame.width * this.resolution | 0, this.destinationFrame.height * this.resolution | 0)
                            }, e.prototype.calculateProjection = function(e, t) {
                                var i = this.projectionMatrix;
                                t = t || e, i.identity(), this.root ? (i.a = 1 / e.width * 2, i.d = -1 / e.height * 2, i.tx = -1 - t.x * i.a, i.ty = 1 - t.y * i.d) : (i.a = 1 / e.width * 2, i.d = 1 / e.height * 2, i.tx = -1 - t.x * i.a, i.ty = -1 - t.y * i.d)
                            }, e.prototype.resize = function(e, t) {
                                if (e |= 0, t |= 0, this.size.width !== e || this.size.height !== t) {
                                    this.size.width = e, this.size.height = t, this.defaultFrame.width = e, this.defaultFrame.height = t, this.frameBuffer.resize(e * this.resolution, t * this.resolution);
                                    var i = this.frame || this.size;
                                    this.calculateProjection(i)
                                }
                            }, e.prototype.destroy = function() {
                                this.frameBuffer.stencil && this.gl.deleteRenderbuffer(this.frameBuffer.stencil), this.frameBuffer.destroy(), this.frameBuffer = null, this.texture = null
                            }, e
                        }();
                    i.default = u
                }, {
                    "../../../const": 46,
                    "../../../math": 70,
                    "../../../settings": 101,
                    "pixi-gl-core": 15
                }],
                97: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        var i = !t;
                        if (i) {
                            var n = document.createElement("canvas");
                            n.width = 1, n.height = 1, t = a.default.createContext(n)
                        }
                        for (var o = t.createShader(t.FRAGMENT_SHADER);;) {
                            var l = s.replace(/%forloop%/gi, r(e));
                            if (t.shaderSource(o, l), t.compileShader(o), t.getShaderParameter(o, t.COMPILE_STATUS)) break;
                            e = e / 2 | 0
                        }
                        return i && t.getExtension("WEBGL_lose_context") && t.getExtension("WEBGL_lose_context").loseContext(), e
                    }

                    function r(e) {
                        for (var t = "", i = 0; i < e; ++i) i > 0 && (t += "\nelse "), i < e - 1 && (t += "if(test == " + i + ".0){}");
                        return t
                    }
                    i.__esModule = !0, i.default = n;
                    var o = e("pixi-gl-core"),
                        a = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(o),
                        s = ["precision mediump float;", "void main(void){", "float test = 0.1;", "%forloop%", "gl_FragColor = vec4(0.0);", "}"].join("\n")
                }, {
                    "pixi-gl-core": 15
                }],
                98: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [];
                        return t[r.BLEND_MODES.NORMAL] = [e.ONE, e.ONE_MINUS_SRC_ALPHA], t[r.BLEND_MODES.ADD] = [e.ONE, e.ONE], t[r.BLEND_MODES.MULTIPLY] = [e.DST_COLOR, e.ONE_MINUS_SRC_ALPHA, e.ONE, e.ONE_MINUS_SRC_ALPHA], t[r.BLEND_MODES.SCREEN] = [e.ONE, e.ONE_MINUS_SRC_COLOR, e.ONE, e.ONE_MINUS_SRC_ALPHA], t[r.BLEND_MODES.OVERLAY] = [e.ONE, e.ONE_MINUS_SRC_ALPHA], t[r.BLEND_MODES.DARKEN] = [e.ONE, e.ONE_MINUS_SRC_ALPHA], t[r.BLEND_MODES.LIGHTEN] = [e.ONE, e.ONE_MINUS_SRC_ALPHA], t[r.BLEND_MODES.COLOR_DODGE] = [e.ONE, e.ONE_MINUS_SRC_ALPHA], t[r.BLEND_MODES.COLOR_BURN] = [e.ONE, e.ONE_MINUS_SRC_ALPHA], t[r.BLEND_MODES.HARD_LIGHT] = [e.ONE, e.ONE_MINUS_SRC_ALPHA], t[r.BLEND_MODES.SOFT_LIGHT] = [e.ONE, e.ONE_MINUS_SRC_ALPHA], t[r.BLEND_MODES.DIFFERENCE] = [e.ONE, e.ONE_MINUS_SRC_ALPHA], t[r.BLEND_MODES.EXCLUSION] = [e.ONE, e.ONE_MINUS_SRC_ALPHA], t[r.BLEND_MODES.HUE] = [e.ONE, e.ONE_MINUS_SRC_ALPHA], t[r.BLEND_MODES.SATURATION] = [e.ONE, e.ONE_MINUS_SRC_ALPHA], t[r.BLEND_MODES.COLOR] = [e.ONE, e.ONE_MINUS_SRC_ALPHA], t[r.BLEND_MODES.LUMINOSITY] = [e.ONE, e.ONE_MINUS_SRC_ALPHA], t[r.BLEND_MODES.NORMAL_NPM] = [e.SRC_ALPHA, e.ONE_MINUS_SRC_ALPHA, e.ONE, e.ONE_MINUS_SRC_ALPHA], t[r.BLEND_MODES.ADD_NPM] = [e.SRC_ALPHA, e.ONE, e.ONE, e.ONE], t[r.BLEND_MODES.SCREEN_NPM] = [e.SRC_ALPHA, e.ONE_MINUS_SRC_COLOR, e.ONE, e.ONE_MINUS_SRC_ALPHA], t
                    }
                    i.__esModule = !0, i.default = n;
                    var r = e("../../../const")
                }, {
                    "../../../const": 46
                }],
                99: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                        return t[r.DRAW_MODES.POINTS] = e.POINTS, t[r.DRAW_MODES.LINES] = e.LINES, t[r.DRAW_MODES.LINE_LOOP] = e.LINE_LOOP, t[r.DRAW_MODES.LINE_STRIP] = e.LINE_STRIP, t[r.DRAW_MODES.TRIANGLES] = e.TRIANGLES, t[r.DRAW_MODES.TRIANGLE_STRIP] = e.TRIANGLE_STRIP, t[r.DRAW_MODES.TRIANGLE_FAN] = e.TRIANGLE_FAN, t
                    }
                    i.__esModule = !0, i.default = n;
                    var r = e("../../../const")
                }, {
                    "../../../const": 46
                }],
                100: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        e.getContextAttributes().stencil
                    }
                    i.__esModule = !0, i.default = n
                }, {}],
                101: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }
                    i.__esModule = !0;
                    var r = e("./utils/maxRecommendedTextures"),
                        o = n(r),
                        a = e("./utils/canUploadSameBuffer"),
                        s = n(a);
                    i.default = {
                        TARGET_FPMS: .06,
                        MIPMAP_TEXTURES: !0,
                        RESOLUTION: 1,
                        FILTER_RESOLUTION: 1,
                        SPRITE_MAX_TEXTURES: (0, o.default)(32),
                        SPRITE_BATCH_SIZE: 4096,
                        RETINA_PREFIX: /@([0-9\.]+)x/,
                        RENDER_OPTIONS: {
                            view: null,
                            antialias: !1,
                            forceFXAA: !1,
                            autoResize: !1,
                            transparent: !1,
                            backgroundColor: 0,
                            clearBeforeRender: !0,
                            preserveDrawingBuffer: !1,
                            roundPixels: !1,
                            width: 800,
                            height: 600,
                            legacy: !1
                        },
                        TRANSFORM_MODE: 0,
                        GC_MODE: 0,
                        GC_MAX_IDLE: 3600,
                        GC_MAX_CHECK_COUNT: 600,
                        WRAP_MODE: 0,
                        SCALE_MODE: 0,
                        PRECISION_VERTEX: "highp",
                        PRECISION_FRAGMENT: "mediump",
                        CAN_UPLOAD_SAME_BUFFER: (0, s.default)(),
                        MESH_CANVAS_PADDING: 0
                    }
                }, {
                    "./utils/canUploadSameBuffer": 122,
                    "./utils/maxRecommendedTextures": 127
                }],
                102: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function a(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var s = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        l = e("../math"),
                        u = e("../utils"),
                        c = e("../const"),
                        h = e("../textures/Texture"),
                        p = n(h),
                        f = e("../display/Container"),
                        d = n(f),
                        _ = new l.Point,
                        m = function(e) {
                            function t(i) {
                                r(this, t);
                                var n = o(this, e.call(this));
                                return n._anchor = new l.ObservablePoint(n._onAnchorUpdate, n, i ? i.defaultAnchor.x : 0, i ? i.defaultAnchor.y : 0), n._texture = null, n._width = 0, n._height = 0, n._tint = null, n._tintRGB = null, n.tint = 16777215, n.blendMode = c.BLEND_MODES.NORMAL, n.shader = null, n.cachedTint = 16777215, n.texture = i || p.default.EMPTY, n.vertexData = new Float32Array(8), n.vertexTrimmedData = null, n._transformID = -1, n._textureID = -1, n._transformTrimmedID = -1, n._textureTrimmedID = -1, n.pluginName = "sprite", n
                            }
                            return a(t, e), t.prototype._onTextureUpdate = function() {
                                this._textureID = -1, this._textureTrimmedID = -1, this.cachedTint = 16777215, this._width && (this.scale.x = (0, u.sign)(this.scale.x) * this._width / this._texture.orig.width), this._height && (this.scale.y = (0, u.sign)(this.scale.y) * this._height / this._texture.orig.height)
                            }, t.prototype._onAnchorUpdate = function() {
                                this._transformID = -1, this._transformTrimmedID = -1
                            }, t.prototype.calculateVertices = function() {
                                if (this._transformID !== this.transform._worldID || this._textureID !== this._texture._updateID) {
                                    this._transformID = this.transform._worldID, this._textureID = this._texture._updateID;
                                    var e = this._texture,
                                        t = this.transform.worldTransform,
                                        i = t.a,
                                        n = t.b,
                                        r = t.c,
                                        o = t.d,
                                        a = t.tx,
                                        s = t.ty,
                                        l = this.vertexData,
                                        u = e.trim,
                                        c = e.orig,
                                        h = this._anchor,
                                        p = 0,
                                        f = 0,
                                        d = 0,
                                        _ = 0;
                                    u ? (f = u.x - h._x * c.width, p = f + u.width, _ = u.y - h._y * c.height, d = _ + u.height) : (f = -h._x * c.width, p = f + c.width, _ = -h._y * c.height, d = _ + c.height), l[0] = i * f + r * _ + a, l[1] = o * _ + n * f + s, l[2] = i * p + r * _ + a, l[3] = o * _ + n * p + s, l[4] = i * p + r * d + a, l[5] = o * d + n * p + s, l[6] = i * f + r * d + a, l[7] = o * d + n * f + s
                                }
                            }, t.prototype.calculateTrimmedVertices = function() {
                                if (this.vertexTrimmedData) {
                                    if (this._transformTrimmedID === this.transform._worldID && this._textureTrimmedID === this._texture._updateID) return
                                } else this.vertexTrimmedData = new Float32Array(8);
                                this._transformTrimmedID = this.transform._worldID, this._textureTrimmedID = this._texture._updateID;
                                var e = this._texture,
                                    t = this.vertexTrimmedData,
                                    i = e.orig,
                                    n = this._anchor,
                                    r = this.transform.worldTransform,
                                    o = r.a,
                                    a = r.b,
                                    s = r.c,
                                    l = r.d,
                                    u = r.tx,
                                    c = r.ty,
                                    h = -n._x * i.width,
                                    p = h + i.width,
                                    f = -n._y * i.height,
                                    d = f + i.height;
                                t[0] = o * h + s * f + u, t[1] = l * f + a * h + c, t[2] = o * p + s * f + u, t[3] = l * f + a * p + c, t[4] = o * p + s * d + u, t[5] = l * d + a * p + c, t[6] = o * h + s * d + u, t[7] = l * d + a * h + c
                            }, t.prototype._renderWebGL = function(e) {
                                this.calculateVertices(), e.setObjectRenderer(e.plugins[this.pluginName]), e.plugins[this.pluginName].render(this)
                            }, t.prototype._renderCanvas = function(e) {
                                e.plugins[this.pluginName].render(this)
                            }, t.prototype._calculateBounds = function() {
                                var e = this._texture.trim,
                                    t = this._texture.orig;
                                !e || e.width === t.width && e.height === t.height ? (this.calculateVertices(), this._bounds.addQuad(this.vertexData)) : (this.calculateTrimmedVertices(), this._bounds.addQuad(this.vertexTrimmedData))
                            }, t.prototype.getLocalBounds = function(t) {
                                return 0 === this.children.length ? (this._bounds.minX = this._texture.orig.width * -this._anchor._x, this._bounds.minY = this._texture.orig.height * -this._anchor._y, this._bounds.maxX = this._texture.orig.width * (1 - this._anchor._x), this._bounds.maxY = this._texture.orig.height * (1 - this._anchor._y), t || (this._localBoundsRect || (this._localBoundsRect = new l.Rectangle), t = this._localBoundsRect), this._bounds.getRectangle(t)) : e.prototype.getLocalBounds.call(this, t)
                            }, t.prototype.containsPoint = function(e) {
                                this.worldTransform.applyInverse(e, _);
                                var t = this._texture.orig.width,
                                    i = this._texture.orig.height,
                                    n = -t * this.anchor.x,
                                    r = 0;
                                return _.x >= n && _.x < n + t && (r = -i * this.anchor.y, _.y >= r && _.y < r + i)
                            }, t.prototype.destroy = function(t) {
                                if (e.prototype.destroy.call(this, t), this._texture.off("update", this._onTextureUpdate, this), this._anchor = null, "boolean" == typeof t ? t : t && t.texture) {
                                    var i = "boolean" == typeof t ? t : t && t.baseTexture;
                                    this._texture.destroy(!!i)
                                }
                                this._texture = null, this.shader = null
                            }, t.from = function(e) {
                                return new t(p.default.from(e))
                            }, t.fromFrame = function(e) {
                                var i = u.TextureCache[e];
                                if (!i) throw new Error('The frameId "' + e + '" does not exist in the texture cache');
                                return new t(i)
                            }, t.fromImage = function(e, i, n) {
                                return new t(p.default.fromImage(e, i, n))
                            }, s(t, [{
                                key: "width",
                                get: function() {
                                    return Math.abs(this.scale.x) * this._texture.orig.width
                                },
                                set: function(e) {
                                    var t = (0, u.sign)(this.scale.x) || 1;
                                    this.scale.x = t * e / this._texture.orig.width, this._width = e
                                }
                            }, {
                                key: "height",
                                get: function() {
                                    return Math.abs(this.scale.y) * this._texture.orig.height
                                },
                                set: function(e) {
                                    var t = (0, u.sign)(this.scale.y) || 1;
                                    this.scale.y = t * e / this._texture.orig.height, this._height = e
                                }
                            }, {
                                key: "anchor",
                                get: function() {
                                    return this._anchor
                                },
                                set: function(e) {
                                    this._anchor.copy(e)
                                }
                            }, {
                                key: "tint",
                                get: function() {
                                    return this._tint
                                },
                                set: function(e) {
                                    this._tint = e, this._tintRGB = (e >> 16) + (65280 & e) + ((255 & e) << 16)
                                }
                            }, {
                                key: "texture",
                                get: function() {
                                    return this._texture
                                },
                                set: function(e) {
                                    this._texture !== e && (this._texture = e || p.default.EMPTY, this.cachedTint = 16777215, this._textureID = -1, this._textureTrimmedID = -1, e && (e.baseTexture.hasLoaded ? this._onTextureUpdate() : e.once("update", this._onTextureUpdate, this)))
                                }
                            }]), t
                        }(d.default);
                    i.default = m
                }, {
                    "../const": 46,
                    "../display/Container": 48,
                    "../math": 70,
                    "../textures/Texture": 115,
                    "../utils": 125
                }],
                103: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var o = e("../../renderers/canvas/CanvasRenderer"),
                        a = n(o),
                        s = e("../../const"),
                        l = e("../../math"),
                        u = e("./CanvasTinter"),
                        c = n(u),
                        h = new l.Matrix,
                        p = function() {
                            function e(t) {
                                r(this, e), this.renderer = t
                            }
                            return e.prototype.render = function(e) {
                                var t = e._texture,
                                    i = this.renderer,
                                    n = t._frame.width,
                                    r = t._frame.height,
                                    o = e.transform.worldTransform,
                                    a = 0,
                                    u = 0;
                                if (!(t.orig.width <= 0 || t.orig.height <= 0) && t.baseTexture.source && (i.setBlendMode(e.blendMode), t.valid)) {
                                    i.context.globalAlpha = e.worldAlpha;
                                    var p = t.baseTexture.scaleMode === s.SCALE_MODES.LINEAR;
                                    i.smoothProperty && i.context[i.smoothProperty] !== p && (i.context[i.smoothProperty] = p), t.trim ? (a = t.trim.width / 2 + t.trim.x - e.anchor.x * t.orig.width, u = t.trim.height / 2 + t.trim.y - e.anchor.y * t.orig.height) : (a = (.5 - e.anchor.x) * t.orig.width, u = (.5 - e.anchor.y) * t.orig.height), t.rotate && (o.copy(h), o = h, l.GroupD8.matrixAppendRotationInv(o, t.rotate, a, u), a = 0, u = 0), a -= n / 2, u -= r / 2, i.roundPixels ? (i.context.setTransform(o.a, o.b, o.c, o.d, o.tx * i.resolution | 0, o.ty * i.resolution | 0), a |= 0, u |= 0) : i.context.setTransform(o.a, o.b, o.c, o.d, o.tx * i.resolution, o.ty * i.resolution);
                                    var f = t.baseTexture.resolution;
                                    16777215 !== e.tint ? (e.cachedTint === e.tint && e.tintedTexture.tintId === e._texture._updateID || (e.cachedTint = e.tint, e.tintedTexture = c.default.getTintedTexture(e, e.tint)), i.context.drawImage(e.tintedTexture, 0, 0, n * f, r * f, a * i.resolution, u * i.resolution, n * i.resolution, r * i.resolution)) : i.context.drawImage(t.baseTexture.source, t._frame.x * f, t._frame.y * f, n * f, r * f, a * i.resolution, u * i.resolution, n * i.resolution, r * i.resolution)
                                }
                            }, e.prototype.destroy = function() {
                                this.renderer = null
                            }, e
                        }();
                    i.default = p, a.default.registerPlugin("sprite", p)
                }, {
                    "../../const": 46,
                    "../../math": 70,
                    "../../renderers/canvas/CanvasRenderer": 77,
                    "./CanvasTinter": 104
                }],
                104: [function(e, t, i) {
                    "use strict";
                    i.__esModule = !0;
                    var n = e("../../utils"),
                        r = e("../../renderers/canvas/utils/canUseNewCanvasBlendModes"),
                        o = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(r),
                        a = {
                            getTintedTexture: function(e, t) {
                                var i = e._texture;
                                t = a.roundColor(t);
                                var n = "#" + ("00000" + (0 | t).toString(16)).substr(-6);
                                i.tintCache = i.tintCache || {};
                                var r = i.tintCache[n],
                                    o = void 0;
                                if (r) {
                                    if (r.tintId === i._updateID) return i.tintCache[n];
                                    o = i.tintCache[n]
                                } else o = a.canvas || document.createElement("canvas");
                                if (a.tintMethod(i, t, o), o.tintId = i._updateID, a.convertTintToImage) {
                                    var s = new Image;
                                    s.src = o.toDataURL(), i.tintCache[n] = s
                                } else i.tintCache[n] = o, a.canvas = null;
                                return o
                            },
                            tintWithMultiply: function(e, t, i) {
                                var n = i.getContext("2d"),
                                    r = e._frame.clone(),
                                    o = e.baseTexture.resolution;
                                r.x *= o, r.y *= o, r.width *= o, r.height *= o, i.width = Math.ceil(r.width), i.height = Math.ceil(r.height), n.save(), n.fillStyle = "#" + ("00000" + (0 | t).toString(16)).substr(-6), n.fillRect(0, 0, r.width, r.height), n.globalCompositeOperation = "multiply", n.drawImage(e.baseTexture.source, r.x, r.y, r.width, r.height, 0, 0, r.width, r.height), n.globalCompositeOperation = "destination-atop", n.drawImage(e.baseTexture.source, r.x, r.y, r.width, r.height, 0, 0, r.width, r.height), n.restore()
                            },
                            tintWithOverlay: function(e, t, i) {
                                var n = i.getContext("2d"),
                                    r = e._frame.clone(),
                                    o = e.baseTexture.resolution;
                                r.x *= o, r.y *= o, r.width *= o, r.height *= o, i.width = Math.ceil(r.width), i.height = Math.ceil(r.height), n.save(), n.globalCompositeOperation = "copy", n.fillStyle = "#" + ("00000" + (0 | t).toString(16)).substr(-6), n.fillRect(0, 0, r.width, r.height), n.globalCompositeOperation = "destination-atop", n.drawImage(e.baseTexture.source, r.x, r.y, r.width, r.height, 0, 0, r.width, r.height), n.restore()
                            },
                            tintWithPerPixel: function(e, t, i) {
                                var r = i.getContext("2d"),
                                    o = e._frame.clone(),
                                    a = e.baseTexture.resolution;
                                o.x *= a, o.y *= a, o.width *= a, o.height *= a, i.width = Math.ceil(o.width), i.height = Math.ceil(o.height), r.save(), r.globalCompositeOperation = "copy", r.drawImage(e.baseTexture.source, o.x, o.y, o.width, o.height, 0, 0, o.width, o.height), r.restore();
                                for (var s = (0, n.hex2rgb)(t), l = s[0], u = s[1], c = s[2], h = r.getImageData(0, 0, o.width, o.height), p = h.data, f = 0; f < p.length; f += 4) p[f + 0] *= l, p[f + 1] *= u, p[f + 2] *= c;
                                r.putImageData(h, 0, 0)
                            },
                            roundColor: function(e) {
                                var t = a.cacheStepsPerColorChannel,
                                    i = (0, n.hex2rgb)(e);
                                return i[0] = Math.min(255, i[0] / t * t), i[1] = Math.min(255, i[1] / t * t), i[2] = Math.min(255, i[2] / t * t), (0, n.rgb2hex)(i)
                            },
                            cacheStepsPerColorChannel: 8,
                            convertTintToImage: !1,
                            canUseMultiply: (0, o.default)(),
                            tintMethod: 0
                        };
                    a.tintMethod = a.canUseMultiply ? a.tintWithMultiply : a.tintWithPerPixel, i.default = a
                }, {
                    "../../renderers/canvas/utils/canUseNewCanvasBlendModes": 80,
                    "../../utils": 125
                }],
                105: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = function() {
                        function e(t) {
                            n(this, e), this.vertices = new ArrayBuffer(t), this.float32View = new Float32Array(this.vertices), this.uint32View = new Uint32Array(this.vertices)
                        }
                        return e.prototype.destroy = function() {
                            this.vertices = null, this.positions = null, this.uvs = null, this.colors = null
                        }, e
                    }();
                    i.default = r
                }, {}],
                106: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function a(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var s = e("../../renderers/webgl/utils/ObjectRenderer"),
                        l = n(s),
                        u = e("../../renderers/webgl/WebGLRenderer"),
                        c = n(u),
                        h = e("../../utils/createIndicesForQuads"),
                        p = n(h),
                        f = e("./generateMultiTextureShader"),
                        d = n(f),
                        _ = e("../../renderers/webgl/utils/checkMaxIfStatmentsInShader"),
                        m = n(_),
                        g = e("./BatchBuffer"),
                        v = n(g),
                        y = e("../../settings"),
                        b = n(y),
                        x = e("../../utils"),
                        S = e("pixi-gl-core"),
                        T = n(S),
                        w = e("bit-twiddle"),
                        E = n(w),
                        P = 0,
                        R = 0,
                        O = function(e) {
                            function t(i) {
                                r(this, t);
                                var n = o(this, e.call(this, i));
                                n.vertSize = 5, n.vertByteSize = 4 * n.vertSize, n.size = b.default.SPRITE_BATCH_SIZE, n.buffers = [];
                                for (var a = 1; a <= E.default.nextPow2(n.size); a *= 2) n.buffers.push(new v.default(4 * a * n.vertByteSize));
                                n.indices = (0, p.default)(n.size), n.shader = null, n.currentIndex = 0, n.groups = [];
                                for (var s = 0; s < n.size; s++) n.groups[s] = {
                                    textures: [],
                                    textureCount: 0,
                                    ids: [],
                                    size: 0,
                                    start: 0,
                                    blend: 0
                                };
                                return n.sprites = [], n.vertexBuffers = [], n.vaos = [], n.vaoMax = 2, n.vertexCount = 0, n.renderer.on("prerender", n.onPrerender, n), n
                            }
                            return a(t, e), t.prototype.onContextChange = function() {
                                var e = this.renderer.gl;
                                this.renderer.legacy ? this.MAX_TEXTURES = 1 : (this.MAX_TEXTURES = Math.min(e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS), b.default.SPRITE_MAX_TEXTURES), this.MAX_TEXTURES = (0, m.default)(this.MAX_TEXTURES, e)), this.shader = (0, d.default)(e, this.MAX_TEXTURES), this.indexBuffer = T.default.GLBuffer.createIndexBuffer(e, this.indices, e.STATIC_DRAW), this.renderer.bindVao(null);
                                for (var t = this.shader.attributes, i = 0; i < this.vaoMax; i++) {
                                    var n = this.vertexBuffers[i] = T.default.GLBuffer.createVertexBuffer(e, null, e.STREAM_DRAW),
                                        r = this.renderer.createVao().addIndex(this.indexBuffer).addAttribute(n, t.aVertexPosition, e.FLOAT, !1, this.vertByteSize, 0).addAttribute(n, t.aTextureCoord, e.UNSIGNED_SHORT, !0, this.vertByteSize, 8).addAttribute(n, t.aColor, e.UNSIGNED_BYTE, !0, this.vertByteSize, 12);
                                    t.aTextureId && r.addAttribute(n, t.aTextureId, e.FLOAT, !1, this.vertByteSize, 16), this.vaos[i] = r
                                }
                                this.vao = this.vaos[0], this.currentBlendMode = 99999, this.boundTextures = new Array(this.MAX_TEXTURES)
                            }, t.prototype.onPrerender = function() {
                                this.vertexCount = 0
                            }, t.prototype.render = function(e) {
                                this.currentIndex >= this.size && this.flush(), e._texture._uvs && (this.sprites[this.currentIndex++] = e)
                            }, t.prototype.flush = function() {
                                if (0 !== this.currentIndex) {
                                    var e = this.renderer.gl,
                                        t = this.MAX_TEXTURES,
                                        i = E.default.nextPow2(this.currentIndex),
                                        n = E.default.log2(i),
                                        r = this.buffers[n],
                                        o = this.sprites,
                                        a = this.groups,
                                        s = r.float32View,
                                        l = r.uint32View,
                                        u = this.boundTextures,
                                        c = this.renderer.boundTextures,
                                        h = this.renderer.textureGC.count,
                                        p = 0,
                                        f = void 0,
                                        d = void 0,
                                        _ = 1,
                                        m = 0,
                                        g = a[0],
                                        v = void 0,
                                        y = void 0,
                                        S = x.premultiplyBlendMode[o[0]._texture.baseTexture.premultipliedAlpha ? 1 : 0][o[0].blendMode];
                                    g.textureCount = 0, g.start = 0, g.blend = S, P++;
                                    var w = void 0;
                                    for (w = 0; w < t; ++w) {
                                        var O = c[w];
                                        O._enabled !== P ? (u[w] = O, O._virtalBoundId = w, O._enabled = P) : u[w] = this.renderer.emptyTextures[w]
                                    }
                                    for (P++, w = 0; w < this.currentIndex; ++w) {
                                        var A = o[w];
                                        o[w] = null, f = A._texture.baseTexture;
                                        var I = x.premultiplyBlendMode[Number(f.premultipliedAlpha)][A.blendMode];
                                        if (S !== I && (S = I, d = null, m = t, P++), d !== f && (d = f, f._enabled !== P)) {
                                            if (m === t && (P++, g.size = w - g.start, m = 0, g = a[_++], g.blend = S, g.textureCount = 0, g.start = w), f.touched = h, -1 === f._virtalBoundId)
                                                for (var C = 0; C < t; ++C) {
                                                    var M = (C + R) % t,
                                                        D = u[M];
                                                    if (D._enabled !== P) {
                                                        R++, D._virtalBoundId = -1, f._virtalBoundId = M, u[M] = f;
                                                        break
                                                    }
                                                }
                                            f._enabled = P, g.textureCount++, g.ids[m] = f._virtalBoundId, g.textures[m++] = f
                                        }
                                        if (v = A.vertexData, y = A._texture._uvs.uvsUint32, this.renderer.roundPixels) {
                                            var N = this.renderer.resolution;
                                            s[p] = (v[0] * N | 0) / N, s[p + 1] = (v[1] * N | 0) / N, s[p + 5] = (v[2] * N | 0) / N, s[p + 6] = (v[3] * N | 0) / N, s[p + 10] = (v[4] * N | 0) / N, s[p + 11] = (v[5] * N | 0) / N, s[p + 15] = (v[6] * N | 0) / N, s[p + 16] = (v[7] * N | 0) / N
                                        } else s[p] = v[0], s[p + 1] = v[1], s[p + 5] = v[2], s[p + 6] = v[3], s[p + 10] = v[4], s[p + 11] = v[5], s[p + 15] = v[6], s[p + 16] = v[7];
                                        l[p + 2] = y[0], l[p + 7] = y[1], l[p + 12] = y[2], l[p + 17] = y[3];
                                        var L = Math.min(A.worldAlpha, 1),
                                            k = L < 1 && f.premultipliedAlpha ? (0, x.premultiplyTint)(A._tintRGB, L) : A._tintRGB + (255 * L << 24);
                                        l[p + 3] = l[p + 8] = l[p + 13] = l[p + 18] = k, s[p + 4] = s[p + 9] = s[p + 14] = s[p + 19] = f._virtalBoundId, p += 20
                                    }
                                    if (g.size = w - g.start, b.default.CAN_UPLOAD_SAME_BUFFER) this.vertexBuffers[this.vertexCount].upload(r.vertices, 0, !0);
                                    else {
                                        if (this.vaoMax <= this.vertexCount) {
                                            this.vaoMax++;
                                            var F = this.shader.attributes,
                                                B = this.vertexBuffers[this.vertexCount] = T.default.GLBuffer.createVertexBuffer(e, null, e.STREAM_DRAW),
                                                G = this.renderer.createVao().addIndex(this.indexBuffer).addAttribute(B, F.aVertexPosition, e.FLOAT, !1, this.vertByteSize, 0).addAttribute(B, F.aTextureCoord, e.UNSIGNED_SHORT, !0, this.vertByteSize, 8).addAttribute(B, F.aColor, e.UNSIGNED_BYTE, !0, this.vertByteSize, 12);
                                            F.aTextureId && G.addAttribute(B, F.aTextureId, e.FLOAT, !1, this.vertByteSize, 16), this.vaos[this.vertexCount] = G
                                        }
                                        this.renderer.bindVao(this.vaos[this.vertexCount]), this.vertexBuffers[this.vertexCount].upload(r.vertices, 0, !1), this.vertexCount++
                                    }
                                    for (w = 0; w < t; ++w) c[w]._virtalBoundId = -1;
                                    for (w = 0; w < _; ++w) {
                                        for (var U = a[w], j = U.textureCount, W = 0; W < j; W++) d = U.textures[W], c[U.ids[W]] !== d && this.renderer.bindTexture(d, U.ids[W], !0), d._virtalBoundId = -1;
                                        this.renderer.state.setBlendMode(U.blend), e.drawElements(e.TRIANGLES, 6 * U.size, e.UNSIGNED_SHORT, 6 * U.start * 2)
                                    }
                                    this.currentIndex = 0
                                }
                            }, t.prototype.start = function() {
                                this.renderer.bindShader(this.shader), b.default.CAN_UPLOAD_SAME_BUFFER && (this.renderer.bindVao(this.vaos[this.vertexCount]), this.vertexBuffers[this.vertexCount].bind())
                            }, t.prototype.stop = function() {
                                this.flush()
                            }, t.prototype.destroy = function() {
                                for (var t = 0; t < this.vaoMax; t++) this.vertexBuffers[t] && this.vertexBuffers[t].destroy(), this.vaos[t] && this.vaos[t].destroy();
                                this.indexBuffer && this.indexBuffer.destroy(), this.renderer.off("prerender", this.onPrerender, this), e.prototype.destroy.call(this), this.shader && (this.shader.destroy(), this.shader = null), this.vertexBuffers = null, this.vaos = null, this.indexBuffer = null, this.indices = null, this.sprites = null;
                                for (var i = 0; i < this.buffers.length; ++i) this.buffers[i].destroy()
                            }, t
                        }(l.default);
                    i.default = O, c.default.registerPlugin("sprite", O)
                }, {
                    "../../renderers/webgl/WebGLRenderer": 84,
                    "../../renderers/webgl/utils/ObjectRenderer": 94,
                    "../../renderers/webgl/utils/checkMaxIfStatmentsInShader": 97,
                    "../../settings": 101,
                    "../../utils": 125,
                    "../../utils/createIndicesForQuads": 123,
                    "./BatchBuffer": 105,
                    "./generateMultiTextureShader": 107,
                    "bit-twiddle": 1,
                    "pixi-gl-core": 15
                }],
                107: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        var i = s;
                        i = i.replace(/%count%/gi, t), i = i.replace(/%forloop%/gi, r(t));
                        for (var n = new a.default(e, "precision highp float;\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\nattribute float aTextureId;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nvoid main(void){\n    gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n    vTextureCoord = aTextureCoord;\n    vTextureId = aTextureId;\n    vColor = aColor;\n}\n", i), o = [], l = 0; l < t; l++) o[l] = l;
                        return n.bind(), n.uniforms.uSamplers = o, n
                    }

                    function r(e) {
                        var t = "";
                        t += "\n", t += "\n";
                        for (var i = 0; i < e; i++) i > 0 && (t += "\nelse "), i < e - 1 && (t += "if(vTextureId < " + i + ".5)"), t += "\n{", t += "\n\tcolor = texture2D(uSamplers[" + i + "], vTextureCoord);", t += "\n}";
                        return t += "\n", t += "\n"
                    }
                    i.__esModule = !0, i.default = n;
                    var o = e("../../Shader"),
                        a = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(o),
                        s = (e("path"), ["varying vec2 vTextureCoord;", "varying vec4 vColor;", "varying float vTextureId;", "uniform sampler2D uSamplers[%count%];", "void main(void){", "vec4 color;", "%forloop%", "gl_FragColor = color * vColor;", "}"].join("\n"))
                }, {
                    "../../Shader": 44,
                    path: 8
                }],
                108: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function a(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var s = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        l = e("../sprites/Sprite"),
                        u = n(l),
                        c = e("../textures/Texture"),
                        h = n(c),
                        p = e("../math"),
                        f = e("../utils"),
                        d = e("../const"),
                        _ = e("../settings"),
                        m = n(_),
                        g = e("./TextStyle"),
                        v = n(g),
                        y = e("./TextMetrics"),
                        b = n(y),
                        x = e("../utils/trimCanvas"),
                        S = n(x),
                        T = {
                            texture: !0,
                            children: !1,
                            baseTexture: !0
                        },
                        w = function(e) {
                            function t(i, n, a) {
                                r(this, t), a = a || document.createElement("canvas"), a.width = 3, a.height = 3;
                                var s = h.default.fromCanvas(a, m.default.SCALE_MODE, "text");
                                s.orig = new p.Rectangle, s.trim = new p.Rectangle;
                                var l = o(this, e.call(this, s));
                                return h.default.addToCache(l._texture, l._texture.baseTexture.textureCacheIds[0]), l.canvas = a, l.context = l.canvas.getContext("2d"), l.resolution = m.default.RESOLUTION, l._text = null, l._style = null, l._styleListener = null, l._font = "", l.text = i, l.style = n, l.localStyleID = -1, l
                            }
                            return a(t, e), t.prototype.updateText = function(e) {
                                var t = this._style;
                                if (this.localStyleID !== t.styleID && (this.dirty = !0, this.localStyleID = t.styleID), this.dirty || !e) {
                                    this._font = this._style.toFontString();
                                    var i = this.context,
                                        n = b.default.measureText(this._text, this._style, this._style.wordWrap, this.canvas),
                                        r = n.width,
                                        o = n.height,
                                        a = n.lines,
                                        s = n.lineHeight,
                                        l = n.lineWidths,
                                        u = n.maxLineWidth,
                                        c = n.fontProperties;
                                    this.canvas.width = Math.ceil((Math.max(1, r) + 2 * t.padding) * this.resolution),
                                        this.canvas.height = Math.ceil((Math.max(1, o) + 2 * t.padding) * this.resolution), i.scale(this.resolution, this.resolution), i.clearRect(0, 0, this.canvas.width, this.canvas.height), i.font = this._font, i.strokeStyle = t.stroke, i.lineWidth = t.strokeThickness, i.textBaseline = t.textBaseline, i.lineJoin = t.lineJoin, i.miterLimit = t.miterLimit;
                                    var h = void 0,
                                        p = void 0;
                                    if (t.dropShadow) {
                                        i.fillStyle = t.dropShadowColor, i.globalAlpha = t.dropShadowAlpha, i.shadowBlur = t.dropShadowBlur, t.dropShadowBlur > 0 && (i.shadowColor = t.dropShadowColor);
                                        for (var f = Math.cos(t.dropShadowAngle) * t.dropShadowDistance, d = Math.sin(t.dropShadowAngle) * t.dropShadowDistance, _ = 0; _ < a.length; _++) h = t.strokeThickness / 2, p = t.strokeThickness / 2 + _ * s + c.ascent, "right" === t.align ? h += u - l[_] : "center" === t.align && (h += (u - l[_]) / 2), t.fill && (this.drawLetterSpacing(a[_], h + f + t.padding, p + d + t.padding), t.stroke && t.strokeThickness && (i.strokeStyle = t.dropShadowColor, this.drawLetterSpacing(a[_], h + f + t.padding, p + d + t.padding, !0), i.strokeStyle = t.stroke))
                                    }
                                    i.shadowBlur = 0, i.globalAlpha = 1, i.fillStyle = this._generateFillStyle(t, a);
                                    for (var m = 0; m < a.length; m++) h = t.strokeThickness / 2, p = t.strokeThickness / 2 + m * s + c.ascent, "right" === t.align ? h += u - l[m] : "center" === t.align && (h += (u - l[m]) / 2), t.stroke && t.strokeThickness && this.drawLetterSpacing(a[m], h + t.padding, p + t.padding, !0), t.fill && this.drawLetterSpacing(a[m], h + t.padding, p + t.padding);
                                    this.updateTexture()
                                }
                            }, t.prototype.drawLetterSpacing = function(e, t, i) {
                                var n = arguments.length > 3 && void 0 !== arguments[3] && arguments[3],
                                    r = this._style,
                                    o = r.letterSpacing;
                                if (0 === o) return void(n ? this.context.strokeText(e, t, i) : this.context.fillText(e, t, i));
                                for (var a = String.prototype.split.call(e, ""), s = t, l = 0, u = ""; l < e.length;) u = a[l++], n ? this.context.strokeText(u, s, i) : this.context.fillText(u, s, i), s += this.context.measureText(u).width + o
                            }, t.prototype.updateTexture = function() {
                                var e = this.canvas;
                                if (this._style.trim) {
                                    var t = (0, S.default)(e);
                                    t.data && (e.width = t.width, e.height = t.height, this.context.putImageData(t.data, 0, 0))
                                }
                                var i = this._texture,
                                    n = this._style,
                                    r = n.trim ? 0 : n.padding,
                                    o = i.baseTexture;
                                o.hasLoaded = !0, o.resolution = this.resolution, o.realWidth = e.width, o.realHeight = e.height, o.width = e.width / this.resolution, o.height = e.height / this.resolution, i.trim.width = i._frame.width = e.width / this.resolution, i.trim.height = i._frame.height = e.height / this.resolution, i.trim.x = -r, i.trim.y = -r, i.orig.width = i._frame.width - 2 * r, i.orig.height = i._frame.height - 2 * r, this._onTextureUpdate(), o.emit("update", o), this.dirty = !1
                            }, t.prototype.renderWebGL = function(t) {
                                this.resolution !== t.resolution && (this.resolution = t.resolution, this.dirty = !0), this.updateText(!0), e.prototype.renderWebGL.call(this, t)
                            }, t.prototype._renderCanvas = function(t) {
                                this.resolution !== t.resolution && (this.resolution = t.resolution, this.dirty = !0), this.updateText(!0), e.prototype._renderCanvas.call(this, t)
                            }, t.prototype.getLocalBounds = function(t) {
                                return this.updateText(!0), e.prototype.getLocalBounds.call(this, t)
                            }, t.prototype._calculateBounds = function() {
                                this.updateText(!0), this.calculateVertices(), this._bounds.addQuad(this.vertexData)
                            }, t.prototype._onStyleChange = function() {
                                this.dirty = !0
                            }, t.prototype._generateFillStyle = function(e, t) {
                                if (!Array.isArray(e.fill)) return e.fill;
                                if (navigator.isCocoonJS) return e.fill[0];
                                var i = void 0,
                                    n = void 0,
                                    r = void 0,
                                    o = void 0,
                                    a = this.canvas.width / this.resolution,
                                    s = this.canvas.height / this.resolution,
                                    l = e.fill.slice(),
                                    u = e.fillGradientStops.slice();
                                if (!u.length)
                                    for (var c = l.length + 1, h = 1; h < c; ++h) u.push(h / c);
                                if (l.unshift(e.fill[0]), u.unshift(0), l.push(e.fill[e.fill.length - 1]), u.push(1), e.fillGradientType === d.TEXT_GRADIENT.LINEAR_VERTICAL) {
                                    i = this.context.createLinearGradient(a / 2, 0, a / 2, s), n = (l.length + 1) * t.length, r = 0;
                                    for (var p = 0; p < t.length; p++) {
                                        r += 1;
                                        for (var f = 0; f < l.length; f++) o = "number" == typeof u[f] ? u[f] / t.length + p / t.length : r / n, i.addColorStop(o, l[f]), r++
                                    }
                                } else {
                                    i = this.context.createLinearGradient(0, s / 2, a, s / 2), n = l.length + 1, r = 1;
                                    for (var _ = 0; _ < l.length; _++) o = "number" == typeof u[_] ? u[_] : r / n, i.addColorStop(o, l[_]), r++
                                }
                                return i
                            }, t.prototype.destroy = function(t) {
                                "boolean" == typeof t && (t = {
                                    children: t
                                }), t = Object.assign({}, T, t), e.prototype.destroy.call(this, t), this.context = null, this.canvas = null, this._style = null
                            }, s(t, [{
                                key: "width",
                                get: function() {
                                    return this.updateText(!0), Math.abs(this.scale.x) * this._texture.orig.width
                                },
                                set: function(e) {
                                    this.updateText(!0);
                                    var t = (0, f.sign)(this.scale.x) || 1;
                                    this.scale.x = t * e / this._texture.orig.width, this._width = e
                                }
                            }, {
                                key: "height",
                                get: function() {
                                    return this.updateText(!0), Math.abs(this.scale.y) * this._texture.orig.height
                                },
                                set: function(e) {
                                    this.updateText(!0);
                                    var t = (0, f.sign)(this.scale.y) || 1;
                                    this.scale.y = t * e / this._texture.orig.height, this._height = e
                                }
                            }, {
                                key: "style",
                                get: function() {
                                    return this._style
                                },
                                set: function(e) {
                                    e = e || {}, e instanceof v.default ? this._style = e : this._style = new v.default(e), this.localStyleID = -1, this.dirty = !0
                                }
                            }, {
                                key: "text",
                                get: function() {
                                    return this._text
                                },
                                set: function(e) {
                                    e = String("" === e || null === e || void 0 === e ? " " : e), this._text !== e && (this._text = e, this.dirty = !0)
                                }
                            }]), t
                        }(u.default);
                    i.default = w
                }, {
                    "../const": 46,
                    "../math": 70,
                    "../settings": 101,
                    "../sprites/Sprite": 102,
                    "../textures/Texture": 115,
                    "../utils": 125,
                    "../utils/trimCanvas": 130,
                    "./TextMetrics": 109,
                    "./TextStyle": 110
                }],
                109: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = function() {
                        function e(t, i, r, o, a, s, l, u, c) {
                            n(this, e), this.text = t, this.style = i, this.width = r, this.height = o, this.lines = a, this.lineWidths = s, this.lineHeight = l, this.maxLineWidth = u, this.fontProperties = c
                        }
                        return e.measureText = function(t, i, n) {
                            var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : e._canvas;
                            n = void 0 === n || null === n ? i.wordWrap : n;
                            var o = i.toFontString(),
                                a = e.measureFont(o),
                                s = r.getContext("2d");
                            s.font = o;
                            for (var l = n ? e.wordWrap(t, i, r) : t, u = l.split(/(?:\r\n|\r|\n)/), c = new Array(u.length), h = 0, p = 0; p < u.length; p++) {
                                var f = s.measureText(u[p]).width + (u[p].length - 1) * i.letterSpacing;
                                c[p] = f, h = Math.max(h, f)
                            }
                            var d = h + i.strokeThickness;
                            i.dropShadow && (d += i.dropShadowDistance);
                            var _ = i.lineHeight || a.fontSize + i.strokeThickness,
                                m = Math.max(_, a.fontSize + i.strokeThickness) + (u.length - 1) * (_ + i.leading);
                            return i.dropShadow && (m += i.dropShadowDistance), new e(t, i, d, m, u, c, _ + i.leading, h, a)
                        }, e.wordWrap = function(t, i) {
                            for (var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : e._canvas, r = n.getContext("2d"), o = 0, a = "", s = "", l = {}, u = i.letterSpacing, c = i.whiteSpace, h = e.collapseSpaces(c), p = e.collapseNewlines(c), f = !h, d = i.wordWrapWidth + u, _ = e.tokenize(t), m = 0; m < _.length; m++) {
                                var g = _[m];
                                if (e.isNewline(g)) {
                                    if (!p) {
                                        s += e.addLine(a), f = !h, a = "", o = 0;
                                        continue
                                    }
                                    g = " "
                                }
                                if (h) {
                                    var v = e.isBreakingSpace(g),
                                        y = e.isBreakingSpace(a[a.length - 1]);
                                    if (v && y) continue
                                }
                                var b = e.getFromCache(g, u, l, r);
                                if (b > d)
                                    if ("" !== a && (s += e.addLine(a), a = "", o = 0), e.canBreakWords(g, i.breakWords))
                                        for (var x = g.split(""), S = 0; S < x.length; S++) {
                                            for (var T = x[S], w = 1; x[S + w];) {
                                                var E = x[S + w],
                                                    P = T[T.length - 1];
                                                if (e.canBreakChars(P, E, g, S, i.breakWords)) break;
                                                T += E, w++
                                            }
                                            S += T.length - 1;
                                            var R = e.getFromCache(T, u, l, r);
                                            R + o > d && (s += e.addLine(a), f = !1, a = "", o = 0), a += T, o += R
                                        } else {
                                            a.length > 0 && (s += e.addLine(a), a = "", o = 0);
                                            var O = m === _.length - 1;
                                            s += e.addLine(g, !O), f = !1, a = "", o = 0
                                        } else b + o > d && (f = !1, s += e.addLine(a), a = "", o = 0), (a.length > 0 || !e.isBreakingSpace(g) || f) && (a += g, o += b)
                            }
                            return s += e.addLine(a, !1)
                        }, e.addLine = function(t) {
                            var i = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];
                            return t = e.trimRight(t), t = i ? t + "\n" : t
                        }, e.getFromCache = function(e, t, i, n) {
                            var r = i[e];
                            if (void 0 === r) {
                                var o = e.length * t;
                                r = n.measureText(e).width + o, i[e] = r
                            }
                            return r
                        }, e.collapseSpaces = function(e) {
                            return "normal" === e || "pre-line" === e
                        }, e.collapseNewlines = function(e) {
                            return "normal" === e
                        }, e.trimRight = function(t) {
                            if ("string" != typeof t) return "";
                            for (var i = t.length - 1; i >= 0; i--) {
                                var n = t[i];
                                if (!e.isBreakingSpace(n)) break;
                                t = t.slice(0, -1)
                            }
                            return t
                        }, e.isNewline = function(t) {
                            return "string" == typeof t && e._newlines.indexOf(t.charCodeAt(0)) >= 0
                        }, e.isBreakingSpace = function(t) {
                            return "string" == typeof t && e._breakingSpaces.indexOf(t.charCodeAt(0)) >= 0
                        }, e.tokenize = function(t) {
                            var i = [],
                                n = "";
                            if ("string" != typeof t) return i;
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                e.isBreakingSpace(o) || e.isNewline(o) ? ("" !== n && (i.push(n), n = ""), i.push(o)) : n += o
                            }
                            return "" !== n && i.push(n), i
                        }, e.canBreakWords = function(e, t) {
                            return t
                        }, e.canBreakChars = function(e, t, i, n, r) {
                            return !0
                        }, e.measureFont = function(t) {
                            if (e._fonts[t]) return e._fonts[t];
                            var i = {},
                                n = e._canvas,
                                r = e._context;
                            r.font = t;
                            var o = e.METRICS_STRING + e.BASELINE_SYMBOL,
                                a = Math.ceil(r.measureText(o).width),
                                s = Math.ceil(r.measureText(e.BASELINE_SYMBOL).width),
                                l = 2 * s;
                            s = s * e.BASELINE_MULTIPLIER | 0, n.width = a, n.height = l, r.fillStyle = "#f00", r.fillRect(0, 0, a, l), r.font = t, r.textBaseline = "alphabetic", r.fillStyle = "#000", r.fillText(o, 0, s);
                            var u = r.getImageData(0, 0, a, l).data,
                                c = u.length,
                                h = 4 * a,
                                p = 0,
                                f = 0,
                                d = !1;
                            for (p = 0; p < s; ++p) {
                                for (var _ = 0; _ < h; _ += 4)
                                    if (255 !== u[f + _]) {
                                        d = !0;
                                        break
                                    }
                                if (d) break;
                                f += h
                            }
                            for (i.ascent = s - p, f = c - h, d = !1, p = l; p > s; --p) {
                                for (var m = 0; m < h; m += 4)
                                    if (255 !== u[f + m]) {
                                        d = !0;
                                        break
                                    }
                                if (d) break;
                                f -= h
                            }
                            return i.descent = p - s, i.fontSize = i.ascent + i.descent, e._fonts[t] = i, i
                        }, e.clearMetrics = function() {
                            var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "";
                            t ? delete e._fonts[t] : e._fonts = {}
                        }, e
                    }();
                    i.default = r;
                    var o = document.createElement("canvas");
                    o.width = o.height = 10, r._canvas = o, r._context = o.getContext("2d"), r._fonts = {}, r.METRICS_STRING = "|Éq", r.BASELINE_SYMBOL = "M", r.BASELINE_MULTIPLIER = 1.4, r._newlines = [10, 13], r._breakingSpaces = [9, 32, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8200, 8201, 8202, 8287, 12288]
                }, {}],
                110: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(e) {
                        return "number" == typeof e ? (0, c.hex2string)(e) : ("string" == typeof e && 0 === e.indexOf("0x") && (e = e.replace("0x", "#")), e)
                    }

                    function o(e) {
                        if (Array.isArray(e)) {
                            for (var t = 0; t < e.length; ++t) e[t] = r(e[t]);
                            return e
                        }
                        return r(e)
                    }

                    function a(e, t) {
                        if (!Array.isArray(e) || !Array.isArray(t)) return !1;
                        if (e.length !== t.length) return !1;
                        for (var i = 0; i < e.length; ++i)
                            if (e[i] !== t[i]) return !1;
                        return !0
                    }

                    function s(e, t, i) {
                        for (var n in i) Array.isArray(t[n]) ? e[n] = t[n].slice() : e[n] = t[n]
                    }
                    i.__esModule = !0;
                    var l = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        u = e("../const"),
                        c = e("../utils"),
                        h = {
                            align: "left",
                            breakWords: !1,
                            dropShadow: !1,
                            dropShadowAlpha: 1,
                            dropShadowAngle: Math.PI / 6,
                            dropShadowBlur: 0,
                            dropShadowColor: "black",
                            dropShadowDistance: 5,
                            fill: "black",
                            fillGradientType: u.TEXT_GRADIENT.LINEAR_VERTICAL,
                            fillGradientStops: [],
                            fontFamily: "Arial",
                            fontSize: 26,
                            fontStyle: "normal",
                            fontVariant: "normal",
                            fontWeight: "normal",
                            letterSpacing: 0,
                            lineHeight: 0,
                            lineJoin: "miter",
                            miterLimit: 10,
                            padding: 0,
                            stroke: "black",
                            strokeThickness: 0,
                            textBaseline: "alphabetic",
                            trim: !1,
                            whiteSpace: "pre",
                            wordWrap: !1,
                            wordWrapWidth: 100,
                            leading: 0
                        },
                        p = ["serif", "sans-serif", "monospace", "cursive", "fantasy", "system-ui"],
                        f = function() {
                            function e(t) {
                                n(this, e), this.styleID = 0, this.reset(), s(this, t, t)
                            }
                            return e.prototype.clone = function() {
                                var t = {};
                                return s(t, this, h), new e(t)
                            }, e.prototype.reset = function() {
                                s(this, h, h)
                            }, e.prototype.toFontString = function() {
                                var e = "number" == typeof this.fontSize ? this.fontSize + "px" : this.fontSize,
                                    t = this.fontFamily;
                                Array.isArray(this.fontFamily) || (t = this.fontFamily.split(","));
                                for (var i = t.length - 1; i >= 0; i--) {
                                    var n = t[i].trim();
                                    !/([\"\'])[^\'\"]+\1/.test(n) && p.indexOf(n) < 0 && (n = '"' + n + '"'), t[i] = n
                                }
                                return this.fontStyle + " " + this.fontVariant + " " + this.fontWeight + " " + e + " " + t.join(",")
                            }, l(e, [{
                                key: "align",
                                get: function() {
                                    return this._align
                                },
                                set: function(e) {
                                    this._align !== e && (this._align = e, this.styleID++)
                                }
                            }, {
                                key: "breakWords",
                                get: function() {
                                    return this._breakWords
                                },
                                set: function(e) {
                                    this._breakWords !== e && (this._breakWords = e, this.styleID++)
                                }
                            }, {
                                key: "dropShadow",
                                get: function() {
                                    return this._dropShadow
                                },
                                set: function(e) {
                                    this._dropShadow !== e && (this._dropShadow = e, this.styleID++)
                                }
                            }, {
                                key: "dropShadowAlpha",
                                get: function() {
                                    return this._dropShadowAlpha
                                },
                                set: function(e) {
                                    this._dropShadowAlpha !== e && (this._dropShadowAlpha = e, this.styleID++)
                                }
                            }, {
                                key: "dropShadowAngle",
                                get: function() {
                                    return this._dropShadowAngle
                                },
                                set: function(e) {
                                    this._dropShadowAngle !== e && (this._dropShadowAngle = e, this.styleID++)
                                }
                            }, {
                                key: "dropShadowBlur",
                                get: function() {
                                    return this._dropShadowBlur
                                },
                                set: function(e) {
                                    this._dropShadowBlur !== e && (this._dropShadowBlur = e, this.styleID++)
                                }
                            }, {
                                key: "dropShadowColor",
                                get: function() {
                                    return this._dropShadowColor
                                },
                                set: function(e) {
                                    var t = o(e);
                                    this._dropShadowColor !== t && (this._dropShadowColor = t, this.styleID++)
                                }
                            }, {
                                key: "dropShadowDistance",
                                get: function() {
                                    return this._dropShadowDistance
                                },
                                set: function(e) {
                                    this._dropShadowDistance !== e && (this._dropShadowDistance = e, this.styleID++)
                                }
                            }, {
                                key: "fill",
                                get: function() {
                                    return this._fill
                                },
                                set: function(e) {
                                    var t = o(e);
                                    this._fill !== t && (this._fill = t, this.styleID++)
                                }
                            }, {
                                key: "fillGradientType",
                                get: function() {
                                    return this._fillGradientType
                                },
                                set: function(e) {
                                    this._fillGradientType !== e && (this._fillGradientType = e, this.styleID++)
                                }
                            }, {
                                key: "fillGradientStops",
                                get: function() {
                                    return this._fillGradientStops
                                },
                                set: function(e) {
                                    a(this._fillGradientStops, e) || (this._fillGradientStops = e, this.styleID++)
                                }
                            }, {
                                key: "fontFamily",
                                get: function() {
                                    return this._fontFamily
                                },
                                set: function(e) {
                                    this.fontFamily !== e && (this._fontFamily = e, this.styleID++)
                                }
                            }, {
                                key: "fontSize",
                                get: function() {
                                    return this._fontSize
                                },
                                set: function(e) {
                                    this._fontSize !== e && (this._fontSize = e, this.styleID++)
                                }
                            }, {
                                key: "fontStyle",
                                get: function() {
                                    return this._fontStyle
                                },
                                set: function(e) {
                                    this._fontStyle !== e && (this._fontStyle = e, this.styleID++)
                                }
                            }, {
                                key: "fontVariant",
                                get: function() {
                                    return this._fontVariant
                                },
                                set: function(e) {
                                    this._fontVariant !== e && (this._fontVariant = e, this.styleID++)
                                }
                            }, {
                                key: "fontWeight",
                                get: function() {
                                    return this._fontWeight
                                },
                                set: function(e) {
                                    this._fontWeight !== e && (this._fontWeight = e, this.styleID++)
                                }
                            }, {
                                key: "letterSpacing",
                                get: function() {
                                    return this._letterSpacing
                                },
                                set: function(e) {
                                    this._letterSpacing !== e && (this._letterSpacing = e, this.styleID++)
                                }
                            }, {
                                key: "lineHeight",
                                get: function() {
                                    return this._lineHeight
                                },
                                set: function(e) {
                                    this._lineHeight !== e && (this._lineHeight = e, this.styleID++)
                                }
                            }, {
                                key: "leading",
                                get: function() {
                                    return this._leading
                                },
                                set: function(e) {
                                    this._leading !== e && (this._leading = e, this.styleID++)
                                }
                            }, {
                                key: "lineJoin",
                                get: function() {
                                    return this._lineJoin
                                },
                                set: function(e) {
                                    this._lineJoin !== e && (this._lineJoin = e, this.styleID++)
                                }
                            }, {
                                key: "miterLimit",
                                get: function() {
                                    return this._miterLimit
                                },
                                set: function(e) {
                                    this._miterLimit !== e && (this._miterLimit = e, this.styleID++)
                                }
                            }, {
                                key: "padding",
                                get: function() {
                                    return this._padding
                                },
                                set: function(e) {
                                    this._padding !== e && (this._padding = e, this.styleID++)
                                }
                            }, {
                                key: "stroke",
                                get: function() {
                                    return this._stroke
                                },
                                set: function(e) {
                                    var t = o(e);
                                    this._stroke !== t && (this._stroke = t, this.styleID++)
                                }
                            }, {
                                key: "strokeThickness",
                                get: function() {
                                    return this._strokeThickness
                                },
                                set: function(e) {
                                    this._strokeThickness !== e && (this._strokeThickness = e, this.styleID++)
                                }
                            }, {
                                key: "textBaseline",
                                get: function() {
                                    return this._textBaseline
                                },
                                set: function(e) {
                                    this._textBaseline !== e && (this._textBaseline = e, this.styleID++)
                                }
                            }, {
                                key: "trim",
                                get: function() {
                                    return this._trim
                                },
                                set: function(e) {
                                    this._trim !== e && (this._trim = e, this.styleID++)
                                }
                            }, {
                                key: "whiteSpace",
                                get: function() {
                                    return this._whiteSpace
                                },
                                set: function(e) {
                                    this._whiteSpace !== e && (this._whiteSpace = e, this.styleID++)
                                }
                            }, {
                                key: "wordWrap",
                                get: function() {
                                    return this._wordWrap
                                },
                                set: function(e) {
                                    this._wordWrap !== e && (this._wordWrap = e, this.styleID++)
                                }
                            }, {
                                key: "wordWrapWidth",
                                get: function() {
                                    return this._wordWrapWidth
                                },
                                set: function(e) {
                                    this._wordWrapWidth !== e && (this._wordWrapWidth = e, this.styleID++)
                                }
                            }]), e
                        }();
                    i.default = f
                }, {
                    "../const": 46,
                    "../utils": 125
                }],
                111: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function a(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var s = e("./BaseTexture"),
                        l = n(s),
                        u = e("../settings"),
                        c = n(u),
                        h = function(e) {
                            function t() {
                                var i = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 100,
                                    n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 100,
                                    a = arguments[2],
                                    s = arguments[3];
                                r(this, t);
                                var l = o(this, e.call(this, null, a));
                                return l.resolution = s || c.default.RESOLUTION, l.width = Math.ceil(i), l.height = Math.ceil(n), l.realWidth = l.width * l.resolution, l.realHeight = l.height * l.resolution, l.scaleMode = void 0 !== a ? a : c.default.SCALE_MODE, l.hasLoaded = !0, l._glRenderTargets = {}, l._canvasRenderTarget = null, l.valid = !1, l
                            }
                            return a(t, e), t.prototype.resize = function(e, t) {
                                e = Math.ceil(e), t = Math.ceil(t), e === this.width && t === this.height || (this.valid = e > 0 && t > 0, this.width = e, this.height = t, this.realWidth = this.width * this.resolution, this.realHeight = this.height * this.resolution, this.valid && this.emit("update", this))
                            }, t.prototype.destroy = function() {
                                e.prototype.destroy.call(this, !0), this.renderer = null
                            }, t
                        }(l.default);
                    i.default = h
                }, {
                    "../settings": 101,
                    "./BaseTexture": 112
                }],
                112: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function a(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var s = e("../utils"),
                        l = e("../settings"),
                        u = n(l),
                        c = e("eventemitter3"),
                        h = n(c),
                        p = e("../utils/determineCrossOrigin"),
                        f = n(p),
                        d = e("bit-twiddle"),
                        _ = n(d),
                        m = function(e) {
                            function t(i, n, a) {
                                r(this, t);
                                var l = o(this, e.call(this));
                                return l.uid = (0, s.uid)(), l.touched = 0, l.resolution = a || u.default.RESOLUTION, l.width = 100, l.height = 100, l.realWidth = 100, l.realHeight = 100, l.scaleMode = void 0 !== n ? n : u.default.SCALE_MODE, l.hasLoaded = !1, l.isLoading = !1, l.source = null, l.origSource = null, l.imageType = null, l.sourceScale = 1, l.premultipliedAlpha = !0, l.imageUrl = null, l.isPowerOfTwo = !1, l.mipmap = u.default.MIPMAP_TEXTURES, l.wrapMode = u.default.WRAP_MODE, l._glTextures = {}, l._enabled = 0, l._virtalBoundId = -1, l._destroyed = !1, l.textureCacheIds = [], i && l.loadSource(i), l
                            }
                            return a(t, e), t.prototype.update = function() {
                                "svg" !== this.imageType && (this.realWidth = this.source.naturalWidth || this.source.videoWidth || this.source.width, this.realHeight = this.source.naturalHeight || this.source.videoHeight || this.source.height, this._updateDimensions()), this.emit("update", this)
                            }, t.prototype._updateDimensions = function() {
                                this.width = this.realWidth / this.resolution, this.height = this.realHeight / this.resolution, this.isPowerOfTwo = _.default.isPow2(this.realWidth) && _.default.isPow2(this.realHeight)
                            }, t.prototype.loadSource = function(e) {
                                var t = this.isLoading;
                                this.hasLoaded = !1, this.isLoading = !1, t && this.source && (this.source.onload = null, this.source.onerror = null);
                                var i = !this.source;
                                if (this.source = e, (e.src && e.complete || e.getContext) && e.width && e.height) this._updateImageType(), "svg" === this.imageType ? this._loadSvgSource() : this._sourceLoaded(), i && this.emit("loaded", this);
                                else if (!e.getContext) {
                                    this.isLoading = !0;
                                    var n = this;
                                    if (e.onload = function() {
                                            if (n._updateImageType(), e.onload = null, e.onerror = null, n.isLoading) {
                                                if (n.isLoading = !1, n._sourceLoaded(), "svg" === n.imageType) return void n._loadSvgSource();
                                                n.emit("loaded", n)
                                            }
                                        }, e.onerror = function() {
                                            e.onload = null, e.onerror = null, n.isLoading && (n.isLoading = !1, n.emit("error", n))
                                        }, e.complete && e.src) {
                                        if (e.onload = null, e.onerror = null, "svg" === n.imageType) return void n._loadSvgSource();
                                        this.isLoading = !1, e.width && e.height ? (this._sourceLoaded(), t && this.emit("loaded", this)) : t && this.emit("error", this)
                                    }
                                }
                            }, t.prototype._updateImageType = function() {
                                if (this.imageUrl) {
                                    var e = (0, s.decomposeDataUri)(this.imageUrl),
                                        t = void 0;
                                    if (e && "image" === e.mediaType) {
                                        var i = e.subType.split("+")[0];
                                        if (!(t = (0, s.getUrlFileExtension)("." + i))) throw new Error("Invalid image type in data URI.")
                                    } else(t = (0, s.getUrlFileExtension)(this.imageUrl)) || (t = "png");
                                    this.imageType = t
                                }
                            }, t.prototype._loadSvgSource = function() {
                                if ("svg" === this.imageType) {
                                    var e = (0, s.decomposeDataUri)(this.imageUrl);
                                    e ? this._loadSvgSourceUsingDataUri(e) : this._loadSvgSourceUsingXhr()
                                }
                            }, t.prototype._loadSvgSourceUsingDataUri = function(e) {
                                var t = void 0;
                                if ("base64" === e.encoding) {
                                    if (!atob) throw new Error("Your browser doesn't support base64 conversions.");
                                    t = atob(e.data)
                                } else t = e.data;
                                this._loadSvgSourceUsingString(t)
                            }, t.prototype._loadSvgSourceUsingXhr = function() {
                                var e = this,
                                    t = new XMLHttpRequest;
                                t.onload = function() {
                                    if (t.readyState !== t.DONE || 200 !== t.status) throw new Error("Failed to load SVG using XHR.");
                                    e._loadSvgSourceUsingString(t.response)
                                }, t.onerror = function() {
                                    return e.emit("error", e)
                                }, t.open("GET", this.imageUrl, !0), t.send()
                            }, t.prototype._loadSvgSourceUsingString = function(e) {
                                var i = (0, s.getSvgSize)(e),
                                    n = i.width,
                                    r = i.height;
                                if (!n || !r) throw new Error("The SVG image must have width and height defined (in pixels), canvas API needs them.");
                                this.realWidth = Math.round(n * this.sourceScale), this.realHeight = Math.round(r * this.sourceScale), this._updateDimensions();
                                var o = document.createElement("canvas");
                                o.width = this.realWidth, o.height = this.realHeight, o._pixiId = "canvas_" + (0, s.uid)(), o.getContext("2d").drawImage(this.source, 0, 0, n, r, 0, 0, this.realWidth, this.realHeight), this.origSource = this.source, this.source = o, t.addToCache(this, o._pixiId), this.isLoading = !1, this._sourceLoaded(), this.emit("loaded", this)
                            }, t.prototype._sourceLoaded = function() {
                                this.hasLoaded = !0, this.update()
                            }, t.prototype.destroy = function() {
                                this.imageUrl && (delete s.TextureCache[this.imageUrl], this.imageUrl = null, navigator.isCocoonJS || (this.source.src = "")), this.source = null, this.dispose(), t.removeFromCache(this), this.textureCacheIds = null, this._destroyed = !0
                            }, t.prototype.dispose = function() {
                                this.emit("dispose", this)
                            }, t.prototype.updateSourceImage = function(e) {
                                this.source.src = e, this.loadSource(this.source)
                            }, t.fromImage = function(e, i, n, r) {
                                var o = s.BaseTextureCache[e];
                                if (!o) {
                                    var a = new Image;
                                    void 0 === i && 0 !== e.indexOf("data:") ? a.crossOrigin = (0, f.default)(e) : i && (a.crossOrigin = "string" == typeof i ? i : "anonymous"), o = new t(a, n), o.imageUrl = e, r && (o.sourceScale = r), o.resolution = (0, s.getResolutionOfUrl)(e), a.src = e, t.addToCache(o, e)
                                }
                                return o
                            }, t.fromCanvas = function(e, i) {
                                var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "canvas";
                                e._pixiId || (e._pixiId = n + "_" + (0, s.uid)());
                                var r = s.BaseTextureCache[e._pixiId];
                                return r || (r = new t(e, i), t.addToCache(r, e._pixiId)), r
                            }, t.from = function(e, i, n) {
                                if ("string" == typeof e) return t.fromImage(e, void 0, i, n);
                                if (e instanceof HTMLImageElement) {
                                    var r = e.src,
                                        o = s.BaseTextureCache[r];
                                    return o || (o = new t(e, i), o.imageUrl = r, n && (o.sourceScale = n), o.resolution = (0, s.getResolutionOfUrl)(r), t.addToCache(o, r)), o
                                }
                                return e instanceof HTMLCanvasElement ? t.fromCanvas(e, i) : e
                            }, t.addToCache = function(e, t) {
                                t && (-1 === e.textureCacheIds.indexOf(t) && e.textureCacheIds.push(t), s.BaseTextureCache[t] = e)
                            }, t.removeFromCache = function(e) {
                                if ("string" == typeof e) {
                                    var t = s.BaseTextureCache[e];
                                    if (t) {
                                        var i = t.textureCacheIds.indexOf(e);
                                        return i > -1 && t.textureCacheIds.splice(i, 1), delete s.BaseTextureCache[e], t
                                    }
                                } else if (e && e.textureCacheIds) {
                                    for (var n = 0; n < e.textureCacheIds.length; ++n) delete s.BaseTextureCache[e.textureCacheIds[n]];
                                    return e.textureCacheIds.length = 0, e
                                }
                                return null
                            }, t
                        }(h.default);
                    i.default = m
                }, {
                    "../settings": 101,
                    "../utils": 125,
                    "../utils/determineCrossOrigin": 124,
                    "bit-twiddle": 1,
                    eventemitter3: 3
                }],
                113: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function a(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var s = e("./BaseRenderTexture"),
                        l = n(s),
                        u = e("./Texture"),
                        c = n(u),
                        h = function(e) {
                            function t(i, n) {
                                r(this, t);
                                var a = null;
                                if (!(i instanceof l.default)) {
                                    var s = arguments[1],
                                        u = arguments[2],
                                        c = arguments[3],
                                        h = arguments[4];
                                    a = arguments[0], n = null, i = new l.default(s, u, c, h)
                                }
                                var p = o(this, e.call(this, i, n));
                                return p.legacyRenderer = a, p.valid = !0, p._updateUvs(), p
                            }
                            return a(t, e), t.prototype.resize = function(e, t, i) {
                                e = Math.ceil(e), t = Math.ceil(t), this.valid = e > 0 && t > 0, this._frame.width = this.orig.width = e, this._frame.height = this.orig.height = t, i || this.baseTexture.resize(e, t), this._updateUvs()
                            }, t.create = function(e, i, n, r) {
                                return new t(new l.default(e, i, n, r))
                            }, t
                        }(c.default);
                    i.default = h
                }, {
                    "./BaseRenderTexture": 111,
                    "./Texture": 115
                }],
                114: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        o = e("../"),
                        a = e("../utils"),
                        s = function() {
                            function e(t, i) {
                                var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null;
                                n(this, e), this.baseTexture = t, this.textures = {}, this.animations = {}, this.data = i, this.resolution = this._updateResolution(r || this.baseTexture.imageUrl), this._frames = this.data.frames, this._frameKeys = Object.keys(this._frames), this._batchIndex = 0, this._callback = null
                            }
                            return r(e, null, [{
                                key: "BATCH_SIZE",
                                get: function() {
                                    return 1e3
                                }
                            }]), e.prototype._updateResolution = function(e) {
                                var t = this.data.meta.scale,
                                    i = (0, a.getResolutionOfUrl)(e, null);
                                return null === i && (i = void 0 !== t ? parseFloat(t) : 1), 1 !== i && (this.baseTexture.resolution = i, this.baseTexture.update()), i
                            }, e.prototype.parse = function(t) {
                                this._batchIndex = 0, this._callback = t, this._frameKeys.length <= e.BATCH_SIZE ? (this._processFrames(0), this._processAnimations(), this._parseComplete()) : this._nextBatch()
                            }, e.prototype._processFrames = function(t) {
                                for (var i = t, n = e.BATCH_SIZE, r = this.baseTexture.sourceScale; i - t < n && i < this._frameKeys.length;) {
                                    var a = this._frameKeys[i],
                                        s = this._frames[a],
                                        l = s.frame;
                                    if (l) {
                                        var u = null,
                                            c = null,
                                            h = !1 !== s.trimmed && s.sourceSize ? s.sourceSize : s.frame,
                                            p = new o.Rectangle(0, 0, Math.floor(h.w * r) / this.resolution, Math.floor(h.h * r) / this.resolution);
                                        u = s.rotated ? new o.Rectangle(Math.floor(l.x * r) / this.resolution, Math.floor(l.y * r) / this.resolution, Math.floor(l.h * r) / this.resolution, Math.floor(l.w * r) / this.resolution) : new o.Rectangle(Math.floor(l.x * r) / this.resolution, Math.floor(l.y * r) / this.resolution, Math.floor(l.w * r) / this.resolution, Math.floor(l.h * r) / this.resolution), !1 !== s.trimmed && s.spriteSourceSize && (c = new o.Rectangle(Math.floor(s.spriteSourceSize.x * r) / this.resolution, Math.floor(s.spriteSourceSize.y * r) / this.resolution, Math.floor(l.w * r) / this.resolution, Math.floor(l.h * r) / this.resolution)), this.textures[a] = new o.Texture(this.baseTexture, u, p, c, s.rotated ? 2 : 0, s.anchor), o.Texture.addToCache(this.textures[a], a)
                                    }
                                    i++
                                }
                            }, e.prototype._processAnimations = function() {
                                var e = this.data.animations || {};
                                for (var t in e) {
                                    this.animations[t] = [];
                                    for (var i = e[t], n = Array.isArray(i), r = 0, i = n ? i : i[Symbol.iterator]();;) {
                                        var o;
                                        if (n) {
                                            if (r >= i.length) break;
                                            o = i[r++]
                                        } else {
                                            if (r = i.next(), r.done) break;
                                            o = r.value
                                        }
                                        var a = o;
                                        this.animations[t].push(this.textures[a])
                                    }
                                }
                            }, e.prototype._parseComplete = function() {
                                var e = this._callback;
                                this._callback = null, this._batchIndex = 0, e.call(this, this.textures)
                            }, e.prototype._nextBatch = function() {
                                var t = this;
                                this._processFrames(this._batchIndex * e.BATCH_SIZE), this._batchIndex++, setTimeout(function() {
                                    t._batchIndex * e.BATCH_SIZE < t._frameKeys.length ? t._nextBatch() : (t._processAnimations(), t._parseComplete())
                                }, 0)
                            }, e.prototype.destroy = function() {
                                var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
                                for (var t in this.textures) this.textures[t].destroy();
                                this._frames = null, this._frameKeys = null, this.data = null, this.textures = null, e && this.baseTexture.destroy(), this.baseTexture = null
                            }, e
                        }();
                    i.default = s
                }, {
                    "../": 65,
                    "../utils": 125
                }],
                115: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function a(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }

                    function s(e) {
                        e.destroy = function() {}, e.on = function() {}, e.once = function() {}, e.emit = function() {}
                    }
                    i.__esModule = !0;
                    var l = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        u = e("./BaseTexture"),
                        c = n(u),
                        h = e("./VideoBaseTexture"),
                        p = n(h),
                        f = e("./TextureUvs"),
                        d = n(f),
                        _ = e("eventemitter3"),
                        m = n(_),
                        g = e("../math"),
                        v = e("../utils"),
                        y = e("../settings"),
                        b = n(y),
                        x = function(e) {
                            function t(i, n, a, s, l, u) {
                                r(this, t);
                                var c = o(this, e.call(this));
                                if (c.noFrame = !1, n || (c.noFrame = !0, n = new g.Rectangle(0, 0, 1, 1)), i instanceof t && (i = i.baseTexture), c.baseTexture = i, c._frame = n, c.trim = s, c.valid = !1, c.requiresUpdate = !1, c._uvs = null, c.orig = a || n, c._rotate = Number(l || 0), !0 === l) c._rotate = 2;
                                else if (c._rotate % 2 != 0) throw new Error("attempt to use diamond-shaped UVs. If you are sure, set rotation manually");
                                return i.hasLoaded ? (c.noFrame && (n = new g.Rectangle(0, 0, i.width, i.height), i.on("update", c.onBaseTextureUpdated, c)), c.frame = n) : i.once("loaded", c.onBaseTextureLoaded, c), c.defaultAnchor = u ? new g.Point(u.x, u.y) : new g.Point(0, 0), c._updateID = 0, c.transform = null, c.textureCacheIds = [], c
                            }
                            return a(t, e), t.prototype.update = function() {
                                this.baseTexture.update()
                            }, t.prototype.onBaseTextureLoaded = function(e) {
                                this._updateID++, this.noFrame ? this.frame = new g.Rectangle(0, 0, e.width, e.height) : this.frame = this._frame, this.baseTexture.on("update", this.onBaseTextureUpdated, this), this.emit("update", this)
                            }, t.prototype.onBaseTextureUpdated = function(e) {
                                this._updateID++, this._frame.width = e.width, this._frame.height = e.height, this.emit("update", this)
                            }, t.prototype.destroy = function(e) {
                                this.baseTexture && (e && (v.TextureCache[this.baseTexture.imageUrl] && t.removeFromCache(this.baseTexture.imageUrl), this.baseTexture.destroy()), this.baseTexture.off("update", this.onBaseTextureUpdated, this), this.baseTexture.off("loaded", this.onBaseTextureLoaded, this), this.baseTexture = null), this._frame = null, this._uvs = null, this.trim = null, this.orig = null, this.valid = !1, t.removeFromCache(this), this.textureCacheIds = null
                            }, t.prototype.clone = function() {
                                return new t(this.baseTexture, this.frame, this.orig, this.trim, this.rotate, this.defaultAnchor)
                            }, t.prototype._updateUvs = function() {
                                this._uvs || (this._uvs = new d.default), this._uvs.set(this._frame, this.baseTexture, this.rotate), this._updateID++
                            }, t.fromImage = function(e, i, n, r) {
                                var o = v.TextureCache[e];
                                return o || (o = new t(c.default.fromImage(e, i, n, r)), t.addToCache(o, e)), o
                            }, t.fromFrame = function(e) {
                                var t = v.TextureCache[e];
                                if (!t) throw new Error('The frameId "' + e + '" does not exist in the texture cache');
                                return t
                            }, t.fromCanvas = function(e, i) {
                                var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "canvas";
                                return new t(c.default.fromCanvas(e, i, n))
                            }, t.fromVideo = function(e, i, n, r) {
                                return "string" == typeof e ? t.fromVideoUrl(e, i, n, r) : new t(p.default.fromVideo(e, i, r))
                            }, t.fromVideoUrl = function(e, i, n, r) {
                                return new t(p.default.fromUrl(e, i, n, r))
                            }, t.from = function(e) {
                                if ("string" == typeof e) {
                                    var i = v.TextureCache[e];
                                    return i || (null !== e.match(/\.(mp4|webm|ogg|h264|avi|mov)$/) ? t.fromVideoUrl(e) : t.fromImage(e))
                                }
                                return e instanceof HTMLImageElement ? new t(c.default.from(e)) : e instanceof HTMLCanvasElement ? t.fromCanvas(e, b.default.SCALE_MODE, "HTMLCanvasElement") : e instanceof HTMLVideoElement ? t.fromVideo(e) : e instanceof c.default ? new t(e) : e
                            }, t.fromLoader = function(e, i, n) {
                                var r = new c.default(e, void 0, (0, v.getResolutionOfUrl)(i)),
                                    o = new t(r);
                                return r.imageUrl = i, n || (n = i), c.default.addToCache(o.baseTexture, n), t.addToCache(o, n), n !== i && (c.default.addToCache(o.baseTexture, i), t.addToCache(o, i)), o
                            }, t.addToCache = function(e, t) {
                                t && (-1 === e.textureCacheIds.indexOf(t) && e.textureCacheIds.push(t), v.TextureCache[t] = e)
                            }, t.removeFromCache = function(e) {
                                if ("string" == typeof e) {
                                    var t = v.TextureCache[e];
                                    if (t) {
                                        var i = t.textureCacheIds.indexOf(e);
                                        return i > -1 && t.textureCacheIds.splice(i, 1), delete v.TextureCache[e], t
                                    }
                                } else if (e && e.textureCacheIds) {
                                    for (var n = 0; n < e.textureCacheIds.length; ++n) v.TextureCache[e.textureCacheIds[n]] === e && delete v.TextureCache[e.textureCacheIds[n]];
                                    return e.textureCacheIds.length = 0, e
                                }
                                return null
                            }, l(t, [{
                                key: "frame",
                                get: function() {
                                    return this._frame
                                },
                                set: function(e) {
                                    this._frame = e, this.noFrame = !1;
                                    var t = e.x,
                                        i = e.y,
                                        n = e.width,
                                        r = e.height,
                                        o = t + n > this.baseTexture.width,
                                        a = i + r > this.baseTexture.height;
                                    if (o || a) {
                                        var s = o && a ? "and" : "or",
                                            l = "X: " + t + " + " + n + " = " + (t + n) + " > " + this.baseTexture.width,
                                            u = "Y: " + i + " + " + r + " = " + (i + r) + " > " + this.baseTexture.height;
                                        throw new Error("Texture Error: frame does not fit inside the base Texture dimensions: " + l + " " + s + " " + u)
                                    }
                                    this.valid = n && r && this.baseTexture.hasLoaded, this.trim || this.rotate || (this.orig = e), this.valid && this._updateUvs()
                                }
                            }, {
                                key: "rotate",
                                get: function() {
                                    return this._rotate
                                },
                                set: function(e) {
                                    this._rotate = e, this.valid && this._updateUvs()
                                }
                            }, {
                                key: "width",
                                get: function() {
                                    return this.orig.width
                                }
                            }, {
                                key: "height",
                                get: function() {
                                    return this.orig.height
                                }
                            }]), t
                        }(m.default);
                    i.default = x, x.EMPTY = new x(new c.default), s(x.EMPTY), s(x.EMPTY.baseTexture), x.WHITE = function() {
                        var e = document.createElement("canvas");
                        e.width = 10, e.height = 10;
                        var t = e.getContext("2d");
                        return t.fillStyle = "white", t.fillRect(0, 0, 10, 10), new x(new c.default(e))
                    }(), s(x.WHITE), s(x.WHITE.baseTexture)
                }, {
                    "../math": 70,
                    "../settings": 101,
                    "../utils": 125,
                    "./BaseTexture": 112,
                    "./TextureUvs": 117,
                    "./VideoBaseTexture": 118,
                    eventemitter3: 3
                }],
                116: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        o = e("../math/Matrix"),
                        a = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(o),
                        s = new a.default,
                        l = function() {
                            function e(t, i) {
                                n(this, e), this._texture = t, this.mapCoord = new a.default, this.uClampFrame = new Float32Array(4), this.uClampOffset = new Float32Array(2), this._lastTextureID = -1, this.clampOffset = 0, this.clampMargin = void 0 === i ? .5 : i
                            }
                            return e.prototype.multiplyUvs = function(e, t) {
                                void 0 === t && (t = e);
                                for (var i = this.mapCoord, n = 0; n < e.length; n += 2) {
                                    var r = e[n],
                                        o = e[n + 1];
                                    t[n] = r * i.a + o * i.c + i.tx, t[n + 1] = r * i.b + o * i.d + i.ty
                                }
                                return t
                            }, e.prototype.update = function(e) {
                                var t = this._texture;
                                if (!t || !t.valid) return !1;
                                if (!e && this._lastTextureID === t._updateID) return !1;
                                this._lastTextureID = t._updateID;
                                var i = t._uvs;
                                this.mapCoord.set(i.x1 - i.x0, i.y1 - i.y0, i.x3 - i.x0, i.y3 - i.y0, i.x0, i.y0);
                                var n = t.orig,
                                    r = t.trim;
                                r && (s.set(n.width / r.width, 0, 0, n.height / r.height, -r.x / r.width, -r.y / r.height), this.mapCoord.append(s));
                                var o = t.baseTexture,
                                    a = this.uClampFrame,
                                    l = this.clampMargin / o.resolution,
                                    u = this.clampOffset;
                                return a[0] = (t._frame.x + l + u) / o.width, a[1] = (t._frame.y + l + u) / o.height, a[2] = (t._frame.x + t._frame.width - l + u) / o.width, a[3] = (t._frame.y + t._frame.height - l + u) / o.height, this.uClampOffset[0] = u / o.realWidth, this.uClampOffset[1] = u / o.realHeight, !0
                            }, r(e, [{
                                key: "texture",
                                get: function() {
                                    return this._texture
                                },
                                set: function(e) {
                                    this._texture = e, this._lastTextureID = -1
                                }
                            }]), e
                        }();
                    i.default = l
                }, {
                    "../math/Matrix": 67
                }],
                117: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = e("../math/GroupD8"),
                        o = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(r),
                        a = function() {
                            function e() {
                                n(this, e), this.x0 = 0, this.y0 = 0, this.x1 = 1, this.y1 = 0, this.x2 = 1, this.y2 = 1, this.x3 = 0, this.y3 = 1, this.uvsUint32 = new Uint32Array(4)
                            }
                            return e.prototype.set = function(e, t, i) {
                                var n = t.width,
                                    r = t.height;
                                if (i) {
                                    var a = e.width / 2 / n,
                                        s = e.height / 2 / r,
                                        l = e.x / n + a,
                                        u = e.y / r + s;
                                    i = o.default.add(i, o.default.NW), this.x0 = l + a * o.default.uX(i), this.y0 = u + s * o.default.uY(i), i = o.default.add(i, 2), this.x1 = l + a * o.default.uX(i), this.y1 = u + s * o.default.uY(i), i = o.default.add(i, 2), this.x2 = l + a * o.default.uX(i), this.y2 = u + s * o.default.uY(i), i = o.default.add(i, 2), this.x3 = l + a * o.default.uX(i), this.y3 = u + s * o.default.uY(i)
                                } else this.x0 = e.x / n, this.y0 = e.y / r, this.x1 = (e.x + e.width) / n, this.y1 = e.y / r, this.x2 = (e.x + e.width) / n, this.y2 = (e.y + e.height) / r, this.x3 = e.x / n, this.y3 = (e.y + e.height) / r;
                                this.uvsUint32[0] = (65535 & Math.round(65535 * this.y0)) << 16 | 65535 & Math.round(65535 * this.x0), this.uvsUint32[1] = (65535 & Math.round(65535 * this.y1)) << 16 | 65535 & Math.round(65535 * this.x1), this.uvsUint32[2] = (65535 & Math.round(65535 * this.y2)) << 16 | 65535 & Math.round(65535 * this.x2), this.uvsUint32[3] = (65535 & Math.round(65535 * this.y3)) << 16 | 65535 & Math.round(65535 * this.x3)
                            }, e
                        }();
                    i.default = a
                }, {
                    "../math/GroupD8": 66
                }],
                118: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function a(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }

                    function s(e, t) {
                        if (!t) {
                            var i = e.split("?").shift().toLowerCase();
                            t = "video/" + i.substr(i.lastIndexOf(".") + 1)
                        }
                        var n = document.createElement("source");
                        return n.src = e, n.type = t, n
                    }
                    i.__esModule = !0;
                    var l = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        u = e("./BaseTexture"),
                        c = n(u),
                        h = e("../utils"),
                        p = e("../ticker"),
                        f = e("../const"),
                        d = e("../utils/determineCrossOrigin"),
                        _ = n(d),
                        m = function(e) {
                            function t(i, n) {
                                var a = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2];
                                if (r(this, t), !i) throw new Error("No video source element specified.");
                                (i.readyState === i.HAVE_ENOUGH_DATA || i.readyState === i.HAVE_FUTURE_DATA) && i.width && i.height && (i.complete = !0);
                                var s = o(this, e.call(this, i, n));
                                return s.width = i.videoWidth, s.height = i.videoHeight, s._autoUpdate = !0, s._isAutoUpdating = !1, s.autoPlay = a, s.update = s.update.bind(s), s._onCanPlay = s._onCanPlay.bind(s), i.addEventListener("play", s._onPlayStart.bind(s)), i.addEventListener("pause", s._onPlayStop.bind(s)), s.hasLoaded = !1, s.__loaded = !1, s._isSourceReady() ? s._onCanPlay() : (i.addEventListener("canplay", s._onCanPlay), i.addEventListener("canplaythrough", s._onCanPlay)), s
                            }
                            return a(t, e), t.prototype._isSourcePlaying = function() {
                                var e = this.source;
                                return e.currentTime > 0 && !1 === e.paused && !1 === e.ended && e.readyState > 2
                            }, t.prototype._isSourceReady = function() {
                                return 3 === this.source.readyState || 4 === this.source.readyState
                            }, t.prototype._onPlayStart = function() {
                                this.hasLoaded || this._onCanPlay(), !this._isAutoUpdating && this.autoUpdate && (p.shared.add(this.update, this, f.UPDATE_PRIORITY.HIGH), this._isAutoUpdating = !0)
                            }, t.prototype._onPlayStop = function() {
                                this._isAutoUpdating && (p.shared.remove(this.update, this), this._isAutoUpdating = !1)
                            }, t.prototype._onCanPlay = function() {
                                this.hasLoaded = !0, this.source && (this.source.removeEventListener("canplay", this._onCanPlay), this.source.removeEventListener("canplaythrough", this._onCanPlay), this.width = this.source.videoWidth, this.height = this.source.videoHeight, this.__loaded || (this.__loaded = !0, this.emit("loaded", this)), this._isSourcePlaying() ? this._onPlayStart() : this.autoPlay && this.source.play())
                            }, t.prototype.destroy = function() {
                                this._isAutoUpdating && p.shared.remove(this.update, this), this.source && this.source._pixiId && (c.default.removeFromCache(this.source._pixiId), delete this.source._pixiId, this.source.pause(), this.source.src = "", this.source.load()), e.prototype.destroy.call(this)
                            }, t.fromVideo = function(e, i, n) {
                                e._pixiId || (e._pixiId = "video_" + (0, h.uid)());
                                var r = h.BaseTextureCache[e._pixiId];
                                return r || (r = new t(e, i, n), c.default.addToCache(r, e._pixiId)), r
                            }, t.fromUrl = function(e, i, n, r) {
                                var o = document.createElement("video");
                                o.setAttribute("webkit-playsinline", ""), o.setAttribute("playsinline", "");
                                var a = Array.isArray(e) ? e[0].src || e[0] : e.src || e;
                                if (void 0 === n && 0 !== a.indexOf("data:") ? o.crossOrigin = (0, _.default)(a) : n && (o.crossOrigin = "string" == typeof n ? n : "anonymous"), Array.isArray(e))
                                    for (var l = 0; l < e.length; ++l) o.appendChild(s(e[l].src || e[l], e[l].mime));
                                else o.appendChild(s(a, e.mime));
                                return o.load(), t.fromVideo(o, i, r)
                            }, l(t, [{
                                key: "autoUpdate",
                                get: function() {
                                    return this._autoUpdate
                                },
                                set: function(e) {
                                    e !== this._autoUpdate && (this._autoUpdate = e, !this._autoUpdate && this._isAutoUpdating ? (p.shared.remove(this.update, this), this._isAutoUpdating = !1) : this._autoUpdate && !this._isAutoUpdating && (p.shared.add(this.update, this, f.UPDATE_PRIORITY.HIGH), this._isAutoUpdating = !0))
                                }
                            }]), t
                        }(c.default);
                    i.default = m, m.fromUrls = m.fromUrl
                }, {
                    "../const": 46,
                    "../ticker": 121,
                    "../utils": 125,
                    "../utils/determineCrossOrigin": 124,
                    "./BaseTexture": 112
                }],
                119: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var o = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        a = e("../settings"),
                        s = n(a),
                        l = e("../const"),
                        u = e("./TickerListener"),
                        c = n(u),
                        h = function() {
                            function e() {
                                var t = this;
                                r(this, e), this._head = new c.default(null, null, 1 / 0), this._requestId = null, this._maxElapsedMS = 100, this.autoStart = !1, this.deltaTime = 1, this.elapsedMS = 1 / s.default.TARGET_FPMS, this.lastTime = -1, this.speed = 1, this.started = !1, this._tick = function(e) {
                                    t._requestId = null, t.started && (t.update(e), t.started && null === t._requestId && t._head.next && (t._requestId = requestAnimationFrame(t._tick)))
                                }
                            }
                            return e.prototype._requestIfNeeded = function() {
                                null === this._requestId && this._head.next && (this.lastTime = performance.now(), this._requestId = requestAnimationFrame(this._tick))
                            }, e.prototype._cancelIfNeeded = function() {
                                null !== this._requestId && (cancelAnimationFrame(this._requestId), this._requestId = null)
                            }, e.prototype._startIfPossible = function() {
                                this.started ? this._requestIfNeeded() : this.autoStart && this.start()
                            }, e.prototype.add = function(e, t) {
                                var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : l.UPDATE_PRIORITY.NORMAL;
                                return this._addListener(new c.default(e, t, i))
                            }, e.prototype.addOnce = function(e, t) {
                                var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : l.UPDATE_PRIORITY.NORMAL;
                                return this._addListener(new c.default(e, t, i, !0))
                            }, e.prototype._addListener = function(e) {
                                var t = this._head.next,
                                    i = this._head;
                                if (t) {
                                    for (; t;) {
                                        if (e.priority > t.priority) {
                                            e.connect(i);
                                            break
                                        }
                                        i = t, t = t.next
                                    }
                                    e.previous || e.connect(i)
                                } else e.connect(i);
                                return this._startIfPossible(), this
                            }, e.prototype.remove = function(e, t) {
                                for (var i = this._head.next; i;) i = i.match(e, t) ? i.destroy() : i.next;
                                return this._head.next || this._cancelIfNeeded(), this
                            }, e.prototype.start = function() {
                                this.started || (this.started = !0, this._requestIfNeeded())
                            }, e.prototype.stop = function() {
                                this.started && (this.started = !1, this._cancelIfNeeded())
                            }, e.prototype.destroy = function() {
                                this.stop();
                                for (var e = this._head.next; e;) e = e.destroy(!0);
                                this._head.destroy(), this._head = null
                            }, e.prototype.update = function() {
                                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : performance.now(),
                                    t = void 0;
                                if (e > this.lastTime) {
                                    t = this.elapsedMS = e - this.lastTime, t > this._maxElapsedMS && (t = this._maxElapsedMS), this.deltaTime = t * s.default.TARGET_FPMS * this.speed;
                                    for (var i = this._head, n = i.next; n;) n = n.emit(this.deltaTime);
                                    i.next || this._cancelIfNeeded()
                                } else this.deltaTime = this.elapsedMS = 0;
                                this.lastTime = e
                            }, o(e, [{
                                key: "FPS",
                                get: function() {
                                    return 1e3 / this.elapsedMS
                                }
                            }, {
                                key: "minFPS",
                                get: function() {
                                    return 1e3 / this._maxElapsedMS
                                },
                                set: function(e) {
                                    var t = Math.min(Math.max(0, e) / 1e3, s.default.TARGET_FPMS);
                                    this._maxElapsedMS = 1 / t
                                }
                            }]), e
                        }();
                    i.default = h
                }, {
                    "../const": 46,
                    "../settings": 101,
                    "./TickerListener": 120
                }],
                120: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = function() {
                        function e(t) {
                            var i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null,
                                r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0,
                                o = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];
                            n(this, e), this.fn = t, this.context = i, this.priority = r, this.once = o, this.next = null, this.previous = null, this._destroyed = !1
                        }
                        return e.prototype.match = function(e, t) {
                            return t = t || null, this.fn === e && this.context === t
                        }, e.prototype.emit = function(e) {
                            this.fn && (this.context ? this.fn.call(this.context, e) : this.fn(e));
                            var t = this.next;
                            return this.once && this.destroy(!0), this._destroyed && (this.next = null), t
                        }, e.prototype.connect = function(e) {
                            this.previous = e, e.next && (e.next.previous = this), this.next = e.next, e.next = this
                        }, e.prototype.destroy = function() {
                            var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
                            this._destroyed = !0, this.fn = null, this.context = null, this.previous && (this.previous.next = this.next), this.next && (this.next.previous = this.previous);
                            var t = this.next;
                            return this.next = e ? null : t, this.previous = null, t
                        }, e
                    }();
                    i.default = r
                }, {}],
                121: [function(e, t, i) {
                    "use strict";
                    i.__esModule = !0, i.Ticker = i.shared = void 0;
                    var n = e("./Ticker"),
                        r = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(n),
                        o = new r.default;
                    o.autoStart = !0, o.destroy = function() {}, i.shared = o, i.Ticker = r.default
                }, {
                    "./Ticker": 119
                }],
                122: [function(e, t, i) {
                    "use strict";

                    function n() {
                        return !(navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform))
                    }
                    i.__esModule = !0, i.default = n
                }, {}],
                123: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        for (var t = 6 * e, i = new Uint16Array(t), n = 0, r = 0; n < t; n += 6, r += 4) i[n + 0] = r + 0, i[n + 1] = r + 1, i[n + 2] = r + 2, i[n + 3] = r + 0, i[n + 4] = r + 2, i[n + 5] = r + 3;
                        return i
                    }
                    i.__esModule = !0, i.default = n
                }, {}],
                124: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : window.location;
                        if (0 === e.indexOf("data:")) return "";
                        t = t || window.location, a || (a = document.createElement("a")), a.href = e, e = o.default.parse(a.href);
                        var i = !e.port && "" === t.port || e.port === t.port;
                        return e.hostname === t.hostname && i && e.protocol === t.protocol ? "" : "anonymous"
                    }
                    i.__esModule = !0, i.default = n;
                    var r = e("url"),
                        o = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(r),
                        a = void 0
                }, {
                    url: 38
                }],
                125: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                        return t.default = e, t
                    }

                    function r(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function o() {
                        return ++U
                    }

                    function a(e, t) {
                        return t = t || [], t[0] = (e >> 16 & 255) / 255, t[1] = (e >> 8 & 255) / 255, t[2] = (255 & e) / 255, t
                    }

                    function s(e) {
                        return e = e.toString(16), "#" + (e = "000000".substr(0, 6 - e.length) + e)
                    }

                    function l(e) {
                        return (255 * e[0] << 16) + (255 * e[1] << 8) + (255 * e[2] | 0)
                    }

                    function u(e, t) {
                        var i = E.default.RETINA_PREFIX.exec(e);
                        return i ? parseFloat(i[1]) : void 0 !== t ? t : 1
                    }

                    function c(e) {
                        var t = T.DATA_URI.exec(e);
                        if (t) return {
                            mediaType: t[1] ? t[1].toLowerCase() : void 0,
                            subType: t[2] ? t[2].toLowerCase() : void 0,
                            charset: t[3] ? t[3].toLowerCase() : void 0,
                            encoding: t[4] ? t[4].toLowerCase() : void 0,
                            data: t[5]
                        }
                    }

                    function h(e) {
                        var t = T.URL_FILE_EXTENSION.exec(e);
                        if (t) return t[1].toLowerCase()
                    }

                    function p(e) {
                        var t = T.SVG_SIZE.exec(e),
                            i = {};
                        return t && (i[t[1]] = Math.round(parseFloat(t[3])), i[t[5]] = Math.round(parseFloat(t[7]))), i
                    }

                    function f() {
                        j = !0
                    }

                    function d(e) {
                        if (!j) {
                            if (navigator.userAgent.toLowerCase().indexOf("chrome") > -1) {
                                var t = ["\n %c %c %c PixiJS " + T.VERSION + " - ✰ " + e + " ✰  %c  %c  http://www.pixijs.com/  %c %c ♥%c♥%c♥ \n\n", "background: #ff66a5; padding:5px 0;", "background: #ff66a5; padding:5px 0;", "color: #ff66a5; background: #030307; padding:5px 0;", "background: #ff66a5; padding:5px 0;", "background: #ffc3dc; padding:5px 0;", "background: #ff66a5; padding:5px 0;", "color: #ff2424; background: #fff; padding:5px 0;", "color: #ff2424; background: #fff; padding:5px 0;", "color: #ff2424; background: #fff; padding:5px 0;"];
                                window.console.log.apply(console, t)
                            } else window.console && window.console.log("PixiJS " + T.VERSION + " - " + e + " - http://www.pixijs.com/");
                            j = !0
                        }
                    }

                    function _() {
                        var e = {
                            stencil: !0,
                            failIfMajorPerformanceCaveat: !0
                        };
                        try {
                            if (!window.WebGLRenderingContext) return !1;
                            var t = document.createElement("canvas"),
                                i = t.getContext("webgl", e) || t.getContext("experimental-webgl", e),
                                n = !(!i || !i.getContextAttributes().stencil);
                            if (i) {
                                var r = i.getExtension("WEBGL_lose_context");
                                r && r.loseContext()
                            }
                            return i = null, n
                        } catch (e) {
                            return !1
                        }
                    }

                    function m(e) {
                        return 0 === e ? 0 : e < 0 ? -1 : 1
                    }

                    function g() {
                        var e = void 0;
                        for (e in W) W[e].destroy();
                        for (e in H) H[e].destroy()
                    }

                    function v() {
                        var e = void 0;
                        for (e in W) delete W[e];
                        for (e in H) delete H[e]
                    }

                    function y(e, t) {
                        return X[t ? 1 : 0][e]
                    }

                    function b(e, t) {
                        if (1 === t) return (255 * t << 24) + e;
                        if (0 === t) return 0;
                        var i = e >> 16 & 255,
                            n = e >> 8 & 255,
                            r = 255 & e;
                        return i = i * t + .5 | 0, n = n * t + .5 | 0, r = r * t + .5 | 0, (255 * t << 24) + (i << 16) + (n << 8) + r
                    }

                    function x(e, t, i, n) {
                        return i = i || new Float32Array(4), n || void 0 === n ? (i[0] = e[0] * t, i[1] = e[1] * t, i[2] = e[2] * t) : (i[0] = e[0], i[1] = e[1], i[2] = e[2]), i[3] = t, i
                    }

                    function S(e, t, i, n) {
                        return i = i || new Float32Array(4), i[0] = (e >> 16 & 255) / 255, i[1] = (e >> 8 & 255) / 255, i[2] = (255 & e) / 255, (n || void 0 === n) && (i[0] *= t, i[1] *= t, i[2] *= t), i[3] = t, i
                    }
                    i.__esModule = !0, i.premultiplyBlendMode = i.BaseTextureCache = i.TextureCache = i.earcut = i.mixins = i.pluginTarget = i.EventEmitter = i.removeItems = i.isMobile = void 0, i.uid = o, i.hex2rgb = a, i.hex2string = s, i.rgb2hex = l, i.getResolutionOfUrl = u, i.decomposeDataUri = c, i.getUrlFileExtension = h, i.getSvgSize = p, i.skipHello = f, i.sayHello = d, i.isWebGLSupported = _, i.sign = m, i.destroyTextureCache = g, i.clearTextureCache = v, i.correctBlendMode = y, i.premultiplyTint = b, i.premultiplyRgba = x, i.premultiplyTintToRgba = S;
                    var T = e("../const"),
                        w = e("../settings"),
                        E = r(w),
                        P = e("eventemitter3"),
                        R = r(P),
                        O = e("./pluginTarget"),
                        A = r(O),
                        I = e("./mixin"),
                        C = n(I),
                        M = e("ismobilejs"),
                        D = n(M),
                        N = e("remove-array-items"),
                        L = r(N),
                        k = e("./mapPremultipliedBlendModes"),
                        F = r(k),
                        B = e("earcut"),
                        G = r(B),
                        U = 0,
                        j = !1;
                    i.isMobile = D, i.removeItems = L.default, i.EventEmitter = R.default, i.pluginTarget = A.default, i.mixins = C, i.earcut = G.default;
                    var W = i.TextureCache = Object.create(null),
                        H = i.BaseTextureCache = Object.create(null),
                        X = i.premultiplyBlendMode = (0, F.default)()
                }, {
                    "../const": 46,
                    "../settings": 101,
                    "./mapPremultipliedBlendModes": 126,
                    "./mixin": 128,
                    "./pluginTarget": 129,
                    earcut: 2,
                    eventemitter3: 3,
                    ismobilejs: 4,
                    "remove-array-items": 31
                }],
                126: [function(e, t, i) {
                    "use strict";

                    function n() {
                        for (var e = [], t = [], i = 0; i < 32; i++) e[i] = i, t[i] = i;
                        e[r.BLEND_MODES.NORMAL_NPM] = r.BLEND_MODES.NORMAL, e[r.BLEND_MODES.ADD_NPM] = r.BLEND_MODES.ADD, e[r.BLEND_MODES.SCREEN_NPM] = r.BLEND_MODES.SCREEN, t[r.BLEND_MODES.NORMAL] = r.BLEND_MODES.NORMAL_NPM, t[r.BLEND_MODES.ADD] = r.BLEND_MODES.ADD_NPM, t[r.BLEND_MODES.SCREEN] = r.BLEND_MODES.SCREEN_NPM;
                        var n = [];
                        return n.push(t), n.push(e), n
                    }
                    i.__esModule = !0, i.default = n;
                    var r = e("../const")
                }, {
                    "../const": 46
                }],
                127: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return o.default.tablet || o.default.phone ? 4 : e
                    }
                    i.__esModule = !0, i.default = n;
                    var r = e("ismobilejs"),
                        o = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(r)
                }, {
                    ismobilejs: 4
                }],
                128: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (e && t)
                            for (var i = Object.keys(t), n = 0; n < i.length; ++n) {
                                var r = i[n];
                                Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))
                            }
                    }

                    function r(e, t) {
                        a.push(e, t)
                    }

                    function o() {
                        for (var e = 0; e < a.length; e += 2) n(a[e], a[e + 1]);
                        a.length = 0
                    }
                    i.__esModule = !0, i.mixin = n, i.delayMixin = r, i.performMixins = o;
                    var a = []
                }, {}],
                129: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        e.__plugins = {}, e.registerPlugin = function(t, i) {
                            e.__plugins[t] = i
                        }, e.prototype.initPlugins = function() {
                            this.plugins = this.plugins || {};
                            for (var t in e.__plugins) this.plugins[t] = new e.__plugins[t](this)
                        }, e.prototype.destroyPlugins = function() {
                            for (var e in this.plugins) this.plugins[e].destroy(), this.plugins[e] = null;
                            this.plugins = null
                        }
                    }
                    i.__esModule = !0, i.default = {
                        mixin: function(e) {
                            n(e)
                        }
                    }
                }, {}],
                130: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        var t = e.width,
                            i = e.height,
                            n = e.getContext("2d"),
                            r = n.getImageData(0, 0, t, i),
                            o = r.data,
                            a = o.length,
                            s = {
                                top: null,
                                left: null,
                                right: null,
                                bottom: null
                            },
                            l = null,
                            u = void 0,
                            c = void 0,
                            h = void 0;
                        for (u = 0; u < a; u += 4) 0 !== o[u + 3] && (c = u / 4 % t, h = ~~(u / 4 / t), null === s.top && (s.top = h), null === s.left ? s.left = c : c < s.left && (s.left = c), null === s.right ? s.right = c + 1 : s.right < c && (s.right = c + 1), null === s.bottom ? s.bottom = h : s.bottom < h && (s.bottom = h));
                        return null !== s.top && (t = s.right - s.left, i = s.bottom - s.top + 1, l = n.getImageData(s.left, s.top, t, i)), {
                            height: i,
                            width: t,
                            data: l
                        }
                    }
                    i.__esModule = !0, i.default = n
                }, {}],
                131: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        if (!o[e]) {
                            var t = (new Error).stack;
                            void 0 === t || (t = t.split("\n").splice(3).join("\n"), console.groupCollapsed), o[e] = !0
                        }
                    }

                    function r(e) {
                        var t = e.mesh,
                            i = e.particles,
                            r = e.extras,
                            o = e.filters,
                            a = e.prepare,
                            s = e.loaders,
                            l = e.interaction;
                        Object.defineProperties(e, {
                            SpriteBatch: {
                                get: function() {
                                    throw new ReferenceError("SpriteBatch does not exist any more, please use the new ParticleContainer instead.")
                                }
                            },
                            AssetLoader: {
                                get: function() {
                                    throw new ReferenceError("The loader system was overhauled in PixiJS v3, please see the new PIXI.loaders.Loader class.")
                                }
                            },
                            Stage: {
                                get: function() {
                                    return n("You do not need to use a PIXI Stage any more, you can simply render any container."), e.Container
                                }
                            },
                            DisplayObjectContainer: {
                                get: function() {
                                    return n("DisplayObjectContainer has been shortened to Container, please use Container from now on."), e.Container
                                }
                            },
                            Strip: {
                                get: function() {
                                    return n("The Strip class has been renamed to Mesh and moved to mesh.Mesh, please use mesh.Mesh from now on."), t.Mesh
                                }
                            },
                            Rope: {
                                get: function() {
                                    return n("The Rope class has been moved to mesh.Rope, please use mesh.Rope from now on."), t.Rope
                                }
                            },
                            ParticleContainer: {
                                get: function() {
                                    return n("The ParticleContainer class has been moved to particles.ParticleContainer, please use particles.ParticleContainer from now on."), i.ParticleContainer
                                }
                            },
                            MovieClip: {
                                get: function() {
                                    return n("The MovieClip class has been moved to extras.AnimatedSprite, please use extras.AnimatedSprite."), r.AnimatedSprite
                                }
                            },
                            TilingSprite: {
                                get: function() {
                                    return n("The TilingSprite class has been moved to extras.TilingSprite, please use extras.TilingSprite from now on."), r.TilingSprite
                                }
                            },
                            BitmapText: {
                                get: function() {
                                    return n("The BitmapText class has been moved to extras.BitmapText, please use extras.BitmapText from now on."), r.BitmapText
                                }
                            },
                            blendModes: {
                                get: function() {
                                    return n("The blendModes has been moved to BLEND_MODES, please use BLEND_MODES from now on."), e.BLEND_MODES
                                }
                            },
                            scaleModes: {
                                get: function() {
                                    return n("The scaleModes has been moved to SCALE_MODES, please use SCALE_MODES from now on."), e.SCALE_MODES
                                }
                            },
                            BaseTextureCache: {
                                get: function() {
                                    return n("The BaseTextureCache class has been moved to utils.BaseTextureCache, please use utils.BaseTextureCache from now on."), e.utils.BaseTextureCache
                                }
                            },
                            TextureCache: {
                                get: function() {
                                    return n("The TextureCache class has been moved to utils.TextureCache, please use utils.TextureCache from now on."), e.utils.TextureCache
                                }
                            },
                            math: {
                                get: function() {
                                    return n("The math namespace is deprecated, please access members already accessible on PIXI."), e
                                }
                            },
                            AbstractFilter: {
                                get: function() {
                                    return n("AstractFilter has been renamed to Filter, please use PIXI.Filter"), e.Filter
                                }
                            },
                            TransformManual: {
                                get: function() {
                                    return n("TransformManual has been renamed to TransformBase, please update your pixi-spine"), e.TransformBase
                                }
                            },
                            TARGET_FPMS: {
                                get: function() {
                                    return n("PIXI.TARGET_FPMS has been deprecated, please use PIXI.settings.TARGET_FPMS"), e.settings.TARGET_FPMS
                                },
                                set: function(t) {
                                    n("PIXI.TARGET_FPMS has been deprecated, please use PIXI.settings.TARGET_FPMS"), e.settings.TARGET_FPMS = t
                                }
                            },
                            FILTER_RESOLUTION: {
                                get: function() {
                                    return n("PIXI.FILTER_RESOLUTION has been deprecated, please use PIXI.settings.FILTER_RESOLUTION"), e.settings.FILTER_RESOLUTION
                                },
                                set: function(t) {
                                    n("PIXI.FILTER_RESOLUTION has been deprecated, please use PIXI.settings.FILTER_RESOLUTION"), e.settings.FILTER_RESOLUTION = t
                                }
                            },
                            RESOLUTION: {
                                get: function() {
                                    return n("PIXI.RESOLUTION has been deprecated, please use PIXI.settings.RESOLUTION"), e.settings.RESOLUTION
                                },
                                set: function(t) {
                                    n("PIXI.RESOLUTION has been deprecated, please use PIXI.settings.RESOLUTION"), e.settings.RESOLUTION = t
                                }
                            },
                            MIPMAP_TEXTURES: {
                                get: function() {
                                    return n("PIXI.MIPMAP_TEXTURES has been deprecated, please use PIXI.settings.MIPMAP_TEXTURES"), e.settings.MIPMAP_TEXTURES
                                },
                                set: function(t) {
                                    n("PIXI.MIPMAP_TEXTURES has been deprecated, please use PIXI.settings.MIPMAP_TEXTURES"), e.settings.MIPMAP_TEXTURES = t
                                }
                            },
                            SPRITE_BATCH_SIZE: {
                                get: function() {
                                    return n("PIXI.SPRITE_BATCH_SIZE has been deprecated, please use PIXI.settings.SPRITE_BATCH_SIZE"), e.settings.SPRITE_BATCH_SIZE
                                },
                                set: function(t) {
                                    n("PIXI.SPRITE_BATCH_SIZE has been deprecated, please use PIXI.settings.SPRITE_BATCH_SIZE"), e.settings.SPRITE_BATCH_SIZE = t
                                }
                            },
                            SPRITE_MAX_TEXTURES: {
                                get: function() {
                                    return n("PIXI.SPRITE_MAX_TEXTURES has been deprecated, please use PIXI.settings.SPRITE_MAX_TEXTURES"), e.settings.SPRITE_MAX_TEXTURES
                                },
                                set: function(t) {
                                    n("PIXI.SPRITE_MAX_TEXTURES has been deprecated, please use PIXI.settings.SPRITE_MAX_TEXTURES"), e.settings.SPRITE_MAX_TEXTURES = t
                                }
                            },
                            RETINA_PREFIX: {
                                get: function() {
                                    return n("PIXI.RETINA_PREFIX has been deprecated, please use PIXI.settings.RETINA_PREFIX"), e.settings.RETINA_PREFIX
                                },
                                set: function(t) {
                                    n("PIXI.RETINA_PREFIX has been deprecated, please use PIXI.settings.RETINA_PREFIX"), e.settings.RETINA_PREFIX = t
                                }
                            },
                            DEFAULT_RENDER_OPTIONS: {
                                get: function() {
                                    return n("PIXI.DEFAULT_RENDER_OPTIONS has been deprecated, please use PIXI.settings.DEFAULT_RENDER_OPTIONS"), e.settings.RENDER_OPTIONS
                                }
                            }
                        });
                        for (var u = [{
                                parent: "TRANSFORM_MODE",
                                target: "TRANSFORM_MODE"
                            }, {
                                parent: "GC_MODES",
                                target: "GC_MODE"
                            }, {
                                parent: "WRAP_MODES",
                                target: "WRAP_MODE"
                            }, {
                                parent: "SCALE_MODES",
                                target: "SCALE_MODE"
                            }, {
                                parent: "PRECISION",
                                target: "PRECISION_FRAGMENT"
                            }], c = 0; c < u.length; c++) ! function(t) {
                            var i = u[t];
                            Object.defineProperty(e[i.parent], "DEFAULT", {
                                get: function() {
                                    return n("PIXI." + i.parent + ".DEFAULT has been deprecated, please use PIXI.settings." + i.target), e.settings[i.target]
                                },
                                set: function(t) {
                                    n("PIXI." + i.parent + ".DEFAULT has been deprecated, please use PIXI.settings." + i.target), e.settings[i.target] = t
                                }
                            })
                        }(c);
                        Object.defineProperties(e.settings, {
                                PRECISION: {
                                    get: function() {
                                        return n("PIXI.settings.PRECISION has been deprecated, please use PIXI.settings.PRECISION_FRAGMENT"), e.settings.PRECISION_FRAGMENT
                                    },
                                    set: function(t) {
                                        n("PIXI.settings.PRECISION has been deprecated, please use PIXI.settings.PRECISION_FRAGMENT"), e.settings.PRECISION_FRAGMENT = t
                                    }
                                }
                            }), r.AnimatedSprite && Object.defineProperties(r, {
                                MovieClip: {
                                    get: function() {
                                        return n("The MovieClip class has been renamed to AnimatedSprite, please use AnimatedSprite from now on."), r.AnimatedSprite
                                    }
                                }
                            }), r && Object.defineProperties(r, {
                                TextureTransform: {
                                    get: function() {
                                        return n("The TextureTransform class has been renamed to TextureMatrix, please use PIXI.TextureMatrix from now on."), e.TextureMatrix
                                    }
                                }
                            }), e.DisplayObject.prototype.generateTexture = function(e, t, i) {
                                return n("generateTexture has moved to the renderer, please use renderer.generateTexture(displayObject)"), e.generateTexture(this, t, i)
                            }, e.Graphics.prototype.generateTexture = function(e, t) {
                                return n("graphics generate texture has moved to the renderer. Or to render a graphics to a texture using canvas please use generateCanvasTexture"), this.generateCanvasTexture(e, t)
                            }, e.GroupD8.isSwapWidthHeight = function(t) {
                                return n("GroupD8.isSwapWidthHeight was renamed to GroupD8.isVertical"), e.GroupD8.isVertical(t)
                            }, e.RenderTexture.prototype.render = function(e, t, i, r) {
                                this.legacyRenderer.render(e, this, i, t, !r), n("RenderTexture.render is now deprecated, please use renderer.render(displayObject, renderTexture)")
                            }, e.RenderTexture.prototype.getImage = function(e) {
                                return n("RenderTexture.getImage is now deprecated, please use renderer.extract.image(target)"), this.legacyRenderer.extract.image(e)
                            }, e.RenderTexture.prototype.getBase64 = function(e) {
                                return n("RenderTexture.getBase64 is now deprecated, please use renderer.extract.base64(target)"), this.legacyRenderer.extract.base64(e)
                            }, e.RenderTexture.prototype.getCanvas = function(e) {
                                return n("RenderTexture.getCanvas is now deprecated, please use renderer.extract.canvas(target)"), this.legacyRenderer.extract.canvas(e)
                            }, e.RenderTexture.prototype.getPixels = function(e) {
                                return n("RenderTexture.getPixels is now deprecated, please use renderer.extract.pixels(target)"), this.legacyRenderer.pixels(e)
                            }, e.Sprite.prototype.setTexture = function(e) {
                                this.texture = e, n("setTexture is now deprecated, please use the texture property, e.g : sprite.texture = texture;")
                            }, r.BitmapText && (r.BitmapText.prototype.setText = function(e) {
                                this.text = e, n("setText is now deprecated, please use the text property, e.g : myBitmapText.text = 'my text';")
                            }), e.Text.prototype.setText = function(e) {
                                this.text = e, n("setText is now deprecated, please use the text property, e.g : myText.text = 'my text';")
                            }, e.Text.calculateFontProperties = function(t) {
                                return n("Text.calculateFontProperties is now deprecated, please use the TextMetrics.measureFont"), e.TextMetrics.measureFont(t)
                            }, Object.defineProperties(e.Text, {
                                fontPropertiesCache: {
                                    get: function() {
                                        return n("Text.fontPropertiesCache is deprecated"), e.TextMetrics._fonts
                                    }
                                },
                                fontPropertiesCanvas: {
                                    get: function() {
                                        return n("Text.fontPropertiesCanvas is deprecated"), e.TextMetrics._canvas
                                    }
                                },
                                fontPropertiesContext: {
                                    get: function() {
                                        return n("Text.fontPropertiesContext is deprecated"), e.TextMetrics._context
                                    }
                                }
                            }), e.Text.prototype.setStyle = function(e) {
                                this.style = e, n("setStyle is now deprecated, please use the style property, e.g : myText.style = style;")
                            }, e.Text.prototype.determineFontProperties = function(t) {
                                return n("determineFontProperties is now deprecated, please use TextMetrics.measureFont method"), e.TextMetrics.measureFont(t)
                            }, e.Text.getFontStyle = function(t) {
                                return n("getFontStyle is now deprecated, please use TextStyle.toFontString() instead"), t = t || {}, t instanceof e.TextStyle || (t = new e.TextStyle(t)), t.toFontString()
                            }, Object.defineProperties(e.TextStyle.prototype, {
                                font: {
                                    get: function() {
                                        n("text style property 'font' is now deprecated, please use the 'fontFamily', 'fontSize', 'fontStyle', 'fontVariant' and 'fontWeight' properties from now on");
                                        var e = "number" == typeof this._fontSize ? this._fontSize + "px" : this._fontSize;
                                        return this._fontStyle + " " + this._fontVariant + " " + this._fontWeight + " " + e + " " + this._fontFamily
                                    },
                                    set: function(e) {
                                        n("text style property 'font' is now deprecated, please use the 'fontFamily','fontSize',fontStyle','fontVariant' and 'fontWeight' properties from now on"), e.indexOf("italic") > 1 ? this._fontStyle = "italic" : e.indexOf("oblique") > -1 ? this._fontStyle = "oblique" : this._fontStyle = "normal", e.indexOf("small-caps") > -1 ? this._fontVariant = "small-caps" : this._fontVariant = "normal";
                                        var t = e.split(" "),
                                            i = -1;
                                        this._fontSize = 26;
                                        for (var r = 0; r < t.length; ++r)
                                            if (t[r].match(/(px|pt|em|%)/)) {
                                                i = r, this._fontSize = t[r];
                                                break
                                            }
                                        this._fontWeight = "normal";
                                        for (var o = 0; o < i; ++o)
                                            if (t[o].match(/(bold|bolder|lighter|100|200|300|400|500|600|700|800|900)/)) {
                                                this._fontWeight = t[o];
                                                break
                                            }
                                        if (i > -1 && i < t.length - 1) {
                                            this._fontFamily = "";
                                            for (var a = i + 1; a < t.length; ++a) this._fontFamily += t[a] + " ";
                                            this._fontFamily = this._fontFamily.slice(0, -1)
                                        } else this._fontFamily = "Arial";
                                        this.styleID++
                                    }
                                }
                            }), e.Texture.prototype.setFrame = function(e) {
                                this.frame = e, n("setFrame is now deprecated, please use the frame property, e.g: myTexture.frame = frame;")
                            }, e.Texture.addTextureToCache = function(t, i) {
                                e.Texture.addToCache(t, i), n("Texture.addTextureToCache is deprecated, please use Texture.addToCache from now on.")
                            },
                            e.Texture.removeTextureFromCache = function(t) {
                                return n("Texture.removeTextureFromCache is deprecated, please use Texture.removeFromCache from now on. Be aware that Texture.removeFromCache does not automatically its BaseTexture from the BaseTextureCache. For that, use BaseTexture.removeFromCache"), e.BaseTexture.removeFromCache(t), e.Texture.removeFromCache(t)
                            }, Object.defineProperties(o, {
                                AbstractFilter: {
                                    get: function() {
                                        return n("AstractFilter has been renamed to Filter, please use PIXI.Filter"), e.AbstractFilter
                                    }
                                },
                                SpriteMaskFilter: {
                                    get: function() {
                                        return n("filters.SpriteMaskFilter is an undocumented alias, please use SpriteMaskFilter from now on."), e.SpriteMaskFilter
                                    }
                                },
                                VoidFilter: {
                                    get: function() {
                                        return n("VoidFilter has been renamed to AlphaFilter, please use PIXI.filters.AlphaFilter"), o.AlphaFilter
                                    }
                                }
                            }), e.utils.uuid = function() {
                                return n("utils.uuid() is deprecated, please use utils.uid() from now on."), e.utils.uid()
                            }, e.utils.canUseNewCanvasBlendModes = function() {
                                return n("utils.canUseNewCanvasBlendModes() is deprecated, please use CanvasTinter.canUseMultiply from now on"), e.CanvasTinter.canUseMultiply
                            };
                        var h = !0;
                        if (Object.defineProperty(e.utils, "_saidHello", {
                                set: function(e) {
                                    e && (n("PIXI.utils._saidHello is deprecated, please use PIXI.utils.skipHello()"), this.skipHello()), h = e
                                },
                                get: function() {
                                    return h
                                }
                            }), a.BasePrepare && (a.BasePrepare.prototype.register = function(e, t) {
                                return n("renderer.plugins.prepare.register is now deprecated, please use renderer.plugins.prepare.registerFindHook & renderer.plugins.prepare.registerUploadHook"), e && this.registerFindHook(e), t && this.registerUploadHook(t), this
                            }), a.canvas && Object.defineProperty(a.canvas, "UPLOADS_PER_FRAME", {
                                set: function() {
                                    n("PIXI.CanvasPrepare.UPLOADS_PER_FRAME has been removed. Please set renderer.plugins.prepare.limiter.maxItemsPerFrame on your renderer")
                                },
                                get: function() {
                                    return n("PIXI.CanvasPrepare.UPLOADS_PER_FRAME has been removed. Please use renderer.plugins.prepare.limiter"), NaN
                                }
                            }), a.webgl && Object.defineProperty(a.webgl, "UPLOADS_PER_FRAME", {
                                set: function() {
                                    n("PIXI.WebGLPrepare.UPLOADS_PER_FRAME has been removed. Please set renderer.plugins.prepare.limiter.maxItemsPerFrame on your renderer")
                                },
                                get: function() {
                                    return n("PIXI.WebGLPrepare.UPLOADS_PER_FRAME has been removed. Please use renderer.plugins.prepare.limiter"), NaN
                                }
                            }), s.Loader) {
                            var p = s.Resource,
                                f = s.Loader;
                            Object.defineProperties(p.prototype, {
                                isJson: {
                                    get: function() {
                                        return n("The isJson property is deprecated, please use `resource.type === Resource.TYPE.JSON`."), this.type === p.TYPE.JSON
                                    }
                                },
                                isXml: {
                                    get: function() {
                                        return n("The isXml property is deprecated, please use `resource.type === Resource.TYPE.XML`."), this.type === p.TYPE.XML
                                    }
                                },
                                isImage: {
                                    get: function() {
                                        return n("The isImage property is deprecated, please use `resource.type === Resource.TYPE.IMAGE`."), this.type === p.TYPE.IMAGE
                                    }
                                },
                                isAudio: {
                                    get: function() {
                                        return n("The isAudio property is deprecated, please use `resource.type === Resource.TYPE.AUDIO`."), this.type === p.TYPE.AUDIO
                                    }
                                },
                                isVideo: {
                                    get: function() {
                                        return n("The isVideo property is deprecated, please use `resource.type === Resource.TYPE.VIDEO`."), this.type === p.TYPE.VIDEO
                                    }
                                }
                            }), Object.defineProperties(f.prototype, {
                                before: {
                                    get: function() {
                                        return n("The before() method is deprecated, please use pre()."), this.pre
                                    }
                                },
                                after: {
                                    get: function() {
                                        return n("The after() method is deprecated, please use use()."), this.use
                                    }
                                }
                            })
                        }
                        l.interactiveTarget && Object.defineProperty(l.interactiveTarget, "defaultCursor", {
                            set: function(e) {
                                n("Property defaultCursor has been replaced with 'cursor'. "), this.cursor = e
                            },
                            get: function() {
                                return n("Property defaultCursor has been replaced with 'cursor'. "), this.cursor
                            }
                        }), l.InteractionManager && (Object.defineProperty(l.InteractionManager, "defaultCursorStyle", {
                            set: function(e) {
                                n("Property defaultCursorStyle has been replaced with 'cursorStyles.default'. "), this.cursorStyles.default = e
                            },
                            get: function() {
                                return n("Property defaultCursorStyle has been replaced with 'cursorStyles.default'. "), this.cursorStyles.default
                            }
                        }), Object.defineProperty(l.InteractionManager, "currentCursorStyle", {
                            set: function(e) {
                                n("Property currentCursorStyle has been removed.See the currentCursorMode property, which works differently."), this.currentCursorMode = e
                            },
                            get: function() {
                                return n("Property currentCursorStyle has been removed.See the currentCursorMode property, which works differently."), this.currentCursorMode
                            }
                        }))
                    }
                    i.__esModule = !0, i.default = r;
                    var o = {}
                }, {}],
                132: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = e("../../core"),
                        o = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(r),
                        a = new o.Rectangle,
                        s = function() {
                            function e(t) {
                                n(this, e), this.renderer = t, t.extract = this
                            }
                            return e.prototype.image = function(e) {
                                var t = new Image;
                                return t.src = this.base64(e), t
                            }, e.prototype.base64 = function(e) {
                                return this.canvas(e).toDataURL()
                            }, e.prototype.canvas = function(e) {
                                var t = this.renderer,
                                    i = void 0,
                                    n = void 0,
                                    r = void 0,
                                    s = void 0;
                                e && (s = e instanceof o.RenderTexture ? e : t.generateTexture(e)), s ? (i = s.baseTexture._canvasRenderTarget.context, n = s.baseTexture._canvasRenderTarget.resolution, r = s.frame) : (i = t.rootContext, n = t.resolution, r = a, r.width = this.renderer.width, r.height = this.renderer.height);
                                var l = r.width * n,
                                    u = r.height * n,
                                    c = new o.CanvasRenderTarget(l, u, 1),
                                    h = i.getImageData(r.x * n, r.y * n, l, u);
                                return c.context.putImageData(h, 0, 0), c.canvas
                            }, e.prototype.pixels = function(e) {
                                var t = this.renderer,
                                    i = void 0,
                                    n = void 0,
                                    r = void 0,
                                    s = void 0;
                                return e && (s = e instanceof o.RenderTexture ? e : t.generateTexture(e)), s ? (i = s.baseTexture._canvasRenderTarget.context, n = s.baseTexture._canvasRenderTarget.resolution, r = s.frame) : (i = t.rootContext, r = a, r.width = t.width, r.height = t.height), i.getImageData(0, 0, r.width * n, r.height * n).data
                            }, e.prototype.destroy = function() {
                                this.renderer.extract = null, this.renderer = null
                            }, e
                        }();
                    i.default = s, o.CanvasRenderer.registerPlugin("extract", s)
                }, {
                    "../../core": 65
                }],
                133: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }
                    i.__esModule = !0;
                    var r = e("./webgl/WebGLExtract");
                    Object.defineProperty(i, "webgl", {
                        enumerable: !0,
                        get: function() {
                            return n(r).default
                        }
                    });
                    var o = e("./canvas/CanvasExtract");
                    Object.defineProperty(i, "canvas", {
                        enumerable: !0,
                        get: function() {
                            return n(o).default
                        }
                    })
                }, {
                    "./canvas/CanvasExtract": 132,
                    "./webgl/WebGLExtract": 134
                }],
                134: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = e("../../core"),
                        o = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(r),
                        a = new o.Rectangle,
                        s = function() {
                            function e(t) {
                                n(this, e), this.renderer = t, t.extract = this
                            }
                            return e.prototype.image = function(e) {
                                var t = new Image;
                                return t.src = this.base64(e), t
                            }, e.prototype.base64 = function(e) {
                                return this.canvas(e).toDataURL()
                            }, e.prototype.canvas = function(e) {
                                var t = this.renderer,
                                    i = void 0,
                                    n = void 0,
                                    r = void 0,
                                    s = !1,
                                    l = void 0,
                                    u = !1;
                                e && (e instanceof o.RenderTexture ? l = e : (l = this.renderer.generateTexture(e), u = !0)), l ? (i = l.baseTexture._glRenderTargets[this.renderer.CONTEXT_UID], n = i.resolution, r = l.frame, s = !1) : (i = this.renderer.rootRenderTarget, n = i.resolution, s = !0, r = a, r.width = i.size.width, r.height = i.size.height);
                                var c = r.width * n,
                                    h = r.height * n,
                                    p = new o.CanvasRenderTarget(c, h, 1);
                                if (i) {
                                    t.bindRenderTarget(i);
                                    var f = new Uint8Array(4 * c * h),
                                        d = t.gl;
                                    d.readPixels(r.x * n, r.y * n, c, h, d.RGBA, d.UNSIGNED_BYTE, f);
                                    var _ = p.context.getImageData(0, 0, c, h);
                                    _.data.set(f), p.context.putImageData(_, 0, 0), s && (p.context.scale(1, -1), p.context.drawImage(p.canvas, 0, -h))
                                }
                                return u && l.destroy(!0), p.canvas
                            }, e.prototype.pixels = function(e) {
                                var t = this.renderer,
                                    i = void 0,
                                    n = void 0,
                                    r = void 0,
                                    s = void 0,
                                    l = !1;
                                e && (e instanceof o.RenderTexture ? s = e : (s = this.renderer.generateTexture(e), l = !0)), s ? (i = s.baseTexture._glRenderTargets[this.renderer.CONTEXT_UID], n = i.resolution, r = s.frame) : (i = this.renderer.rootRenderTarget, n = i.resolution, r = a, r.width = i.size.width, r.height = i.size.height);
                                var u = r.width * n,
                                    c = r.height * n,
                                    h = new Uint8Array(4 * u * c);
                                if (i) {
                                    t.bindRenderTarget(i);
                                    var p = t.gl;
                                    p.readPixels(r.x * n, r.y * n, u, c, p.RGBA, p.UNSIGNED_BYTE, h)
                                }
                                return l && s.destroy(!0), h
                            }, e.prototype.destroy = function() {
                                this.renderer.extract = null, this.renderer = null
                            }, e
                        }();
                    i.default = s, o.WebGLRenderer.registerPlugin("extract", s)
                }, {
                    "../../core": 65
                }],
                135: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function o(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var a = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        s = e("../core"),
                        l = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(s),
                        u = function(e) {
                            function t(i, o) {
                                n(this, t);
                                var a = r(this, e.call(this, i[0] instanceof l.Texture ? i[0] : i[0].texture));
                                return a._textures = null, a._durations = null, a.textures = i, a._autoUpdate = !1 !== o, a.animationSpeed = 1, a.loop = !0, a.updateAnchor = !1, a.onComplete = null, a.onFrameChange = null, a.onLoop = null, a._currentTime = 0, a.playing = !1, a
                            }
                            return o(t, e), t.prototype.stop = function() {
                                this.playing && (this.playing = !1, this._autoUpdate && l.ticker.shared.remove(this.update, this))
                            }, t.prototype.play = function() {
                                this.playing || (this.playing = !0, this._autoUpdate && l.ticker.shared.add(this.update, this, l.UPDATE_PRIORITY.HIGH))
                            }, t.prototype.gotoAndStop = function(e) {
                                this.stop();
                                var t = this.currentFrame;
                                this._currentTime = e, t !== this.currentFrame && this.updateTexture()
                            }, t.prototype.gotoAndPlay = function(e) {
                                var t = this.currentFrame;
                                this._currentTime = e, t !== this.currentFrame && this.updateTexture(), this.play()
                            }, t.prototype.update = function(e) {
                                var t = this.animationSpeed * e,
                                    i = this.currentFrame;
                                if (null !== this._durations) {
                                    var n = this._currentTime % 1 * this._durations[this.currentFrame];
                                    for (n += t / 60 * 1e3; n < 0;) this._currentTime--, n += this._durations[this.currentFrame];
                                    var r = Math.sign(this.animationSpeed * e);
                                    for (this._currentTime = Math.floor(this._currentTime); n >= this._durations[this.currentFrame];) n -= this._durations[this.currentFrame] * r, this._currentTime += r;
                                    this._currentTime += n / this._durations[this.currentFrame]
                                } else this._currentTime += t;
                                this._currentTime < 0 && !this.loop ? (this.gotoAndStop(0), this.onComplete && this.onComplete()) : this._currentTime >= this._textures.length && !this.loop ? (this.gotoAndStop(this._textures.length - 1), this.onComplete && this.onComplete()) : i !== this.currentFrame && (this.loop && this.onLoop && (this.animationSpeed > 0 && this.currentFrame < i ? this.onLoop() : this.animationSpeed < 0 && this.currentFrame > i && this.onLoop()), this.updateTexture())
                            }, t.prototype.updateTexture = function() {
                                this._texture = this._textures[this.currentFrame], this._textureID = -1, this.cachedTint = 16777215, this.updateAnchor && this._anchor.copy(this._texture.defaultAnchor), this.onFrameChange && this.onFrameChange(this.currentFrame)
                            }, t.prototype.destroy = function(t) {
                                this.stop(), e.prototype.destroy.call(this, t)
                            }, t.fromFrames = function(e) {
                                for (var i = [], n = 0; n < e.length; ++n) i.push(l.Texture.fromFrame(e[n]));
                                return new t(i)
                            }, t.fromImages = function(e) {
                                for (var i = [], n = 0; n < e.length; ++n) i.push(l.Texture.fromImage(e[n]));
                                return new t(i)
                            }, a(t, [{
                                key: "totalFrames",
                                get: function() {
                                    return this._textures.length
                                }
                            }, {
                                key: "textures",
                                get: function() {
                                    return this._textures
                                },
                                set: function(e) {
                                    if (e[0] instanceof l.Texture) this._textures = e, this._durations = null;
                                    else {
                                        this._textures = [], this._durations = [];
                                        for (var t = 0; t < e.length; t++) this._textures.push(e[t].texture), this._durations.push(e[t].time)
                                    }
                                    this.gotoAndStop(0), this.updateTexture()
                                }
                            }, {
                                key: "currentFrame",
                                get: function() {
                                    var e = Math.floor(this._currentTime) % this._textures.length;
                                    return e < 0 && (e += this._textures.length), e
                                }
                            }]), t
                        }(l.Sprite);
                    i.default = u
                }, {
                    "../core": 65
                }],
                136: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function a(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var s = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        l = e("../core"),
                        u = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(l),
                        c = e("../core/math/ObservablePoint"),
                        h = n(c),
                        p = e("../core/utils"),
                        f = e("../core/settings"),
                        d = n(f),
                        _ = function(e) {
                            function t(i) {
                                var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                                r(this, t);
                                var a = o(this, e.call(this));
                                return a._textWidth = 0, a._textHeight = 0, a._glyphs = [], a._font = {
                                    tint: void 0 !== n.tint ? n.tint : 16777215,
                                    align: n.align || "left",
                                    name: null,
                                    size: 0
                                }, a.font = n.font, a._text = i, a._maxWidth = 0, a._maxLineHeight = 0, a._letterSpacing = 0, a._anchor = new h.default(function() {
                                    a.dirty = !0
                                }, a, 0, 0), a.dirty = !1, a.updateText(), a
                            }
                            return a(t, e), t.prototype.updateText = function() {
                                for (var e = t.fonts[this._font.name], i = this._font.size / e.size, n = new u.Point, r = [], o = [], a = this.text.replace(/(?:\r\n|\r)/g, "\n"), s = a.length, l = this._maxWidth * e.size / this._font.size, c = null, h = 0, p = 0, f = 0, d = -1, _ = 0, m = 0, g = 0, v = 0; v < s; v++) {
                                    var y = a.charCodeAt(v),
                                        b = a.charAt(v);
                                    if (/(?:\s)/.test(b) && (d = v, _ = h), "\r" !== b && "\n" !== b) {
                                        var x = e.chars[y];
                                        x && (c && x.kerning[c] && (n.x += x.kerning[c]), r.push({
                                            texture: x.texture,
                                            line: f,
                                            charCode: y,
                                            position: new u.Point(n.x + x.xOffset + this._letterSpacing / 2, n.y + x.yOffset)
                                        }), n.x += x.xAdvance + this._letterSpacing, h = n.x, g = Math.max(g, x.yOffset + x.texture.height), c = y, -1 !== d && l > 0 && n.x > l && (++m, u.utils.removeItems(r, 1 + d - m, 1 + v - d), v = d, d = -1, o.push(_), p = Math.max(p, _), f++, n.x = 0, n.y += e.lineHeight, c = null))
                                    } else o.push(h), p = Math.max(p, h), ++f, ++m, n.x = 0, n.y += e.lineHeight, c = null
                                }
                                var S = a.charAt(a.length - 1);
                                "\r" !== S && "\n" !== S && (/(?:\s)/.test(S) && (h = _), o.push(h), p = Math.max(p, h));
                                for (var T = [], w = 0; w <= f; w++) {
                                    var E = 0;
                                    "right" === this._font.align ? E = p - o[w] : "center" === this._font.align && (E = (p - o[w]) / 2), T.push(E)
                                }
                                for (var P = r.length, R = this.tint, O = 0; O < P; O++) {
                                    var A = this._glyphs[O];
                                    A ? A.texture = r[O].texture : (A = new u.Sprite(r[O].texture), this._glyphs.push(A)), A.position.x = (r[O].position.x + T[r[O].line]) * i, A.position.y = r[O].position.y * i, A.scale.x = A.scale.y = i, A.tint = R, A.parent || this.addChild(A)
                                }
                                for (var I = P; I < this._glyphs.length; ++I) this.removeChild(this._glyphs[I]);
                                if (this._textWidth = p * i, this._textHeight = (n.y + e.lineHeight) * i, 0 !== this.anchor.x || 0 !== this.anchor.y)
                                    for (var C = 0; C < P; C++) this._glyphs[C].x -= this._textWidth * this.anchor.x, this._glyphs[C].y -= this._textHeight * this.anchor.y;
                                this._maxLineHeight = g * i
                            }, t.prototype.updateTransform = function() {
                                this.validate(), this.containerUpdateTransform()
                            }, t.prototype.getLocalBounds = function() {
                                return this.validate(), e.prototype.getLocalBounds.call(this)
                            }, t.prototype.validate = function() {
                                this.dirty && (this.updateText(), this.dirty = !1)
                            }, t.registerFont = function(e, i) {
                                var n = {},
                                    r = e.getElementsByTagName("info")[0],
                                    o = e.getElementsByTagName("common")[0],
                                    a = e.getElementsByTagName("page"),
                                    s = (0, p.getResolutionOfUrl)(a[0].getAttribute("file"), d.default.RESOLUTION),
                                    l = {};
                                n.font = r.getAttribute("face"), n.size = parseInt(r.getAttribute("size"), 10), n.lineHeight = parseInt(o.getAttribute("lineHeight"), 10) / s, n.chars = {}, i instanceof u.Texture && (i = [i]);
                                for (var c = 0; c < a.length; c++) {
                                    var h = a[c].getAttribute("id"),
                                        f = a[c].getAttribute("file");
                                    l[h] = i instanceof Array ? i[c] : i[f]
                                }
                                for (var _ = e.getElementsByTagName("char"), m = 0; m < _.length; m++) {
                                    var g = _[m],
                                        v = parseInt(g.getAttribute("id"), 10),
                                        y = g.getAttribute("page") || 0,
                                        b = new u.Rectangle(parseInt(g.getAttribute("x"), 10) / s + l[y].frame.x / s, parseInt(g.getAttribute("y"), 10) / s + l[y].frame.y / s, parseInt(g.getAttribute("width"), 10) / s, parseInt(g.getAttribute("height"), 10) / s);
                                    n.chars[v] = {
                                        xOffset: parseInt(g.getAttribute("xoffset"), 10) / s,
                                        yOffset: parseInt(g.getAttribute("yoffset"), 10) / s,
                                        xAdvance: parseInt(g.getAttribute("xadvance"), 10) / s,
                                        kerning: {},
                                        texture: new u.Texture(l[y].baseTexture, b),
                                        page: y
                                    }
                                }
                                for (var x = e.getElementsByTagName("kerning"), S = 0; S < x.length; S++) {
                                    var T = x[S],
                                        w = parseInt(T.getAttribute("first"), 10) / s,
                                        E = parseInt(T.getAttribute("second"), 10) / s,
                                        P = parseInt(T.getAttribute("amount"), 10) / s;
                                    n.chars[E] && (n.chars[E].kerning[w] = P)
                                }
                                return t.fonts[n.font] = n, n
                            }, s(t, [{
                                key: "tint",
                                get: function() {
                                    return this._font.tint
                                },
                                set: function(e) {
                                    this._font.tint = "number" == typeof e && e >= 0 ? e : 16777215, this.dirty = !0
                                }
                            }, {
                                key: "align",
                                get: function() {
                                    return this._font.align
                                },
                                set: function(e) {
                                    this._font.align = e || "left", this.dirty = !0
                                }
                            }, {
                                key: "anchor",
                                get: function() {
                                    return this._anchor
                                },
                                set: function(e) {
                                    "number" == typeof e ? this._anchor.set(e) : this._anchor.copy(e)
                                }
                            }, {
                                key: "font",
                                get: function() {
                                    return this._font
                                },
                                set: function(e) {
                                    e && ("string" == typeof e ? (e = e.split(" "), this._font.name = 1 === e.length ? e[0] : e.slice(1).join(" "), this._font.size = e.length >= 2 ? parseInt(e[0], 10) : t.fonts[this._font.name].size) : (this._font.name = e.name, this._font.size = "number" == typeof e.size ? e.size : parseInt(e.size, 10)), this.dirty = !0)
                                }
                            }, {
                                key: "text",
                                get: function() {
                                    return this._text
                                },
                                set: function(e) {
                                    e = e.toString() || " ", this._text !== e && (this._text = e, this.dirty = !0)
                                }
                            }, {
                                key: "maxWidth",
                                get: function() {
                                    return this._maxWidth
                                },
                                set: function(e) {
                                    this._maxWidth !== e && (this._maxWidth = e, this.dirty = !0)
                                }
                            }, {
                                key: "maxLineHeight",
                                get: function() {
                                    return this.validate(), this._maxLineHeight
                                }
                            }, {
                                key: "textWidth",
                                get: function() {
                                    return this.validate(), this._textWidth
                                }
                            }, {
                                key: "letterSpacing",
                                get: function() {
                                    return this._letterSpacing
                                },
                                set: function(e) {
                                    this._letterSpacing !== e && (this._letterSpacing = e, this.dirty = !0)
                                }
                            }, {
                                key: "textHeight",
                                get: function() {
                                    return this.validate(), this._textHeight
                                }
                            }]), t
                        }(u.Container);
                    i.default = _, _.fonts = {}
                }, {
                    "../core": 65,
                    "../core/math/ObservablePoint": 68,
                    "../core/settings": 101,
                    "../core/utils": 125
                }],
                137: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function o(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var a = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        s = e("../core"),
                        l = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(s),
                        u = e("../core/sprites/canvas/CanvasTinter"),
                        c = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(u),
                        h = new l.Point,
                        p = function(e) {
                            function t(i) {
                                var o = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 100,
                                    a = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 100;
                                n(this, t);
                                var s = r(this, e.call(this, i));
                                return s.tileTransform = new l.TransformStatic, s._width = o, s._height = a, s._canvasPattern = null, s.uvTransform = i.transform || new l.TextureMatrix(i), s.pluginName = "tilingSprite", s.uvRespectAnchor = !1, s
                            }
                            return o(t, e), t.prototype._onTextureUpdate = function() {
                                this.uvTransform && (this.uvTransform.texture = this._texture), this.cachedTint = 16777215
                            }, t.prototype._renderWebGL = function(e) {
                                var t = this._texture;
                                t && t.valid && (this.tileTransform.updateLocalTransform(), this.uvTransform.update(), e.setObjectRenderer(e.plugins[this.pluginName]), e.plugins[this.pluginName].render(this))
                            }, t.prototype._renderCanvas = function(e) {
                                var t = this._texture;
                                if (t.baseTexture.hasLoaded) {
                                    var i = e.context,
                                        n = this.worldTransform,
                                        r = e.resolution,
                                        o = 2 === t.rotate,
                                        a = t.baseTexture,
                                        s = a.resolution,
                                        u = this.tilePosition.x / this.tileScale.x % t.orig.width * s,
                                        h = this.tilePosition.y / this.tileScale.y % t.orig.height * s;
                                    if (this._textureID !== this._texture._updateID || this.cachedTint !== this.tint) {
                                        this._textureID = this._texture._updateID;
                                        var p = new l.CanvasRenderTarget(t.orig.width, t.orig.height, s);
                                        if (16777215 !== this.tint) this.tintedTexture = c.default.getTintedTexture(this, this.tint), p.context.drawImage(this.tintedTexture, 0, 0);
                                        else {
                                            var f = t._frame.x * s,
                                                d = t._frame.y * s,
                                                _ = t._frame.width * s,
                                                m = t._frame.height * s,
                                                g = (t.trim ? t.trim.width : t.orig.width) * s,
                                                v = (t.trim ? t.trim.height : t.orig.height) * s,
                                                y = (t.trim ? t.trim.x : 0) * s,
                                                b = (t.trim ? t.trim.y : 0) * s;
                                            o ? (p.context.rotate(-Math.PI / 2), p.context.translate(-v, 0), p.context.drawImage(a.source, f, d, _, m, -b, y, v, g)) : p.context.drawImage(a.source, f, d, _, m, y, b, g, v)
                                        }
                                        this.cachedTint = this.tint, this._canvasPattern = p.context.createPattern(p.canvas, "repeat")
                                    }
                                    i.globalAlpha = this.worldAlpha, i.setTransform(n.a * r, n.b * r, n.c * r, n.d * r, n.tx * r, n.ty * r), e.setBlendMode(this.blendMode), i.fillStyle = this._canvasPattern, i.scale(this.tileScale.x / s, this.tileScale.y / s);
                                    var x = this.anchor.x * -this._width * s,
                                        S = this.anchor.y * -this._height * s;
                                    this.uvRespectAnchor ? (i.translate(u, h), i.fillRect(-u + x, -h + S, this._width / this.tileScale.x * s, this._height / this.tileScale.y * s)) : (i.translate(u + x, h + S), i.fillRect(-u, -h, this._width / this.tileScale.x * s, this._height / this.tileScale.y * s))
                                }
                            }, t.prototype._calculateBounds = function() {
                                var e = this._width * -this._anchor._x,
                                    t = this._height * -this._anchor._y,
                                    i = this._width * (1 - this._anchor._x),
                                    n = this._height * (1 - this._anchor._y);
                                this._bounds.addFrame(this.transform, e, t, i, n)
                            }, t.prototype.getLocalBounds = function(t) {
                                return 0 === this.children.length ? (this._bounds.minX = this._width * -this._anchor._x, this._bounds.minY = this._height * -this._anchor._y, this._bounds.maxX = this._width * (1 - this._anchor._x), this._bounds.maxY = this._height * (1 - this._anchor._y), t || (this._localBoundsRect || (this._localBoundsRect = new l.Rectangle), t = this._localBoundsRect), this._bounds.getRectangle(t)) : e.prototype.getLocalBounds.call(this, t)
                            }, t.prototype.containsPoint = function(e) {
                                this.worldTransform.applyInverse(e, h);
                                var t = this._width,
                                    i = this._height,
                                    n = -t * this.anchor._x;
                                if (h.x >= n && h.x < n + t) {
                                    var r = -i * this.anchor._y;
                                    if (h.y >= r && h.y < r + i) return !0
                                }
                                return !1
                            }, t.prototype.destroy = function(t) {
                                e.prototype.destroy.call(this, t), this.tileTransform = null, this.uvTransform = null
                            }, t.from = function(e, i, n) {
                                return new t(l.Texture.from(e), i, n)
                            }, t.fromFrame = function(e, i, n) {
                                var r = l.utils.TextureCache[e];
                                if (!r) throw new Error('The frameId "' + e + '" does not exist in the texture cache ' + this);
                                return new t(r, i, n)
                            }, t.fromImage = function(e, i, n, r, o) {
                                return new t(l.Texture.fromImage(e, r, o), i, n)
                            }, a(t, [{
                                key: "clampMargin",
                                get: function() {
                                    return this.uvTransform.clampMargin
                                },
                                set: function(e) {
                                    this.uvTransform.clampMargin = e, this.uvTransform.update(!0)
                                }
                            }, {
                                key: "tileScale",
                                get: function() {
                                    return this.tileTransform.scale
                                },
                                set: function(e) {
                                    this.tileTransform.scale.copy(e)
                                }
                            }, {
                                key: "tilePosition",
                                get: function() {
                                    return this.tileTransform.position
                                },
                                set: function(e) {
                                    this.tileTransform.position.copy(e)
                                }
                            }, {
                                key: "width",
                                get: function() {
                                    return this._width
                                },
                                set: function(e) {
                                    this._width = e
                                }
                            }, {
                                key: "height",
                                get: function() {
                                    return this._height
                                },
                                set: function(e) {
                                    this._height = e
                                }
                            }]), t
                        }(l.Sprite);
                    i.default = p
                }, {
                    "../core": 65,
                    "../core/sprites/canvas/CanvasTinter": 104
                }],
                138: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    var o = e("../core"),
                        a = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(o),
                        s = e("../core/textures/Texture"),
                        l = n(s),
                        u = e("../core/textures/BaseTexture"),
                        c = n(u),
                        h = e("../core/utils"),
                        p = a.DisplayObject,
                        f = new a.Matrix;
                    p.prototype._cacheAsBitmap = !1, p.prototype._cacheData = !1;
                    var d = function e() {
                        r(this, e), this.textureCacheId = null, this.originalRenderWebGL = null, this.originalRenderCanvas = null, this.originalCalculateBounds = null, this.originalGetLocalBounds = null, this.originalUpdateTransform = null, this.originalHitTest = null, this.originalDestroy = null, this.originalMask = null, this.originalFilterArea = null, this.sprite = null
                    };
                    Object.defineProperties(p.prototype, {
                        cacheAsBitmap: {
                            get: function() {
                                return this._cacheAsBitmap
                            },
                            set: function(e) {
                                if (this._cacheAsBitmap !== e) {
                                    this._cacheAsBitmap = e;
                                    var t = void 0;
                                    e ? (this._cacheData || (this._cacheData = new d), t = this._cacheData, t.originalRenderWebGL = this.renderWebGL, t.originalRenderCanvas = this.renderCanvas, t.originalUpdateTransform = this.updateTransform, t.originalCalculateBounds = this.calculateBounds, t.originalGetLocalBounds = this.getLocalBounds, t.originalDestroy = this.destroy, t.originalContainsPoint = this.containsPoint, t.originalMask = this._mask, t.originalFilterArea = this.filterArea, this.renderWebGL = this._renderCachedWebGL, this.renderCanvas = this._renderCachedCanvas, this.destroy = this._cacheAsBitmapDestroy) : (t = this._cacheData, t.sprite && this._destroyCachedDisplayObject(), this.renderWebGL = t.originalRenderWebGL, this.renderCanvas = t.originalRenderCanvas, this.calculateBounds = t.originalCalculateBounds, this.getLocalBounds = t.originalGetLocalBounds, this.destroy = t.originalDestroy, this.updateTransform = t.originalUpdateTransform, this.containsPoint = t.originalContainsPoint, this._mask = t.originalMask, this.filterArea = t.originalFilterArea)
                                }
                            }
                        }
                    }), p.prototype._renderCachedWebGL = function(e) {
                        !this.visible || this.worldAlpha <= 0 || !this.renderable || (this._initCachedDisplayObject(e), this._cacheData.sprite.transform._worldID = this.transform._worldID, this._cacheData.sprite.worldAlpha = this.worldAlpha, this._cacheData.sprite._renderWebGL(e))
                    }, p.prototype._initCachedDisplayObject = function(e) {
                        if (!this._cacheData || !this._cacheData.sprite) {
                            var t = this.alpha;
                            this.alpha = 1, e.currentRenderer.flush();
                            var i = this.getLocalBounds().clone();
                            if (this._filters && this._filters.length) {
                                var n = this._filters[0].padding;
                                i.pad(n)
                            }
                            i.ceil(a.settings.RESOLUTION);
                            var r = e._activeRenderTarget,
                                o = e.filterManager.filterStack,
                                s = a.RenderTexture.create(i.width, i.height),
                                u = "cacheAsBitmap_" + (0, h.uid)();
                            this._cacheData.textureCacheId = u, c.default.addToCache(s.baseTexture, u), l.default.addToCache(s, u);
                            var p = f;
                            p.tx = -i.x, p.ty = -i.y, this.transform.worldTransform.identity(), this.renderWebGL = this._cacheData.originalRenderWebGL, e.render(this, s, !0, p, !0), e.bindRenderTarget(r), e.filterManager.filterStack = o, this.renderWebGL = this._renderCachedWebGL, this.updateTransform = this.displayObjectUpdateTransform, this.calculateBounds = this._calculateCachedBounds, this.getLocalBounds = this._getCachedLocalBounds, this._mask = null, this.filterArea = null;
                            var d = new a.Sprite(s);
                            d.transform.worldTransform = this.transform.worldTransform, d.anchor.x = -i.x / i.width, d.anchor.y = -i.y / i.height, d.alpha = t, d._bounds = this._bounds, this._cacheData.sprite = d, this.transform._parentID = -1, this.parent ? this.updateTransform() : (this.parent = e._tempDisplayObjectParent, this.updateTransform(), this.parent = null), this.containsPoint = d.containsPoint.bind(d)
                        }
                    }, p.prototype._renderCachedCanvas = function(e) {
                        !this.visible || this.worldAlpha <= 0 || !this.renderable || (this._initCachedDisplayObjectCanvas(e), this._cacheData.sprite.worldAlpha = this.worldAlpha, this._cacheData.sprite._renderCanvas(e))
                    }, p.prototype._initCachedDisplayObjectCanvas = function(e) {
                        if (!this._cacheData || !this._cacheData.sprite) {
                            var t = this.getLocalBounds(),
                                i = this.alpha;
                            this.alpha = 1;
                            var n = e.context;
                            t.ceil(a.settings.RESOLUTION);
                            var r = a.RenderTexture.create(t.width, t.height),
                                o = "cacheAsBitmap_" + (0, h.uid)();
                            this._cacheData.textureCacheId = o, c.default.addToCache(r.baseTexture, o), l.default.addToCache(r, o);
                            var s = f;
                            this.transform.localTransform.copy(s), s.invert(), s.tx -= t.x, s.ty -= t.y, this.renderCanvas = this._cacheData.originalRenderCanvas, e.render(this, r, !0, s, !1), e.context = n, this.renderCanvas = this._renderCachedCanvas, this.updateTransform = this.displayObjectUpdateTransform, this.calculateBounds = this._calculateCachedBounds, this.getLocalBounds = this._getCachedLocalBounds, this._mask = null, this.filterArea = null;
                            var u = new a.Sprite(r);
                            u.transform.worldTransform = this.transform.worldTransform, u.anchor.x = -t.x / t.width, u.anchor.y = -t.y / t.height, u.alpha = i, u._bounds = this._bounds, this._cacheData.sprite = u, this.transform._parentID = -1, this.parent ? this.updateTransform() : (this.parent = e._tempDisplayObjectParent, this.updateTransform(), this.parent = null), this.containsPoint = u.containsPoint.bind(u)
                        }
                    }, p.prototype._calculateCachedBounds = function() {
                        this._bounds.clear(), this._cacheData.sprite.transform._worldID = this.transform._worldID, this._cacheData.sprite._calculateBounds(), this._lastBoundsID = this._boundsID
                    }, p.prototype._getCachedLocalBounds = function() {
                        return this._cacheData.sprite.getLocalBounds()
                    }, p.prototype._destroyCachedDisplayObject = function() {
                        this._cacheData.sprite._texture.destroy(!0), this._cacheData.sprite = null, c.default.removeFromCache(this._cacheData.textureCacheId), l.default.removeFromCache(this._cacheData.textureCacheId), this._cacheData.textureCacheId = null
                    }, p.prototype._cacheAsBitmapDestroy = function(e) {
                        this.cacheAsBitmap = !1, this.destroy(e)
                    }
                }, {
                    "../core": 65,
                    "../core/textures/BaseTexture": 112,
                    "../core/textures/Texture": 115,
                    "../core/utils": 125
                }],
                139: [function(e, t, i) {
                    "use strict";
                    var n = e("../core"),
                        r = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(n);
                    r.DisplayObject.prototype.name = null, r.Container.prototype.getChildByName = function(e) {
                        for (var t = 0; t < this.children.length; t++)
                            if (this.children[t].name === e) return this.children[t];
                        return null
                    }
                }, {
                    "../core": 65
                }],
                140: [function(e, t, i) {
                    "use strict";
                    var n = e("../core"),
                        r = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(n);
                    r.DisplayObject.prototype.getGlobalPosition = function() {
                        var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new r.Point,
                            t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
                        return this.parent ? this.parent.toGlobal(this.position, e, t) : (e.x = this.position.x, e.y = this.position.y), e
                    }
                }, {
                    "../core": 65
                }],
                141: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }
                    i.__esModule = !0, i.BitmapText = i.TilingSpriteRenderer = i.TilingSprite = i.AnimatedSprite = void 0;
                    var r = e("./AnimatedSprite");
                    Object.defineProperty(i, "AnimatedSprite", {
                        enumerable: !0,
                        get: function() {
                            return n(r).default
                        }
                    });
                    var o = e("./TilingSprite");
                    Object.defineProperty(i, "TilingSprite", {
                        enumerable: !0,
                        get: function() {
                            return n(o).default
                        }
                    });
                    var a = e("./webgl/TilingSpriteRenderer");
                    Object.defineProperty(i, "TilingSpriteRenderer", {
                        enumerable: !0,
                        get: function() {
                            return n(a).default
                        }
                    });
                    var s = e("./BitmapText");
                    Object.defineProperty(i, "BitmapText", {
                        enumerable: !0,
                        get: function() {
                            return n(s).default
                        }
                    }), e("./cacheAsBitmap"), e("./getChildByName"), e("./getGlobalPosition")
                }, {
                    "./AnimatedSprite": 135,
                    "./BitmapText": 136,
                    "./TilingSprite": 137,
                    "./cacheAsBitmap": 138,
                    "./getChildByName": 139,
                    "./getGlobalPosition": 140,
                    "./webgl/TilingSpriteRenderer": 142
                }],
                142: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function o(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var a = e("../../core"),
                        s = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(a),
                        l = e("../../core/const"),
                        u = (e("path"), new s.Matrix),
                        c = function(e) {
                            function t(i) {
                                n(this, t);
                                var o = r(this, e.call(this, i));
                                return o.shader = null, o.simpleShader = null, o.quad = null, o
                            }
                            return o(t, e), t.prototype.onContextChange = function() {
                                var e = this.renderer.gl;
                                this.shader = new s.Shader(e, "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n    gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n    vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\n}\n", "varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\nuniform mat3 uMapCoord;\nuniform vec4 uClampFrame;\nuniform vec2 uClampOffset;\n\nvoid main(void)\n{\n    vec2 coord = mod(vTextureCoord - uClampOffset, vec2(1.0, 1.0)) + uClampOffset;\n    coord = (uMapCoord * vec3(coord, 1.0)).xy;\n    coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\n\n    vec4 sample = texture2D(uSampler, coord);\n    gl_FragColor = sample * uColor;\n}\n"), this.simpleShader = new s.Shader(e, "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n    gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n    vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\n}\n", "varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\n\nvoid main(void)\n{\n    vec4 sample = texture2D(uSampler, vTextureCoord);\n    gl_FragColor = sample * uColor;\n}\n"), this.renderer.bindVao(null), this.quad = new s.Quad(e, this.renderer.state.attribState), this.quad.initVao(this.shader)
                            }, t.prototype.render = function(e) {
                                var t = this.renderer,
                                    i = this.quad;
                                t.bindVao(i.vao);
                                var n = i.vertices;
                                n[0] = n[6] = e._width * -e.anchor.x, n[1] = n[3] = e._height * -e.anchor.y, n[2] = n[4] = e._width * (1 - e.anchor.x), n[5] = n[7] = e._height * (1 - e.anchor.y), e.uvRespectAnchor && (n = i.uvs, n[0] = n[6] = -e.anchor.x, n[1] = n[3] = -e.anchor.y, n[2] = n[4] = 1 - e.anchor.x, n[5] = n[7] = 1 - e.anchor.y), i.upload();
                                var r = e._texture,
                                    o = r.baseTexture,
                                    a = e.tileTransform.localTransform,
                                    c = e.uvTransform,
                                    h = o.isPowerOfTwo && r.frame.width === o.width && r.frame.height === o.height;
                                h && (o._glTextures[t.CONTEXT_UID] ? h = o.wrapMode !== l.WRAP_MODES.CLAMP : o.wrapMode === l.WRAP_MODES.CLAMP && (o.wrapMode = l.WRAP_MODES.REPEAT));
                                var p = h ? this.simpleShader : this.shader;
                                t.bindShader(p);
                                var f = r.width,
                                    d = r.height,
                                    _ = e._width,
                                    m = e._height;
                                u.set(a.a * f / _, a.b * f / m, a.c * d / _, a.d * d / m, a.tx / _, a.ty / m), u.invert(), h ? u.prepend(c.mapCoord) : (p.uniforms.uMapCoord = c.mapCoord.toArray(!0), p.uniforms.uClampFrame = c.uClampFrame, p.uniforms.uClampOffset = c.uClampOffset), p.uniforms.uTransform = u.toArray(!0), p.uniforms.uColor = s.utils.premultiplyTintToRgba(e.tint, e.worldAlpha, p.uniforms.uColor, o.premultipliedAlpha), p.uniforms.translationMatrix = e.transform.worldTransform.toArray(!0), p.uniforms.uSampler = t.bindTexture(r), t.setBlendMode(s.utils.correctBlendMode(e.blendMode, o.premultipliedAlpha)), i.vao.draw(this.renderer.gl.TRIANGLES, 6, 0)
                            }, t
                        }(s.ObjectRenderer);
                    i.default = c, s.WebGLRenderer.registerPlugin("tilingSprite", c)
                }, {
                    "../../core": 65,
                    "../../core/const": 46,
                    path: 8
                }],
                143: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function o(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var a = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        s = e("../../core"),
                        l = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(s),
                        u = (e("path"), function(e) {
                            function t() {
                                var i = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1;
                                n(this, t);
                                var o = r(this, e.call(this, "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n    gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n    vTextureCoord = aTextureCoord;\n}", "varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float uAlpha;\n\nvoid main(void)\n{\n   gl_FragColor = texture2D(uSampler, vTextureCoord) * uAlpha;\n}\n"));
                                return o.alpha = i, o.glShaderKey = "alpha", o
                            }
                            return o(t, e), a(t, [{
                                key: "alpha",
                                get: function() {
                                    return this.uniforms.uAlpha
                                },
                                set: function(e) {
                                    this.uniforms.uAlpha = e
                                }
                            }]), t
                        }(l.Filter));
                    i.default = u
                }, {
                    "../../core": 65,
                    path: 8
                }],
                144: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function a(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var s = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        l = e("../../core"),
                        u = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(l),
                        c = e("./BlurXFilter"),
                        h = n(c),
                        p = e("./BlurYFilter"),
                        f = n(p),
                        d = function(e) {
                            function t(i, n, a, s) {
                                r(this, t);
                                var l = o(this, e.call(this));
                                return l.blurXFilter = new h.default(i, n, a, s), l.blurYFilter = new f.default(i, n, a, s), l.padding = 0, l.resolution = a || u.settings.RESOLUTION, l.quality = n || 4, l.blur = i || 8, l
                            }
                            return a(t, e), t.prototype.apply = function(e, t, i) {
                                var n = e.getRenderTarget(!0);
                                this.blurXFilter.apply(e, t, n, !0), this.blurYFilter.apply(e, n, i, !1), e.returnRenderTarget(n)
                            }, s(t, [{
                                key: "blur",
                                get: function() {
                                    return this.blurXFilter.blur
                                },
                                set: function(e) {
                                    this.blurXFilter.blur = this.blurYFilter.blur = e, this.padding = 2 * Math.max(Math.abs(this.blurXFilter.strength), Math.abs(this.blurYFilter.strength))
                                }
                            }, {
                                key: "quality",
                                get: function() {
                                    return this.blurXFilter.quality
                                },
                                set: function(e) {
                                    this.blurXFilter.quality = this.blurYFilter.quality = e
                                }
                            }, {
                                key: "blurX",
                                get: function() {
                                    return this.blurXFilter.blur
                                },
                                set: function(e) {
                                    this.blurXFilter.blur = e, this.padding = 2 * Math.max(Math.abs(this.blurXFilter.strength), Math.abs(this.blurYFilter.strength))
                                }
                            }, {
                                key: "blurY",
                                get: function() {
                                    return this.blurYFilter.blur
                                },
                                set: function(e) {
                                    this.blurYFilter.blur = e, this.padding = 2 * Math.max(Math.abs(this.blurXFilter.strength), Math.abs(this.blurYFilter.strength))
                                }
                            }, {
                                key: "blendMode",
                                get: function() {
                                    return this.blurYFilter._blendMode
                                },
                                set: function(e) {
                                    this.blurYFilter._blendMode = e
                                }
                            }]), t
                        }(u.Filter);
                    i.default = d
                }, {
                    "../../core": 65,
                    "./BlurXFilter": 145,
                    "./BlurYFilter": 146
                }],
                145: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function a(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var s = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        l = e("../../core"),
                        u = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(l),
                        c = e("./generateBlurVertSource"),
                        h = n(c),
                        p = e("./generateBlurFragSource"),
                        f = n(p),
                        d = e("./getMaxBlurKernelSize"),
                        _ = n(d),
                        m = function(e) {
                            function t(i, n, a, s) {
                                r(this, t), s = s || 5;
                                var l = (0, h.default)(s, !0),
                                    c = (0, f.default)(s),
                                    p = o(this, e.call(this, l, c));
                                return p.resolution = a || u.settings.RESOLUTION, p._quality = 0, p.quality = n || 4, p.strength = i || 8, p.firstRun = !0, p
                            }
                            return a(t, e), t.prototype.apply = function(e, t, i, n) {
                                if (this.firstRun) {
                                    var r = e.renderer.gl,
                                        o = (0, _.default)(r);
                                    this.vertexSrc = (0, h.default)(o, !0), this.fragmentSrc = (0, f.default)(o), this.firstRun = !1
                                }
                                if (this.uniforms.strength = 1 / i.size.width * (i.size.width / t.size.width), this.uniforms.strength *= this.strength, this.uniforms.strength /= this.passes, 1 === this.passes) e.applyFilter(this, t, i, n);
                                else {
                                    for (var a = e.getRenderTarget(!0), s = t, l = a, u = 0; u < this.passes - 1; u++) {
                                        e.applyFilter(this, s, l, !0);
                                        var c = l;
                                        l = s, s = c
                                    }
                                    e.applyFilter(this, s, i, n), e.returnRenderTarget(a)
                                }
                            }, s(t, [{
                                key: "blur",
                                get: function() {
                                    return this.strength
                                },
                                set: function(e) {
                                    this.padding = 2 * Math.abs(e), this.strength = e
                                }
                            }, {
                                key: "quality",
                                get: function() {
                                    return this._quality
                                },
                                set: function(e) {
                                    this._quality = e, this.passes = e
                                }
                            }]), t
                        }(u.Filter);
                    i.default = m
                }, {
                    "../../core": 65,
                    "./generateBlurFragSource": 147,
                    "./generateBlurVertSource": 148,
                    "./getMaxBlurKernelSize": 149
                }],
                146: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function a(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var s = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        l = e("../../core"),
                        u = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(l),
                        c = e("./generateBlurVertSource"),
                        h = n(c),
                        p = e("./generateBlurFragSource"),
                        f = n(p),
                        d = e("./getMaxBlurKernelSize"),
                        _ = n(d),
                        m = function(e) {
                            function t(i, n, a, s) {
                                r(this, t), s = s || 5;
                                var l = (0, h.default)(s, !1),
                                    c = (0, f.default)(s),
                                    p = o(this, e.call(this, l, c));
                                return p.resolution = a || u.settings.RESOLUTION, p._quality = 0, p.quality = n || 4, p.strength = i || 8, p.firstRun = !0, p
                            }
                            return a(t, e), t.prototype.apply = function(e, t, i, n) {
                                if (this.firstRun) {
                                    var r = e.renderer.gl,
                                        o = (0, _.default)(r);
                                    this.vertexSrc = (0, h.default)(o, !1), this.fragmentSrc = (0, f.default)(o), this.firstRun = !1
                                }
                                if (this.uniforms.strength = 1 / i.size.height * (i.size.height / t.size.height), this.uniforms.strength *= this.strength, this.uniforms.strength /= this.passes, 1 === this.passes) e.applyFilter(this, t, i, n);
                                else {
                                    for (var a = e.getRenderTarget(!0), s = t, l = a, u = 0; u < this.passes - 1; u++) {
                                        e.applyFilter(this, s, l, !0);
                                        var c = l;
                                        l = s, s = c
                                    }
                                    e.applyFilter(this, s, i, n), e.returnRenderTarget(a)
                                }
                            }, s(t, [{
                                key: "blur",
                                get: function() {
                                    return this.strength
                                },
                                set: function(e) {
                                    this.padding = 2 * Math.abs(e), this.strength = e
                                }
                            }, {
                                key: "quality",
                                get: function() {
                                    return this._quality
                                },
                                set: function(e) {
                                    this._quality = e, this.passes = e
                                }
                            }]), t
                        }(u.Filter);
                    i.default = m
                }, {
                    "../../core": 65,
                    "./generateBlurFragSource": 147,
                    "./generateBlurVertSource": 148,
                    "./getMaxBlurKernelSize": 149
                }],
                147: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        for (var t = r[e], i = t.length, n = o, a = "", s = "gl_FragColor += texture2D(uSampler, vBlurTexCoords[%index%]) * %value%;", l = void 0, u = 0; u < e; u++) {
                            var c = s.replace("%index%", u);
                            l = u, u >= i && (l = e - u - 1), c = c.replace("%value%", t[l]), a += c, a += "\n"
                        }
                        return n = n.replace("%blur%", a), n = n.replace("%size%", e)
                    }
                    i.__esModule = !0, i.default = n;
                    var r = {
                            5: [.153388, .221461, .250301],
                            7: [.071303, .131514, .189879, .214607],
                            9: [.028532, .067234, .124009, .179044, .20236],
                            11: [.0093, .028002, .065984, .121703, .175713, .198596],
                            13: [.002406, .009255, .027867, .065666, .121117, .174868, .197641],
                            15: [489e-6, .002403, .009246, .02784, .065602, .120999, .174697, .197448]
                        },
                        o = ["varying vec2 vBlurTexCoords[%size%];", "uniform sampler2D uSampler;", "void main(void)", "{", "    gl_FragColor = vec4(0.0);", "    %blur%", "}"].join("\n")
                }, {}],
                148: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        var i = Math.ceil(e / 2),
                            n = r,
                            o = "",
                            a = void 0;
                        a = t ? "vBlurTexCoords[%index%] = aTextureCoord + vec2(%sampleIndex% * strength, 0.0);" : "vBlurTexCoords[%index%] = aTextureCoord + vec2(0.0, %sampleIndex% * strength);";
                        for (var s = 0; s < e; s++) {
                            var l = a.replace("%index%", s);
                            l = l.replace("%sampleIndex%", s - (i - 1) + ".0"), o += l, o += "\n"
                        }
                        return n = n.replace("%blur%", o), n = n.replace("%size%", e)
                    }
                    i.__esModule = !0, i.default = n;
                    var r = ["attribute vec2 aVertexPosition;", "attribute vec2 aTextureCoord;", "uniform float strength;", "uniform mat3 projectionMatrix;", "varying vec2 vBlurTexCoords[%size%];", "void main(void)", "{", "gl_Position = vec4((projectionMatrix * vec3((aVertexPosition), 1.0)).xy, 0.0, 1.0);", "%blur%", "}"].join("\n")
                }, {}],
                149: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        for (var t = e.getParameter(e.MAX_VARYING_VECTORS), i = 15; i > t;) i -= 2;
                        return i
                    }
                    i.__esModule = !0, i.default = n
                }, {}],
                150: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function o(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var a = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        s = e("../../core"),
                        l = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(s),
                        u = (e("path"), function(e) {
                            function t() {
                                n(this, t);
                                var i = r(this, e.call(this, "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n    gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n    vTextureCoord = aTextureCoord;\n}", "varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform float m[20];\nuniform float uAlpha;\n\nvoid main(void)\n{\n    vec4 c = texture2D(uSampler, vTextureCoord);\n\n    if (uAlpha == 0.0) {\n        gl_FragColor = c;\n        return;\n    }\n\n    // Un-premultiply alpha before applying the color matrix. See issue #3539.\n    if (c.a > 0.0) {\n      c.rgb /= c.a;\n    }\n\n    vec4 result;\n\n    result.r = (m[0] * c.r);\n        result.r += (m[1] * c.g);\n        result.r += (m[2] * c.b);\n        result.r += (m[3] * c.a);\n        result.r += m[4];\n\n    result.g = (m[5] * c.r);\n        result.g += (m[6] * c.g);\n        result.g += (m[7] * c.b);\n        result.g += (m[8] * c.a);\n        result.g += m[9];\n\n    result.b = (m[10] * c.r);\n       result.b += (m[11] * c.g);\n       result.b += (m[12] * c.b);\n       result.b += (m[13] * c.a);\n       result.b += m[14];\n\n    result.a = (m[15] * c.r);\n       result.a += (m[16] * c.g);\n       result.a += (m[17] * c.b);\n       result.a += (m[18] * c.a);\n       result.a += m[19];\n\n    vec3 rgb = mix(c.rgb, result.rgb, uAlpha);\n\n    // Premultiply alpha again.\n    rgb *= result.a;\n\n    gl_FragColor = vec4(rgb, result.a);\n}\n"));
                                return i.uniforms.m = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0], i.alpha = 1, i
                            }
                            return o(t, e), t.prototype._loadMatrix = function(e) {
                                var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
                                    i = e;
                                t && (this._multiply(i, this.uniforms.m, e), i = this._colorMatrix(i)), this.uniforms.m = i
                            }, t.prototype._multiply = function(e, t, i) {
                                return e[0] = t[0] * i[0] + t[1] * i[5] + t[2] * i[10] + t[3] * i[15], e[1] = t[0] * i[1] + t[1] * i[6] + t[2] * i[11] + t[3] * i[16], e[2] = t[0] * i[2] + t[1] * i[7] + t[2] * i[12] + t[3] * i[17], e[3] = t[0] * i[3] + t[1] * i[8] + t[2] * i[13] + t[3] * i[18], e[4] = t[0] * i[4] + t[1] * i[9] + t[2] * i[14] + t[3] * i[19] + t[4], e[5] = t[5] * i[0] + t[6] * i[5] + t[7] * i[10] + t[8] * i[15], e[6] = t[5] * i[1] + t[6] * i[6] + t[7] * i[11] + t[8] * i[16], e[7] = t[5] * i[2] + t[6] * i[7] + t[7] * i[12] + t[8] * i[17], e[8] = t[5] * i[3] + t[6] * i[8] + t[7] * i[13] + t[8] * i[18], e[9] = t[5] * i[4] + t[6] * i[9] + t[7] * i[14] + t[8] * i[19] + t[9], e[10] = t[10] * i[0] + t[11] * i[5] + t[12] * i[10] + t[13] * i[15], e[11] = t[10] * i[1] + t[11] * i[6] + t[12] * i[11] + t[13] * i[16], e[12] = t[10] * i[2] + t[11] * i[7] + t[12] * i[12] + t[13] * i[17], e[13] = t[10] * i[3] + t[11] * i[8] + t[12] * i[13] + t[13] * i[18], e[14] = t[10] * i[4] + t[11] * i[9] + t[12] * i[14] + t[13] * i[19] + t[14], e[15] = t[15] * i[0] + t[16] * i[5] + t[17] * i[10] + t[18] * i[15], e[16] = t[15] * i[1] + t[16] * i[6] + t[17] * i[11] + t[18] * i[16], e[17] = t[15] * i[2] + t[16] * i[7] + t[17] * i[12] + t[18] * i[17], e[18] = t[15] * i[3] + t[16] * i[8] + t[17] * i[13] + t[18] * i[18], e[19] = t[15] * i[4] + t[16] * i[9] + t[17] * i[14] + t[18] * i[19] + t[19], e
                            }, t.prototype._colorMatrix = function(e) {
                                var t = new Float32Array(e);
                                return t[4] /= 255, t[9] /= 255, t[14] /= 255, t[19] /= 255, t
                            }, t.prototype.brightness = function(e, t) {
                                var i = [e, 0, 0, 0, 0, 0, e, 0, 0, 0, 0, 0, e, 0, 0, 0, 0, 0, 1, 0];
                                this._loadMatrix(i, t)
                            }, t.prototype.greyscale = function(e, t) {
                                var i = [e, e, e, 0, 0, e, e, e, 0, 0, e, e, e, 0, 0, 0, 0, 0, 1, 0];
                                this._loadMatrix(i, t)
                            }, t.prototype.blackAndWhite = function(e) {
                                var t = [.3, .6, .1, 0, 0, .3, .6, .1, 0, 0, .3, .6, .1, 0, 0, 0, 0, 0, 1, 0];
                                this._loadMatrix(t, e)
                            }, t.prototype.hue = function(e, t) {
                                e = (e || 0) / 180 * Math.PI;
                                var i = Math.cos(e),
                                    n = Math.sin(e),
                                    r = Math.sqrt,
                                    o = 1 / 3,
                                    a = r(o),
                                    s = i + (1 - i) * o,
                                    l = o * (1 - i) - a * n,
                                    u = o * (1 - i) + a * n,
                                    c = o * (1 - i) + a * n,
                                    h = i + o * (1 - i),
                                    p = o * (1 - i) - a * n,
                                    f = o * (1 - i) - a * n,
                                    d = o * (1 - i) + a * n,
                                    _ = i + o * (1 - i),
                                    m = [s, l, u, 0, 0, c, h, p, 0, 0, f, d, _, 0, 0, 0, 0, 0, 1, 0];
                                this._loadMatrix(m, t)
                            }, t.prototype.contrast = function(e, t) {
                                var i = (e || 0) + 1,
                                    n = -.5 * (i - 1),
                                    r = [i, 0, 0, 0, n, 0, i, 0, 0, n, 0, 0, i, 0, n, 0, 0, 0, 1, 0];
                                this._loadMatrix(r, t)
                            }, t.prototype.saturate = function() {
                                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,
                                    t = arguments[1],
                                    i = 2 * e / 3 + 1,
                                    n = -.5 * (i - 1),
                                    r = [i, n, n, 0, 0, n, i, n, 0, 0, n, n, i, 0, 0, 0, 0, 0, 1, 0];
                                this._loadMatrix(r, t)
                            }, t.prototype.desaturate = function() {
                                this.saturate(-1)
                            }, t.prototype.negative = function(e) {
                                var t = [-1, 0, 0, 1, 0, 0, -1, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 1, 0];
                                this._loadMatrix(t, e)
                            }, t.prototype.sepia = function(e) {
                                var t = [.393, .7689999, .18899999, 0, 0, .349, .6859999, .16799999, 0, 0, .272, .5339999, .13099999, 0, 0, 0, 0, 0, 1, 0];
                                this._loadMatrix(t, e)
                            }, t.prototype.technicolor = function(e) {
                                var t = [1.9125277891456083, -.8545344976951645, -.09155508482755585, 0, 11.793603434377337, -.3087833385928097, 1.7658908555458428, -.10601743074722245, 0, -70.35205161461398, -.231103377548616, -.7501899197440212, 1.847597816108189, 0, 30.950940869491138, 0, 0, 0, 1, 0];
                                this._loadMatrix(t, e)
                            }, t.prototype.polaroid = function(e) {
                                var t = [1.438, -.062, -.062, 0, 0, -.122, 1.378, -.122, 0, 0, -.016, -.016, 1.483, 0, 0, 0, 0, 0, 1, 0];
                                this._loadMatrix(t, e)
                            }, t.prototype.toBGR = function(e) {
                                var t = [0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0];
                                this._loadMatrix(t, e)
                            }, t.prototype.kodachrome = function(e) {
                                var t = [1.1285582396593525, -.3967382283601348, -.03992559172921793, 0, 63.72958762196502, -.16404339962244616, 1.0835251566291304, -.05498805115633132, 0, 24.732407896706203, -.16786010706155763, -.5603416277695248, 1.6014850761964943, 0, 35.62982807460946, 0, 0, 0, 1, 0];
                                this._loadMatrix(t, e)
                            }, t.prototype.browni = function(e) {
                                var t = [.5997023498159715, .34553243048391263, -.2708298674538042, 0, 47.43192855600873, -.037703249837783157, .8609577587992641, .15059552388459913, 0, -36.96841498319127, .24113635128153335, -.07441037908422492, .44972182064877153, 0, -7.562075277591283, 0, 0, 0, 1, 0];
                                this._loadMatrix(t, e)
                            }, t.prototype.vintage = function(e) {
                                var t = [.6279345635605994, .3202183420819367, -.03965408211312453, 0, 9.651285835294123, .02578397704808868, .6441188644374771, .03259127616149294, 0, 7.462829176470591, .0466055556782719, -.0851232987247891, .5241648018700465, 0, 5.159190588235296, 0, 0, 0, 1, 0];
                                this._loadMatrix(t, e)
                            }, t.prototype.colorTone = function(e, t, i, n, r) {
                                e = e || .2, t = t || .15, i = i || 16770432, n = n || 3375104;
                                var o = (i >> 16 & 255) / 255,
                                    a = (i >> 8 & 255) / 255,
                                    s = (255 & i) / 255,
                                    l = (n >> 16 & 255) / 255,
                                    u = (n >> 8 & 255) / 255,
                                    c = (255 & n) / 255,
                                    h = [.3, .59, .11, 0, 0, o, a, s, e, 0, l, u, c, t, 0, o - l, a - u, s - c, 0, 0];
                                this._loadMatrix(h, r)
                            }, t.prototype.night = function(e, t) {
                                e = e || .1;
                                var i = [-2 * e, -e, 0, 0, 0, -e, 0, e, 0, 0, 0, e, 2 * e, 0, 0, 0, 0, 0, 1, 0];
                                this._loadMatrix(i, t)
                            }, t.prototype.predator = function(e, t) {
                                var i = [11.224130630493164 * e, -4.794486999511719 * e, -2.8746118545532227 * e, 0 * e, .40342438220977783 * e, -3.6330697536468506 * e, 9.193157196044922 * e, -2.951810836791992 * e, 0 * e, -1.316135048866272 * e, -3.2184197902679443 * e, -4.2375030517578125 * e, 7.476448059082031 * e, 0 * e, .8044459223747253 * e, 0, 0, 0, 1, 0];
                                this._loadMatrix(i, t)
                            }, t.prototype.lsd = function(e) {
                                var t = [2, -.4, .5, 0, 0, -.5, 2, -.4, 0, 0, -.4, -.5, 3, 0, 0, 0, 0, 0, 1, 0];
                                this._loadMatrix(t, e)
                            }, t.prototype.reset = function() {
                                var e = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0];
                                this._loadMatrix(e, !1)
                            }, a(t, [{
                                key: "matrix",
                                get: function() {
                                    return this.uniforms.m
                                },
                                set: function(e) {
                                    this.uniforms.m = e
                                }
                            }, {
                                key: "alpha",
                                get: function() {
                                    return this.uniforms.uAlpha
                                },
                                set: function(e) {
                                    this.uniforms.uAlpha = e
                                }
                            }]), t
                        }(l.Filter));
                    i.default = u, u.prototype.grayscale = u.prototype.greyscale
                }, {
                    "../../core": 65,
                    path: 8
                }],
                151: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function o(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var a = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        s = e("../../core"),
                        l = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(s),
                        u = (e("path"), function(e) {
                            function t(i, o) {
                                n(this, t);
                                var a = new l.Matrix;
                                i.renderable = !1;
                                var s = r(this, e.call(this, "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 filterMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec2 vFilterCoord;\n\nvoid main(void)\n{\n   gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n   vFilterCoord = ( filterMatrix * vec3( aTextureCoord, 1.0)  ).xy;\n   vTextureCoord = aTextureCoord;\n}", "varying vec2 vFilterCoord;\nvarying vec2 vTextureCoord;\n\nuniform vec2 scale;\n\nuniform sampler2D uSampler;\nuniform sampler2D mapSampler;\n\nuniform vec4 filterArea;\nuniform vec4 filterClamp;\n\nvoid main(void)\n{\n  vec4 map =  texture2D(mapSampler, vFilterCoord);\n\n  map -= 0.5;\n  map.xy *= scale / filterArea.xy;\n\n  gl_FragColor = texture2D(uSampler, clamp(vec2(vTextureCoord.x + map.x, vTextureCoord.y + map.y), filterClamp.xy, filterClamp.zw));\n}\n"));
                                return s.maskSprite = i, s.maskMatrix = a, s.uniforms.mapSampler = i._texture, s.uniforms.filterMatrix = a, s.uniforms.scale = {
                                    x: 1,
                                    y: 1
                                }, null !== o && void 0 !== o || (o = 20), s.scale = new l.Point(o, o), s
                            }
                            return o(t, e), t.prototype.apply = function(e, t, i) {
                                this.uniforms.filterMatrix = e.calculateSpriteMatrix(this.maskMatrix, this.maskSprite), this.uniforms.scale.x = this.scale.x, this.uniforms.scale.y = this.scale.y, e.applyFilter(this, t, i)
                            }, a(t, [{
                                key: "map",
                                get: function() {
                                    return this.uniforms.mapSampler
                                },
                                set: function(e) {
                                    this.uniforms.mapSampler = e
                                }
                            }]), t
                        }(l.Filter));
                    i.default = u
                }, {
                    "../../core": 65,
                    path: 8
                }],
                152: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function o(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var a = e("../../core"),
                        s = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(a),
                        l = (e("path"), function(e) {
                            function t() {
                                return n(this, t), r(this, e.call(this, "\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 v_rgbNW;\nvarying vec2 v_rgbNE;\nvarying vec2 v_rgbSW;\nvarying vec2 v_rgbSE;\nvarying vec2 v_rgbM;\n\nuniform vec4 filterArea;\n\nvarying vec2 vTextureCoord;\n\nvec2 mapCoord( vec2 coord )\n{\n    coord *= filterArea.xy;\n    coord += filterArea.zw;\n\n    return coord;\n}\n\nvec2 unmapCoord( vec2 coord )\n{\n    coord -= filterArea.zw;\n    coord /= filterArea.xy;\n\n    return coord;\n}\n\nvoid texcoords(vec2 fragCoord, vec2 resolution,\n               out vec2 v_rgbNW, out vec2 v_rgbNE,\n               out vec2 v_rgbSW, out vec2 v_rgbSE,\n               out vec2 v_rgbM) {\n    vec2 inverseVP = 1.0 / resolution.xy;\n    v_rgbNW = (fragCoord + vec2(-1.0, -1.0)) * inverseVP;\n    v_rgbNE = (fragCoord + vec2(1.0, -1.0)) * inverseVP;\n    v_rgbSW = (fragCoord + vec2(-1.0, 1.0)) * inverseVP;\n    v_rgbSE = (fragCoord + vec2(1.0, 1.0)) * inverseVP;\n    v_rgbM = vec2(fragCoord * inverseVP);\n}\n\nvoid main(void) {\n\n   gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n   vTextureCoord = aTextureCoord;\n\n   vec2 fragCoord = vTextureCoord * filterArea.xy;\n\n   texcoords(fragCoord, filterArea.xy, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\n}", 'varying vec2 v_rgbNW;\nvarying vec2 v_rgbNE;\nvarying vec2 v_rgbSW;\nvarying vec2 v_rgbSE;\nvarying vec2 v_rgbM;\n\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec4 filterArea;\n\n/**\n Basic FXAA implementation based on the code on geeks3d.com with the\n modification that the texture2DLod stuff was removed since it\'s\n unsupported by WebGL.\n \n --\n \n From:\n https://github.com/mitsuhiko/webgl-meincraft\n \n Copyright (c) 2011 by Armin Ronacher.\n \n Some rights reserved.\n \n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are\n met:\n \n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n \n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials provided\n with the distribution.\n \n * The names of the contributors may not be used to endorse or\n promote products derived from this software without specific\n prior written permission.\n \n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n#ifndef FXAA_REDUCE_MIN\n#define FXAA_REDUCE_MIN   (1.0/ 128.0)\n#endif\n#ifndef FXAA_REDUCE_MUL\n#define FXAA_REDUCE_MUL   (1.0 / 8.0)\n#endif\n#ifndef FXAA_SPAN_MAX\n#define FXAA_SPAN_MAX     8.0\n#endif\n\n//optimized version for mobile, where dependent\n//texture reads can be a bottleneck\nvec4 fxaa(sampler2D tex, vec2 fragCoord, vec2 resolution,\n          vec2 v_rgbNW, vec2 v_rgbNE,\n          vec2 v_rgbSW, vec2 v_rgbSE,\n          vec2 v_rgbM) {\n    vec4 color;\n    mediump vec2 inverseVP = vec2(1.0 / resolution.x, 1.0 / resolution.y);\n    vec3 rgbNW = texture2D(tex, v_rgbNW).xyz;\n    vec3 rgbNE = texture2D(tex, v_rgbNE).xyz;\n    vec3 rgbSW = texture2D(tex, v_rgbSW).xyz;\n    vec3 rgbSE = texture2D(tex, v_rgbSE).xyz;\n    vec4 texColor = texture2D(tex, v_rgbM);\n    vec3 rgbM  = texColor.xyz;\n    vec3 luma = vec3(0.299, 0.587, 0.114);\n    float lumaNW = dot(rgbNW, luma);\n    float lumaNE = dot(rgbNE, luma);\n    float lumaSW = dot(rgbSW, luma);\n    float lumaSE = dot(rgbSE, luma);\n    float lumaM  = dot(rgbM,  luma);\n    float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));\n    float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));\n    \n    mediump vec2 dir;\n    dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\n    dir.y =  ((lumaNW + lumaSW) - (lumaNE + lumaSE));\n    \n    float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) *\n                          (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);\n    \n    float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);\n    dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),\n              max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),\n                  dir * rcpDirMin)) * inverseVP;\n    \n    vec3 rgbA = 0.5 * (\n                       texture2D(tex, fragCoord * inverseVP + dir * (1.0 / 3.0 - 0.5)).xyz +\n                       texture2D(tex, fragCoord * inverseVP + dir * (2.0 / 3.0 - 0.5)).xyz);\n    vec3 rgbB = rgbA * 0.5 + 0.25 * (\n                                     texture2D(tex, fragCoord * inverseVP + dir * -0.5).xyz +\n                                     texture2D(tex, fragCoord * inverseVP + dir * 0.5).xyz);\n    \n    float lumaB = dot(rgbB, luma);\n    if ((lumaB < lumaMin) || (lumaB > lumaMax))\n        color = vec4(rgbA, texColor.a);\n    else\n        color = vec4(rgbB, texColor.a);\n    return color;\n}\n\nvoid main() {\n\n      vec2 fragCoord = vTextureCoord * filterArea.xy;\n\n      vec4 color;\n\n    color = fxaa(uSampler, fragCoord, filterArea.xy, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\n\n      gl_FragColor = color;\n}\n'))
                            }
                            return o(t, e), t
                        }(s.Filter));
                    i.default = l
                }, {
                    "../../core": 65,
                    path: 8
                }],
                153: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }
                    i.__esModule = !0;
                    var r = e("./fxaa/FXAAFilter");
                    Object.defineProperty(i, "FXAAFilter", {
                        enumerable: !0,
                        get: function() {
                            return n(r).default
                        }
                    });
                    var o = e("./noise/NoiseFilter");
                    Object.defineProperty(i, "NoiseFilter", {
                        enumerable: !0,
                        get: function() {
                            return n(o).default
                        }
                    });
                    var a = e("./displacement/DisplacementFilter");
                    Object.defineProperty(i, "DisplacementFilter", {
                        enumerable: !0,
                        get: function() {
                            return n(a).default
                        }
                    });
                    var s = e("./blur/BlurFilter");
                    Object.defineProperty(i, "BlurFilter", {
                        enumerable: !0,
                        get: function() {
                            return n(s).default
                        }
                    });
                    var l = e("./blur/BlurXFilter");
                    Object.defineProperty(i, "BlurXFilter", {
                        enumerable: !0,
                        get: function() {
                            return n(l).default
                        }
                    });
                    var u = e("./blur/BlurYFilter");
                    Object.defineProperty(i, "BlurYFilter", {
                        enumerable: !0,
                        get: function() {
                            return n(u).default
                        }
                    });
                    var c = e("./colormatrix/ColorMatrixFilter");
                    Object.defineProperty(i, "ColorMatrixFilter", {
                        enumerable: !0,
                        get: function() {
                            return n(c).default
                        }
                    });
                    var h = e("./alpha/AlphaFilter");
                    Object.defineProperty(i, "AlphaFilter", {
                        enumerable: !0,
                        get: function() {
                            return n(h).default
                        }
                    })
                }, {
                    "./alpha/AlphaFilter": 143,
                    "./blur/BlurFilter": 144,
                    "./blur/BlurXFilter": 145,
                    "./blur/BlurYFilter": 146,
                    "./colormatrix/ColorMatrixFilter": 150,
                    "./displacement/DisplacementFilter": 151,
                    "./fxaa/FXAAFilter": 152,
                    "./noise/NoiseFilter": 154
                }],
                154: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function o(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var a = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        s = e("../../core"),
                        l = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(s),
                        u = (e("path"), function(e) {
                            function t() {
                                var i = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : .5,
                                    o = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : Math.random();
                                n(this, t);
                                var a = r(this, e.call(this, "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n    gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n    vTextureCoord = aTextureCoord;\n}", "precision highp float;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform float uNoise;\nuniform float uSeed;\nuniform sampler2D uSampler;\n\nfloat rand(vec2 co)\n{\n    return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvoid main()\n{\n    vec4 color = texture2D(uSampler, vTextureCoord);\n    float randomValue = rand(gl_FragCoord.xy * uSeed);\n    float diff = (randomValue - 0.5) * uNoise;\n\n    // Un-premultiply alpha before applying the color matrix. See issue #3539.\n    if (color.a > 0.0) {\n        color.rgb /= color.a;\n    }\n\n    color.r += diff;\n    color.g += diff;\n    color.b += diff;\n\n    // Premultiply alpha again.\n    color.rgb *= color.a;\n\n    gl_FragColor = color;\n}\n"));
                                return a.noise = i, a.seed = o, a
                            }
                            return o(t, e), a(t, [{
                                key: "noise",
                                get: function() {
                                    return this.uniforms.uNoise
                                },
                                set: function(e) {
                                    this.uniforms.uNoise = e
                                }
                            }, {
                                key: "seed",
                                get: function() {
                                    return this.uniforms.uSeed
                                },
                                set: function(e) {
                                    this.uniforms.uSeed = e
                                }
                            }]), t
                        }(l.Filter));
                    i.default = u
                }, {
                    "../../core": 65,
                    path: 8
                }],
                155: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        o = e("../core"),
                        a = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(o),
                        s = function() {
                            function e() {
                                n(this, e), this.global = new a.Point, this.target = null, this.originalEvent = null, this.identifier = null, this.isPrimary = !1, this.button = 0, this.buttons = 0, this.width = 0, this.height = 0, this.tiltX = 0, this.tiltY = 0, this.pointerType = null, this.pressure = 0, this.rotationAngle = 0, this.twist = 0, this.tangentialPressure = 0
                            }
                            return e.prototype.getLocalPosition = function(e, t, i) {
                                return e.worldTransform.applyInverse(i || this.global, t)
                            }, e.prototype.copyEvent = function(e) {
                                e.isPrimary && (this.isPrimary = !0), this.button = e.button, this.buttons = Number.isInteger(e.buttons) ? e.buttons : e.which, this.width = e.width, this.height = e.height, this.tiltX = e.tiltX, this.tiltY = e.tiltY, this.pointerType = e.pointerType, this.pressure = e.pressure, this.rotationAngle = e.rotationAngle, this.twist = e.twist || 0, this.tangentialPressure = e.tangentialPressure || 0
                            }, e.prototype.reset = function() {
                                this.isPrimary = !1
                            }, r(e, [{
                                key: "pointerId",
                                get: function() {
                                    return this.identifier
                                }
                            }]), e
                        }();
                    i.default = s
                }, {
                    "../core": 65
                }],
                156: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = function() {
                        function e() {
                            n(this, e), this.stopped = !1, this.target = null, this.currentTarget = null, this.type = null, this.data = null
                        }
                        return e.prototype.stopPropagation = function() {
                            this.stopped = !0
                        }, e.prototype.reset = function() {
                            this.stopped = !1, this.currentTarget = null, this.target = null
                        }, e
                    }();
                    i.default = r
                }, {}],
                157: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function a(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var s = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                            return typeof e
                        } : function(e) {
                            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                        },
                        l = e("../core"),
                        u = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(l),
                        c = e("./InteractionData"),
                        h = n(c),
                        p = e("./InteractionEvent"),
                        f = n(p),
                        d = e("./InteractionTrackingData"),
                        _ = n(d),
                        m = e("eventemitter3"),
                        g = n(m),
                        v = e("./interactiveTarget"),
                        y = n(v);
                    u.utils.mixins.delayMixin(u.DisplayObject.prototype, y.default);
                    var b = 1,
                        x = {
                            target: null,
                            data: {
                                global: null
                            }
                        },
                        S = function(e) {
                            function t(i, n) {
                                r(this, t);
                                var a = o(this, e.call(this));
                                return n = n || {}, a.renderer = i, a.autoPreventDefault = void 0 === n.autoPreventDefault || n.autoPreventDefault, a.interactionFrequency = n.interactionFrequency || 10, a.mouse = new h.default, a.mouse.identifier = b, a.mouse.global.set(-999999), a.activeInteractionData = {}, a.activeInteractionData[b] = a.mouse, a.interactionDataPool = [], a.eventData = new f.default, a.interactionDOMElement = null, a.moveWhenInside = !1, a.eventsAdded = !1, a.mouseOverRenderer = !1, a.supportsTouchEvents = "ontouchstart" in window, a.supportsPointerEvents = !!window.PointerEvent, a.onPointerUp = a.onPointerUp.bind(a), a.processPointerUp = a.processPointerUp.bind(a), a.onPointerCancel = a.onPointerCancel.bind(a), a.processPointerCancel = a.processPointerCancel.bind(a), a.onPointerDown = a.onPointerDown.bind(a), a.processPointerDown = a.processPointerDown.bind(a), a.onPointerMove = a.onPointerMove.bind(a), a.processPointerMove = a.processPointerMove.bind(a), a.onPointerOut = a.onPointerOut.bind(a), a.processPointerOverOut = a.processPointerOverOut.bind(a), a.onPointerOver = a.onPointerOver.bind(a), a.cursorStyles = {
                                    default: "inherit",
                                    pointer: "pointer"
                                }, a.currentCursorMode = null, a.cursor = null, a._tempPoint = new u.Point, a.resolution = 1, a.setTargetElement(a.renderer.view, a.renderer.resolution), a
                            }
                            return a(t, e), t.prototype.hitTest = function(e, t) {
                                return x.target = null, x.data.global = e, t || (t = this.renderer._lastObjectRendered), this.processInteractive(x, t, null, !0), x.target
                            }, t.prototype.setTargetElement = function(e) {
                                var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;
                                this.removeEvents(), this.interactionDOMElement = e, this.resolution = t, this.addEvents()
                            }, t.prototype.addEvents = function() {
                                this.interactionDOMElement && (u.ticker.shared.add(this.update, this, u.UPDATE_PRIORITY.INTERACTION), window.navigator.msPointerEnabled ? (this.interactionDOMElement.style["-ms-content-zooming"] = "none", this.interactionDOMElement.style["-ms-touch-action"] = "none") : this.supportsPointerEvents && (this.interactionDOMElement.style["touch-action"] = "none"), this.supportsPointerEvents ? (window.document.addEventListener("pointermove", this.onPointerMove, !0), this.interactionDOMElement.addEventListener("pointerdown", this.onPointerDown, !0), this.interactionDOMElement.addEventListener("pointerleave", this.onPointerOut, !0), this.interactionDOMElement.addEventListener("pointerover", this.onPointerOver, !0), window.addEventListener("pointercancel", this.onPointerCancel, !0), window.addEventListener("pointerup", this.onPointerUp, !0)) : (window.document.addEventListener("mousemove", this.onPointerMove, !0), this.interactionDOMElement.addEventListener("mousedown", this.onPointerDown, !0), this.interactionDOMElement.addEventListener("mouseout", this.onPointerOut, !0), this.interactionDOMElement.addEventListener("mouseover", this.onPointerOver, !0), window.addEventListener("mouseup", this.onPointerUp, !0)), this.supportsTouchEvents && (this.interactionDOMElement.addEventListener("touchstart", this.onPointerDown, !0), this.interactionDOMElement.addEventListener("touchcancel", this.onPointerCancel, !0), this.interactionDOMElement.addEventListener("touchend", this.onPointerUp, !0), this.interactionDOMElement.addEventListener("touchmove", this.onPointerMove, !0)), this.eventsAdded = !0)
                            }, t.prototype.removeEvents = function() {
                                this.interactionDOMElement && (u.ticker.shared.remove(this.update, this), window.navigator.msPointerEnabled ? (this.interactionDOMElement.style["-ms-content-zooming"] = "", this.interactionDOMElement.style["-ms-touch-action"] = "") : this.supportsPointerEvents && (this.interactionDOMElement.style["touch-action"] = ""), this.supportsPointerEvents ? (window.document.removeEventListener("pointermove", this.onPointerMove, !0), this.interactionDOMElement.removeEventListener("pointerdown", this.onPointerDown, !0), this.interactionDOMElement.removeEventListener("pointerleave", this.onPointerOut, !0), this.interactionDOMElement.removeEventListener("pointerover", this.onPointerOver, !0), window.removeEventListener("pointercancel", this.onPointerCancel, !0), window.removeEventListener("pointerup", this.onPointerUp, !0)) : (window.document.removeEventListener("mousemove", this.onPointerMove, !0), this.interactionDOMElement.removeEventListener("mousedown", this.onPointerDown, !0), this.interactionDOMElement.removeEventListener("mouseout", this.onPointerOut, !0), this.interactionDOMElement.removeEventListener("mouseover", this.onPointerOver, !0), window.removeEventListener("mouseup", this.onPointerUp, !0)), this.supportsTouchEvents && (this.interactionDOMElement.removeEventListener("touchstart", this.onPointerDown, !0), this.interactionDOMElement.removeEventListener("touchcancel", this.onPointerCancel, !0), this.interactionDOMElement.removeEventListener("touchend", this.onPointerUp, !0), this.interactionDOMElement.removeEventListener("touchmove", this.onPointerMove, !0)), this.interactionDOMElement = null, this.eventsAdded = !1)
                            }, t.prototype.update = function(e) {
                                if (this._deltaTime += e, !(this._deltaTime < this.interactionFrequency) && (this._deltaTime = 0, this.interactionDOMElement)) {
                                    if (this.didMove) return void(this.didMove = !1);
                                    this.cursor = null;
                                    for (var t in this.activeInteractionData)
                                        if (this.activeInteractionData.hasOwnProperty(t)) {
                                            var i = this.activeInteractionData[t];
                                            if (i.originalEvent && "touch" !== i.pointerType) {
                                                var n = this.configureInteractionEventForDOMEvent(this.eventData, i.originalEvent, i);
                                                this.processInteractive(n, this.renderer._lastObjectRendered, this.processPointerOverOut, !0)
                                            }
                                        }
                                    this.setCursorMode(this.cursor)
                                }
                            }, t.prototype.setCursorMode = function(e) {
                                if (e = e || "default", this.currentCursorMode !== e) {
                                    this.currentCursorMode = e;
                                    var t = this.cursorStyles[e];
                                    if (t) switch (void 0 === t ? "undefined" : s(t)) {
                                        case "string":
                                            this.interactionDOMElement.style.cursor = t;
                                            break;
                                        case "function":
                                            t(e);
                                            break;
                                        case "object":
                                            Object.assign(this.interactionDOMElement.style, t)
                                    } else "string" != typeof e || Object.prototype.hasOwnProperty.call(this.cursorStyles, e) || (this.interactionDOMElement.style.cursor = e)
                                }
                            }, t.prototype.dispatchEvent = function(e, t, i) {
                                i.stopped || (i.currentTarget = e, i.type = t, e.emit(t, i), e[t] && e[t](i))
                            }, t.prototype.mapPositionToPoint = function(e, t, i) {
                                var n = void 0;
                                n = this.interactionDOMElement.parentElement ? this.interactionDOMElement.getBoundingClientRect() : {
                                    x: 0,
                                    y: 0,
                                    width: 0,
                                    height: 0
                                };
                                var r = navigator.isCocoonJS ? this.resolution : 1 / this.resolution;
                                e.x = (t - n.left) * (this.interactionDOMElement.width / n.width) * r, e.y = (i - n.top) * (this.interactionDOMElement.height / n.height) * r
                            }, t.prototype.processInteractive = function(e, t, i, n, r) {
                                if (!t || !t.visible) return !1;
                                var o = e.data.global;
                                r = t.interactive || r;
                                var a = !1,
                                    s = r,
                                    l = !0;
                                if (t.hitArea ? (n && (t.worldTransform.applyInverse(o, this._tempPoint), t.hitArea.contains(this._tempPoint.x, this._tempPoint.y) ? a = !0 : (n = !1, l = !1)), s = !1) : t._mask && n && (t._mask.containsPoint(o) || (n = !1, l = !1)), l && t.interactiveChildren && t.children)
                                    for (var u = t.children, c = u.length - 1; c >= 0; c--) {
                                        var h = u[c],
                                            p = this.processInteractive(e, h, i, n, s);
                                        if (p) {
                                            if (!h.parent) continue;
                                            s = !1, p && (e.target && (n = !1), a = !0)
                                        }
                                    }
                                return r && (n && !e.target && !t.hitArea && t.containsPoint && t.containsPoint(o) && (a = !0), t.interactive && (a && !e.target && (e.target = t), i && i(e, t, !!a))), a
                            }, t.prototype.onPointerDown = function(e) {
                                if (!this.supportsTouchEvents || "touch" !== e.pointerType) {
                                    var t = this.normalizeToPointerData(e);
                                    this.autoPreventDefault && t[0].isNormalized && e.preventDefault();
                                    for (var i = t.length, n = 0; n < i; n++) {
                                        var r = t[n],
                                            o = this.getInteractionDataForPointerId(r),
                                            a = this.configureInteractionEventForDOMEvent(this.eventData, r, o);
                                        if (a.data.originalEvent = e, this.processInteractive(a, this.renderer._lastObjectRendered, this.processPointerDown, !0), this.emit("pointerdown", a), "touch" === r.pointerType) this.emit("touchstart", a);
                                        else if ("mouse" === r.pointerType || "pen" === r.pointerType) {
                                            var s = 2 === r.button;
                                            this.emit(s ? "rightdown" : "mousedown", this.eventData)
                                        }
                                    }
                                }
                            }, t.prototype.processPointerDown = function(e, t, i) {
                                var n = e.data,
                                    r = e.data.identifier;
                                if (i)
                                    if (t.trackedPointers[r] || (t.trackedPointers[r] = new _.default(r)), this.dispatchEvent(t, "pointerdown", e), "touch" === n.pointerType) this.dispatchEvent(t, "touchstart", e);
                                    else if ("mouse" === n.pointerType || "pen" === n.pointerType) {
                                    var o = 2 === n.button;
                                    o ? t.trackedPointers[r].rightDown = !0 : t.trackedPointers[r].leftDown = !0, this.dispatchEvent(t, o ? "rightdown" : "mousedown", e)
                                }
                            }, t.prototype.onPointerComplete = function(e, t, i) {
                                for (var n = this.normalizeToPointerData(e), r = n.length, o = e.target !== this.interactionDOMElement ? "outside" : "", a = 0; a < r; a++) {
                                    var s = n[a],
                                        l = this.getInteractionDataForPointerId(s),
                                        u = this.configureInteractionEventForDOMEvent(this.eventData, s, l);
                                    if (u.data.originalEvent = e, this.processInteractive(u, this.renderer._lastObjectRendered, i, t || !o), this.emit(t ? "pointercancel" : "pointerup" + o, u), "mouse" === s.pointerType || "pen" === s.pointerType) {
                                        var c = 2 === s.button;
                                        this.emit(c ? "rightup" + o : "mouseup" + o, u)
                                    } else "touch" === s.pointerType && (this.emit(t ? "touchcancel" : "touchend" + o, u), this.releaseInteractionDataForPointerId(s.pointerId, l))
                                }
                            }, t.prototype.onPointerCancel = function(e) {
                                this.supportsTouchEvents && "touch" === e.pointerType || this.onPointerComplete(e, !0, this.processPointerCancel)
                            }, t.prototype.processPointerCancel = function(e, t) {
                                var i = e.data,
                                    n = e.data.identifier;
                                void 0 !== t.trackedPointers[n] && (delete t.trackedPointers[n], this.dispatchEvent(t, "pointercancel", e), "touch" === i.pointerType && this.dispatchEvent(t, "touchcancel", e))
                            }, t.prototype.onPointerUp = function(e) {
                                this.supportsTouchEvents && "touch" === e.pointerType || this.onPointerComplete(e, !1, this.processPointerUp)
                            }, t.prototype.processPointerUp = function(e, t, i) {
                                var n = e.data,
                                    r = e.data.identifier,
                                    o = t.trackedPointers[r],
                                    a = "touch" === n.pointerType,
                                    s = "mouse" === n.pointerType || "pen" === n.pointerType,
                                    l = !1;
                                if (s) {
                                    var u = 2 === n.button,
                                        c = _.default.FLAGS,
                                        h = u ? c.RIGHT_DOWN : c.LEFT_DOWN,
                                        p = void 0 !== o && o.flags & h;
                                    i ? (this.dispatchEvent(t, u ? "rightup" : "mouseup", e), p && (this.dispatchEvent(t, u ? "rightclick" : "click", e), l = !0)) : p && this.dispatchEvent(t, u ? "rightupoutside" : "mouseupoutside", e), o && (u ? o.rightDown = !1 : o.leftDown = !1)
                                }
                                i ? (this.dispatchEvent(t, "pointerup", e), a && this.dispatchEvent(t, "touchend", e), o && (s && !l || this.dispatchEvent(t, "pointertap", e), a && (this.dispatchEvent(t, "tap", e), o.over = !1))) : o && (this.dispatchEvent(t, "pointerupoutside", e), a && this.dispatchEvent(t, "touchendoutside", e)), o && o.none && delete t.trackedPointers[r]
                            }, t.prototype.onPointerMove = function(e) {
                                if (!this.supportsTouchEvents || "touch" !== e.pointerType) {
                                    var t = this.normalizeToPointerData(e);
                                    "mouse" !== t[0].pointerType && "pen" !== t[0].pointerType || (this.didMove = !0, this.cursor = null);
                                    for (var i = t.length, n = 0; n < i; n++) {
                                        var r = t[n],
                                            o = this.getInteractionDataForPointerId(r),
                                            a = this.configureInteractionEventForDOMEvent(this.eventData, r, o);
                                        a.data.originalEvent = e;
                                        var s = "touch" !== r.pointerType || this.moveWhenInside;
                                        this.processInteractive(a, this.renderer._lastObjectRendered, this.processPointerMove, s), this.emit("pointermove", a), "touch" === r.pointerType && this.emit("touchmove", a), "mouse" !== r.pointerType && "pen" !== r.pointerType || this.emit("mousemove", a)
                                    }
                                    "mouse" === t[0].pointerType && this.setCursorMode(this.cursor)
                                }
                            }, t.prototype.processPointerMove = function(e, t, i) {
                                var n = e.data,
                                    r = "touch" === n.pointerType,
                                    o = "mouse" === n.pointerType || "pen" === n.pointerType;
                                o && this.processPointerOverOut(e, t, i), this.moveWhenInside && !i || (this.dispatchEvent(t, "pointermove", e), r && this.dispatchEvent(t, "touchmove", e), o && this.dispatchEvent(t, "mousemove", e))
                            }, t.prototype.onPointerOut = function(e) {
                                if (!this.supportsTouchEvents || "touch" !== e.pointerType) {
                                    var t = this.normalizeToPointerData(e),
                                        i = t[0];
                                    "mouse" === i.pointerType && (this.mouseOverRenderer = !1, this.setCursorMode(null));
                                    var n = this.getInteractionDataForPointerId(i),
                                        r = this.configureInteractionEventForDOMEvent(this.eventData, i, n);
                                    r.data.originalEvent = i, this.processInteractive(r, this.renderer._lastObjectRendered, this.processPointerOverOut, !1), this.emit("pointerout", r), "mouse" === i.pointerType || "pen" === i.pointerType ? this.emit("mouseout", r) : this.releaseInteractionDataForPointerId(n.identifier)
                                }
                            }, t.prototype.processPointerOverOut = function(e, t, i) {
                                var n = e.data,
                                    r = e.data.identifier,
                                    o = "mouse" === n.pointerType || "pen" === n.pointerType,
                                    a = t.trackedPointers[r];
                                i && !a && (a = t.trackedPointers[r] = new _.default(r)), void 0 !== a && (i && this.mouseOverRenderer ? (a.over || (a.over = !0, this.dispatchEvent(t, "pointerover", e), o && this.dispatchEvent(t, "mouseover", e)), o && null === this.cursor && (this.cursor = t.cursor)) : a.over && (a.over = !1, this.dispatchEvent(t, "pointerout", this.eventData), o && this.dispatchEvent(t, "mouseout", e), a.none && delete t.trackedPointers[r]))
                            }, t.prototype.onPointerOver = function(e) {
                                var t = this.normalizeToPointerData(e),
                                    i = t[0],
                                    n = this.getInteractionDataForPointerId(i),
                                    r = this.configureInteractionEventForDOMEvent(this.eventData, i, n);
                                r.data.originalEvent = i, "mouse" === i.pointerType && (this.mouseOverRenderer = !0), this.emit("pointerover", r), "mouse" !== i.pointerType && "pen" !== i.pointerType || this.emit("mouseover", r)
                            }, t.prototype.getInteractionDataForPointerId = function(e) {
                                var t = e.pointerId,
                                    i = void 0;
                                return t === b || "mouse" === e.pointerType ? i = this.mouse : this.activeInteractionData[t] ? i = this.activeInteractionData[t] : (i = this.interactionDataPool.pop() || new h.default, i.identifier = t, this.activeInteractionData[t] = i), i.copyEvent(e), i
                            }, t.prototype.releaseInteractionDataForPointerId = function(e) {
                                var t = this.activeInteractionData[e];
                                t && (delete this.activeInteractionData[e], t.reset(), this.interactionDataPool.push(t))
                            }, t.prototype.configureInteractionEventForDOMEvent = function(e, t, i) {
                                return e.data = i, this.mapPositionToPoint(i.global, t.clientX, t.clientY), navigator.isCocoonJS && "touch" === t.pointerType && (i.global.x = i.global.x / this.resolution, i.global.y = i.global.y / this.resolution), "touch" === t.pointerType && (t.globalX = i.global.x, t.globalY = i.global.y), i.originalEvent = t, e.reset(), e
                            }, t.prototype.normalizeToPointerData = function(e) {
                                var t = [];
                                if (this.supportsTouchEvents && e instanceof TouchEvent)
                                    for (var i = 0, n = e.changedTouches.length; i < n; i++) {
                                        var r = e.changedTouches[i];
                                        void 0 === r.button && (r.button = e.touches.length ? 1 : 0), void 0 === r.buttons && (r.buttons = e.touches.length ? 1 : 0), void 0 === r.isPrimary && (r.isPrimary = 1 === e.touches.length && "touchstart" === e.type), void 0 === r.width && (r.width = r.radiusX || 1), void 0 === r.height && (r.height = r.radiusY || 1), void 0 === r.tiltX && (r.tiltX = 0), void 0 === r.tiltY && (r.tiltY = 0), void 0 === r.pointerType && (r.pointerType = "touch"), void 0 === r.pointerId && (r.pointerId = r.identifier || 0), void 0 === r.pressure && (r.pressure = r.force || .5), void 0 === r.twist && (r.twist = 0), void 0 === r.tangentialPressure && (r.tangentialPressure = 0), void 0 === r.layerX && (r.layerX = r.offsetX = r.clientX), void 0 === r.layerY && (r.layerY = r.offsetY = r.clientY), r.isNormalized = !0, t.push(r)
                                    } else !(e instanceof MouseEvent) || this.supportsPointerEvents && e instanceof window.PointerEvent ? t.push(e) : (void 0 === e.isPrimary && (e.isPrimary = !0), void 0 === e.width && (e.width = 1), void 0 === e.height && (e.height = 1), void 0 === e.tiltX && (e.tiltX = 0), void 0 === e.tiltY && (e.tiltY = 0), void 0 === e.pointerType && (e.pointerType = "mouse"), void 0 === e.pointerId && (e.pointerId = b), void 0 === e.pressure && (e.pressure = .5), void 0 === e.twist && (e.twist = 0), void 0 === e.tangentialPressure && (e.tangentialPressure = 0), e.isNormalized = !0, t.push(e));
                                return t
                            }, t.prototype.destroy = function() {
                                this.removeEvents(), this.removeAllListeners(), this.renderer = null, this.mouse = null, this.eventData = null, this.interactionDOMElement = null, this.onPointerDown = null, this.processPointerDown = null, this.onPointerUp = null, this.processPointerUp = null, this.onPointerCancel = null, this.processPointerCancel = null, this.onPointerMove = null, this.processPointerMove = null, this.onPointerOut = null, this.processPointerOverOut = null, this.onPointerOver = null, this._tempPoint = null
                            }, t
                        }(g.default);
                    i.default = S, u.WebGLRenderer.registerPlugin("interaction", S), u.CanvasRenderer.registerPlugin("interaction", S)
                }, {
                    "../core": 65,
                    "./InteractionData": 155,
                    "./InteractionEvent": 156,
                    "./InteractionTrackingData": 158,
                    "./interactiveTarget": 160,
                    eventemitter3: 3
                }],
                158: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        o = function() {
                            function e(t) {
                                n(this, e), this._pointerId = t, this._flags = e.FLAGS.NONE
                            }
                            return e.prototype._doSet = function(e, t) {
                                this._flags = t ? this._flags | e : this._flags & ~e
                            }, r(e, [{
                                key: "pointerId",
                                get: function() {
                                    return this._pointerId
                                }
                            }, {
                                key: "flags",
                                get: function() {
                                    return this._flags
                                },
                                set: function(e) {
                                    this._flags = e
                                }
                            }, {
                                key: "none",
                                get: function() {
                                    return this._flags === this.constructor.FLAGS.NONE
                                }
                            }, {
                                key: "over",
                                get: function() {
                                    return 0 != (this._flags & this.constructor.FLAGS.OVER)
                                },
                                set: function(e) {
                                    this._doSet(this.constructor.FLAGS.OVER, e)
                                }
                            }, {
                                key: "rightDown",
                                get: function() {
                                    return 0 != (this._flags & this.constructor.FLAGS.RIGHT_DOWN)
                                },
                                set: function(e) {
                                    this._doSet(this.constructor.FLAGS.RIGHT_DOWN, e)
                                }
                            }, {
                                key: "leftDown",
                                get: function() {
                                    return 0 != (this._flags & this.constructor.FLAGS.LEFT_DOWN)
                                },
                                set: function(e) {
                                    this._doSet(this.constructor.FLAGS.LEFT_DOWN, e)
                                }
                            }]), e
                        }();
                    i.default = o, o.FLAGS = Object.freeze({
                        NONE: 0,
                        OVER: 1,
                        LEFT_DOWN: 2,
                        RIGHT_DOWN: 4
                    })
                }, {}],
                159: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }
                    i.__esModule = !0;
                    var r = e("./InteractionData");
                    Object.defineProperty(i, "InteractionData", {
                        enumerable: !0,
                        get: function() {
                            return n(r).default
                        }
                    });
                    var o = e("./InteractionManager");
                    Object.defineProperty(i, "InteractionManager", {
                        enumerable: !0,
                        get: function() {
                            return n(o).default
                        }
                    });
                    var a = e("./interactiveTarget");
                    Object.defineProperty(i, "interactiveTarget", {
                        enumerable: !0,
                        get: function() {
                            return n(a).default
                        }
                    });
                    var s = e("./InteractionTrackingData");
                    Object.defineProperty(i, "InteractionTrackingData", {
                        enumerable: !0,
                        get: function() {
                            return n(s).default
                        }
                    });
                    var l = e("./InteractionEvent");
                    Object.defineProperty(i, "InteractionEvent", {
                        enumerable: !0,
                        get: function() {
                            return n(l).default
                        }
                    })
                }, {
                    "./InteractionData": 155,
                    "./InteractionEvent": 156,
                    "./InteractionManager": 157,
                    "./InteractionTrackingData": 158,
                    "./interactiveTarget": 160
                }],
                160: [function(e, t, i) {
                    "use strict";
                    i.__esModule = !0, i.default = {
                        interactive: !1,
                        interactiveChildren: !0,
                        hitArea: null,
                        get buttonMode() {
                            return "pointer" === this.cursor
                        },
                        set buttonMode(e) {
                            e ? this.cursor = "pointer" : "pointer" === this.cursor && (this.cursor = null)
                        },
                        cursor: null,
                        get trackedPointers() {
                            return void 0 === this._trackedPointers && (this._trackedPointers = {}), this._trackedPointers
                        },
                        _trackedPointers: void 0
                    }
                }, {}],
                161: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        e.bitmapFont = s.BitmapText.registerFont(e.data, t)
                    }
                    i.__esModule = !0, i.parse = n, i.default = function() {
                        return function(e, t) {
                            if (!e.data || e.type !== a.Resource.TYPE.XML) return void t();
                            if (0 === e.data.getElementsByTagName("page").length || 0 === e.data.getElementsByTagName("info").length || null === e.data.getElementsByTagName("info")[0].getAttribute("face")) return void t();
                            var i = e.isDataUrl ? "" : o.dirname(e.url);
                            e.isDataUrl && ("." === i && (i = ""), this.baseUrl && i && "/" === this.baseUrl.charAt(this.baseUrl.length - 1) && (i += "/")), (i = i.replace(this.baseUrl, "")) && "/" !== i.charAt(i.length - 1) && (i += "/");
                            for (var r = e.data.getElementsByTagName("page"), s = {}, l = function(i) {
                                    s[i.metadata.pageFile] = i.texture, Object.keys(s).length === r.length && (n(e, s), t())
                                }, u = 0; u < r.length; ++u) {
                                var c = r[u].getAttribute("file"),
                                    h = i + c,
                                    p = !1;
                                for (var f in this.resources) {
                                    var d = this.resources[f];
                                    if (d.url === h) {
                                        d.metadata.pageFile = c, d.texture ? l(d) : d.onAfterMiddleware.add(l), p = !0;
                                        break
                                    }
                                }
                                if (!p) {
                                    var _ = {
                                        crossOrigin: e.crossOrigin,
                                        loadType: a.Resource.LOAD_TYPE.IMAGE,
                                        metadata: Object.assign({
                                            pageFile: c
                                        }, e.metadata.imageMetadata),
                                        parentResource: e
                                    };
                                    this.add(h, _, l)
                                }
                            }
                        }
                    };
                    var r = e("path"),
                        o = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(r),
                        a = e("resource-loader"),
                        s = e("../extras")
                }, {
                    "../extras": 141,
                    path: 8,
                    "resource-loader": 36
                }],
                162: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }
                    i.__esModule = !0, i.shared = i.Resource = i.textureParser = i.getResourcePath = i.spritesheetParser = i.parseBitmapFontData = i.bitmapFontParser = i.Loader = void 0;
                    var r = e("./bitmapFontParser");
                    Object.defineProperty(i, "bitmapFontParser", {
                        enumerable: !0,
                        get: function() {
                            return n(r).default
                        }
                    }), Object.defineProperty(i, "parseBitmapFontData", {
                        enumerable: !0,
                        get: function() {
                            return r.parse
                        }
                    });
                    var o = e("./spritesheetParser");
                    Object.defineProperty(i, "spritesheetParser", {
                        enumerable: !0,
                        get: function() {
                            return n(o).default
                        }
                    }), Object.defineProperty(i, "getResourcePath", {
                        enumerable: !0,
                        get: function() {
                            return o.getResourcePath
                        }
                    });
                    var a = e("./textureParser");
                    Object.defineProperty(i, "textureParser", {
                        enumerable: !0,
                        get: function() {
                            return n(a).default
                        }
                    });
                    var s = e("resource-loader");
                    Object.defineProperty(i, "Resource", {
                        enumerable: !0,
                        get: function() {
                            return s.Resource
                        }
                    });
                    var l = e("../core/Application"),
                        u = n(l),
                        c = e("./loader"),
                        h = n(c);
                    i.Loader = h.default;
                    var p = new h.default;
                    p.destroy = function() {}, i.shared = p;
                    var f = u.default.prototype;
                    f._loader = null, Object.defineProperty(f, "loader", {
                        get: function() {
                            if (!this._loader) {
                                var e = this._options.sharedLoader;
                                this._loader = e ? p : new h.default
                            }
                            return this._loader
                        }
                    }), f._parentDestroy = f.destroy, f.destroy = function(e, t) {
                        this._loader && (this._loader.destroy(), this._loader = null), this._parentDestroy(e, t)
                    }
                }, {
                    "../core/Application": 43,
                    "./bitmapFontParser": 161,
                    "./loader": 163,
                    "./spritesheetParser": 164,
                    "./textureParser": 165,
                    "resource-loader": 36
                }],
                163: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function a(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var s = e("resource-loader"),
                        l = n(s),
                        u = e("resource-loader/lib/middlewares/parsing/blob"),
                        c = e("eventemitter3"),
                        h = n(c),
                        p = e("./textureParser"),
                        f = n(p),
                        d = e("./spritesheetParser"),
                        _ = n(d),
                        m = e("./bitmapFontParser"),
                        g = n(m),
                        v = function(e) {
                            function t(i, n) {
                                r(this, t);
                                var a = o(this, e.call(this, i, n));
                                h.default.call(a);
                                for (var s = 0; s < t._pixiMiddleware.length; ++s) a.use(t._pixiMiddleware[s]());
                                return a.onStart.add(function(e) {
                                    return a.emit("start", e)
                                }), a.onProgress.add(function(e, t) {
                                    return a.emit("progress", e, t)
                                }), a.onError.add(function(e, t, i) {
                                    return a.emit("error", e, t, i)
                                }), a.onLoad.add(function(e, t) {
                                    return a.emit("load", e, t)
                                }), a.onComplete.add(function(e, t) {
                                    return a.emit("complete", e, t)
                                }), a
                            }
                            return a(t, e), t.addPixiMiddleware = function(e) {
                                t._pixiMiddleware.push(e)
                            }, t.prototype.destroy = function() {
                                this.removeAllListeners(), this.reset()
                            }, t
                        }(l.default);
                    i.default = v;
                    for (var y in h.default.prototype) v.prototype[y] = h.default.prototype[y];
                    v._pixiMiddleware = [u.blobMiddlewareFactory, f.default, _.default, g.default];
                    var b = l.default.Resource;
                    b.setExtensionXhrType("fnt", b.XHR_RESPONSE_TYPE.DOCUMENT)
                }, {
                    "./bitmapFontParser": 161,
                    "./spritesheetParser": 164,
                    "./textureParser": 165,
                    eventemitter3: 3,
                    "resource-loader": 36,
                    "resource-loader/lib/middlewares/parsing/blob": 37
                }],
                164: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        return e.isDataUrl ? e.data.meta.image : a.default.resolve(e.url.replace(t, ""), e.data.meta.image)
                    }
                    i.__esModule = !0, i.default = function() {
                        return function(e, t) {
                            var i = e.name + "_image";
                            if (!e.data || e.type !== r.Resource.TYPE.JSON || !e.data.frames || this.resources[i]) return void t();
                            var o = {
                                    crossOrigin: e.crossOrigin,
                                    metadata: e.metadata.imageMetadata,
                                    parentResource: e
                                },
                                a = n(e, this.baseUrl);
                            this.add(i, a, o, function(i) {
                                if (i.error) return void t(i.error);
                                var n = new s.Spritesheet(i.texture.baseTexture, e.data, e.url);
                                n.parse(function() {
                                    e.spritesheet = n, e.textures = n.textures, t()
                                })
                            })
                        }
                    }, i.getResourcePath = n;
                    var r = e("resource-loader"),
                        o = e("url"),
                        a = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(o),
                        s = e("../core")
                }, {
                    "../core": 65,
                    "resource-loader": 36,
                    url: 38
                }],
                165: [function(e, t, i) {
                    "use strict";
                    i.__esModule = !0, i.default = function() {
                        return function(e, t) {
                            e.data && e.type === n.Resource.TYPE.IMAGE && (e.texture = o.default.fromLoader(e.data, e.url, e.name)), t()
                        }
                    };
                    var n = e("resource-loader"),
                        r = e("../core/textures/Texture"),
                        o = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(r)
                }, {
                    "../core/textures/Texture": 115,
                    "resource-loader": 36
                }],
                166: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function o(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                                constructor: {
                                    value: e,
                                    enumerable: !1,
                                    writable: !0,
                                    configurable: !0
                                }
                            }),
                            t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var a = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        s = e("../core"),
                        l = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(s),
                        u = e("../core/textures/Texture"),
                        c = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(u),
                        h = new l.Point,
                        p = new l.Polygon,
                        f = function(e) {
                            function t(i, o, a, s, u) {
                                n(this, t);
                                var h = r(this, e.call(this));
                                return h._texture = i || c.default.EMPTY, h.uvs = a || new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]), h.vertices = o || new Float32Array([0, 0, 100, 0, 100, 100, 0, 100]), h.indices = s || new Uint16Array([0, 1, 3, 2]), h.dirty = 0, h.indexDirty = 0, h.vertexDirty = 0, h.autoUpdate = !0, h.blendMode = l.BLEND_MODES.NORMAL, h.canvasPadding = l.settings.MESH_CANVAS_PADDING, h.drawMode = u || t.DRAW_MODES.TRIANGLE_MESH, h.shader = null, h.tintRgb = new Float32Array([1, 1, 1]), h._glDatas = {}, h._uvTransform = new l.TextureMatrix(h._texture), h.uploadUvTransform = !1, h.pluginName = "mesh", h
                            }
                            return o(t, e), t.prototype._renderWebGL = function(e) {
                                this.refresh(), e.setObjectRenderer(e.plugins[this.pluginName]), e.plugins[this.pluginName].render(this)
                            }, t.prototype._renderCanvas = function(e) {
                                this.refresh(), e.plugins[this.pluginName].render(this)
                            }, t.prototype._onTextureUpdate = function() {
                                this._uvTransform.texture = this._texture, this.refresh()
                            }, t.prototype.multiplyUvs = function() {
                                this.uploadUvTransform || this._uvTransform.multiplyUvs(this.uvs)
                            }, t.prototype.refresh = function(e) {
                                this.autoUpdate && this.vertexDirty++, this._uvTransform.update(e) && this._refresh()
                            }, t.prototype._refresh = function() {}, t.prototype._calculateBounds = function() {
                                this._bounds.addVertices(this.transform, this.vertices, 0, this.vertices.length)
                            }, t.prototype.containsPoint = function(e) {
                                if (!this.getBounds().contains(e.x, e.y)) return !1;
                                this.worldTransform.applyInverse(e, h);
                                for (var i = this.vertices, n = p.points, r = this.indices, o = this.indices.length, a = this.drawMode === t.DRAW_MODES.TRIANGLES ? 3 : 1, s = 0; s + 2 < o; s += a) {
                                    var l = 2 * r[s],
                                        u = 2 * r[s + 1],
                                        c = 2 * r[s + 2];
                                    if (n[0] = i[l], n[1] = i[l + 1], n[2] = i[u], n[3] = i[u + 1], n[4] = i[c], n[5] = i[c + 1], p.contains(h.x, h.y)) return !0
                                }
                                return !1
                            }, t.prototype.destroy = function(t) {
                                for (var i in this._glDatas) {
                                    var n = this._glDatas[i];
                                    n.destroy ? n.destroy() : (n.vertexBuffer && (n.vertexBuffer.destroy(), n.vertexBuffer = null), n.indexBuffer && (n.indexBuffer.destroy(), n.indexBuffer = null), n.uvBuffer && (n.uvBuffer.destroy(), n.uvBuffer = null), n.vao && (n.vao.destroy(), n.vao = null))
                                }
                                this._glDatas = null, e.prototype.destroy.call(this, t)
                            }, a(t, [{
                                key: "texture",
                                get: function() {
                                    return this._texture
                                },
                                set: function(e) {
                                    this._texture !== e && (this._texture = e, e && (e.baseTexture.hasLoaded ? this._onTextureUpdate() : e.once("update", this._onTextureUpdate, this)))
                                }
                            }, {
                                key: "tint",
                                get: function() {
                                    return l.utils.rgb2hex(this.tintRgb)
                                },
                                set: function(e) {
                                    this.tintRgb = l.utils.hex2rgb(e, this.tintRgb)
                                }
                            }]), t
                        }(l.Container);
                    i.default = f, f.DRAW_MODES = {
                        TRIANGLE_MESH: 0,
                        TRIANGLES: 1
                    }
                }, {
                    "../core": 65,
                    "../core/textures/Texture": 115
                }],
                167: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function a(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var s = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        l = e("./Plane"),
                        u = n(l),
                        c = e("../core/sprites/canvas/CanvasTinter"),
                        h = n(c),
                        p = 10,
                        f = function(e) {
                            function t(i, n, a, s, l) {
                                r(this, t);
                                var u = o(this, e.call(this, i, 4, 4));
                                return u._origWidth = i.orig.width, u._origHeight = i.orig.height, u._width = u._origWidth, u._height = u._origHeight, u._leftWidth = void 0 !== n ? n : p, u._rightWidth = void 0 !== s ? s : p, u._topHeight = void 0 !== a ? a : p, u._bottomHeight = void 0 !== l ? l : p, u._cachedTint = 16777215, u._tintedTexture = null, u._canvasUvs = null, u.refresh(!0), u
                            }
                            return a(t, e), t.prototype.updateHorizontalVertices = function() {
                                var e = this.vertices,
                                    t = this._topHeight + this._bottomHeight,
                                    i = this._height > t ? 1 : this._height / t;
                                e[9] = e[11] = e[13] = e[15] = this._topHeight * i, e[17] = e[19] = e[21] = e[23] = this._height - this._bottomHeight * i, e[25] = e[27] = e[29] = e[31] = this._height
                            }, t.prototype.updateVerticalVertices = function() {
                                var e = this.vertices,
                                    t = this._leftWidth + this._rightWidth,
                                    i = this._width > t ? 1 : this._width / t;
                                e[2] = e[10] = e[18] = e[26] = this._leftWidth * i, e[4] = e[12] = e[20] = e[28] = this._width - this._rightWidth * i, e[6] = e[14] = e[22] = e[30] = this._width
                            }, t.prototype._renderCanvas = function(e) {
                                var t = e.context,
                                    i = this.worldTransform,
                                    n = e.resolution,
                                    r = 16777215 !== this.tint,
                                    o = this._texture;
                                r && this._cachedTint !== this.tint && (this._cachedTint = this.tint, this._tintedTexture = h.default.getTintedTexture(this, this.tint));
                                var a = r ? this._tintedTexture : o.baseTexture.source;
                                this._canvasUvs || (this._canvasUvs = [0, 0, 0, 0, 0, 0, 0, 0]);
                                var s = this.vertices,
                                    l = this._canvasUvs,
                                    u = r ? 0 : o.frame.x,
                                    c = r ? 0 : o.frame.y,
                                    p = u + o.frame.width,
                                    f = c + o.frame.height;
                                l[0] = u, l[1] = u + this._leftWidth, l[2] = p - this._rightWidth, l[3] = p, l[4] = c, l[5] = c + this._topHeight, l[6] = f - this._bottomHeight, l[7] = f;
                                for (var d = 0; d < 8; d++) l[d] *= o.baseTexture.resolution;
                                t.globalAlpha = this.worldAlpha, e.setBlendMode(this.blendMode), e.roundPixels ? t.setTransform(i.a * n, i.b * n, i.c * n, i.d * n, i.tx * n | 0, i.ty * n | 0) : t.setTransform(i.a * n, i.b * n, i.c * n, i.d * n, i.tx * n, i.ty * n);
                                for (var _ = 0; _ < 3; _++)
                                    for (var m = 0; m < 3; m++) {
                                        var g = 2 * m + 8 * _,
                                            v = Math.max(1, l[m + 1] - l[m]),
                                            y = Math.max(1, l[_ + 5] - l[_ + 4]),
                                            b = Math.max(1, s[g + 10] - s[g]),
                                            x = Math.max(1, s[g + 11] - s[g + 1]);
                                        t.drawImage(a, l[m], l[_ + 4], v, y, s[g], s[g + 1], b, x)
                                    }
                            }, t.prototype._refresh = function() {
                                e.prototype._refresh.call(this);
                                var t = this.uvs,
                                    i = this._texture;
                                this._origWidth = i.orig.width, this._origHeight = i.orig.height;
                                var n = 1 / this._origWidth,
                                    r = 1 / this._origHeight;
                                t[0] = t[8] = t[16] = t[24] = 0, t[1] = t[3] = t[5] = t[7] = 0, t[6] = t[14] = t[22] = t[30] = 1, t[25] = t[27] = t[29] = t[31] = 1, t[2] = t[10] = t[18] = t[26] = n * this._leftWidth, t[4] = t[12] = t[20] = t[28] = 1 - n * this._rightWidth, t[9] = t[11] = t[13] = t[15] = r * this._topHeight, t[17] = t[19] = t[21] = t[23] = 1 - r * this._bottomHeight, this.updateHorizontalVertices(), this.updateVerticalVertices(), this.dirty++, this.multiplyUvs()
                            }, s(t, [{
                                key: "width",
                                get: function() {
                                    return this._width
                                },
                                set: function(e) {
                                    this._width = e, this._refresh()
                                }
                            }, {
                                key: "height",
                                get: function() {
                                    return this._height
                                },
                                set: function(e) {
                                    this._height = e, this._refresh()
                                }
                            }, {
                                key: "leftWidth",
                                get: function() {
                                    return this._leftWidth
                                },
                                set: function(e) {
                                    this._leftWidth = e, this._refresh()
                                }
                            }, {
                                key: "rightWidth",
                                get: function() {
                                    return this._rightWidth
                                },
                                set: function(e) {
                                    this._rightWidth = e, this._refresh()
                                }
                            }, {
                                key: "topHeight",
                                get: function() {
                                    return this._topHeight
                                },
                                set: function(e) {
                                    this._topHeight = e, this._refresh()
                                }
                            }, {
                                key: "bottomHeight",
                                get: function() {
                                    return this._bottomHeight
                                },
                                set: function(e) {
                                    this._bottomHeight = e, this._refresh()
                                }
                            }]), t
                        }(u.default);
                    i.default = f
                }, {
                    "../core/sprites/canvas/CanvasTinter": 104,
                    "./Plane": 168
                }],
                168: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function o(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var a = e("./Mesh"),
                        s = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(a),
                        l = function(e) {
                            function t(i, o, a) {
                                n(this, t);
                                var l = r(this, e.call(this, i));
                                return l._ready = !0, l.verticesX = o || 10, l.verticesY = a || 10, l.drawMode = s.default.DRAW_MODES.TRIANGLES, l.refresh(), l
                            }
                            return o(t, e), t.prototype._refresh = function() {
                                for (var e = this._texture, t = this.verticesX * this.verticesY, i = [], n = [], r = [], o = [], a = this.verticesX - 1, s = this.verticesY - 1, l = e.width / a, u = e.height / s, c = 0; c < t; c++) {
                                    var h = c % this.verticesX,
                                        p = c / this.verticesX | 0;
                                    i.push(h * l, p * u), r.push(h / a, p / s)
                                }
                                for (var f = a * s, d = 0; d < f; d++) {
                                    var _ = d % a,
                                        m = d / a | 0,
                                        g = m * this.verticesX + _,
                                        v = m * this.verticesX + _ + 1,
                                        y = (m + 1) * this.verticesX + _,
                                        b = (m + 1) * this.verticesX + _ + 1;
                                    o.push(g, v, y), o.push(v, b, y)
                                }
                                this.vertices = new Float32Array(i), this.uvs = new Float32Array(r), this.colors = new Float32Array(n), this.indices = new Uint16Array(o), this.dirty++, this.indexDirty++, this.multiplyUvs()
                            }, t.prototype._onTextureUpdate = function() {
                                s.default.prototype._onTextureUpdate.call(this), this._ready && this.refresh()
                            }, t
                        }(s.default);
                    i.default = l
                }, {
                    "./Mesh": 166
                }],
                169: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function o(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var a = e("./Mesh"),
                        s = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(a),
                        l = function(e) {
                            function t(i, o) {
                                n(this, t);
                                var a = r(this, e.call(this, i));
                                return a.points = o, a.vertices = new Float32Array(4 * o.length), a.uvs = new Float32Array(4 * o.length), a.colors = new Float32Array(2 * o.length), a.indices = new Uint16Array(2 * o.length), a.autoUpdate = !0, a.refresh(), a
                            }
                            return o(t, e), t.prototype._refresh = function() {
                                var e = this.points;
                                if (!(e.length < 1) && this._texture._uvs) {
                                    this.vertices.length / 4 !== e.length && (this.vertices = new Float32Array(4 * e.length), this.uvs = new Float32Array(4 * e.length), this.colors = new Float32Array(2 * e.length), this.indices = new Uint16Array(2 * e.length));
                                    var t = this.uvs,
                                        i = this.indices,
                                        n = this.colors;
                                    t[0] = 0, t[1] = 0, t[2] = 0, t[3] = 1, n[0] = 1, n[1] = 1, i[0] = 0, i[1] = 1;
                                    for (var r = e.length, o = 1; o < r; o++) {
                                        var a = 4 * o,
                                            s = o / (r - 1);
                                        t[a] = s, t[a + 1] = 0, t[a + 2] = s, t[a + 3] = 1, a = 2 * o, n[a] = 1, n[a + 1] = 1, a = 2 * o, i[a] = a, i[a + 1] = a + 1
                                    }
                                    this.dirty++, this.indexDirty++, this.multiplyUvs(), this.refreshVertices()
                                }
                            }, t.prototype.refreshVertices = function() {
                                var e = this.points;
                                if (!(e.length < 1))
                                    for (var t = e[0], i = void 0, n = 0, r = 0, o = this.vertices, a = e.length, s = 0; s < a; s++) {
                                        var l = e[s],
                                            u = 4 * s;
                                        i = s < e.length - 1 ? e[s + 1] : l, r = -(i.x - t.x), n = i.y - t.y;
                                        var c = 10 * (1 - s / (a - 1));
                                        c > 1 && (c = 1);
                                        var h = Math.sqrt(n * n + r * r),
                                            p = this._texture.height / 2;
                                        n /= h, r /= h, n *= p, r *= p, o[u] = l.x + n, o[u + 1] = l.y + r, o[u + 2] = l.x - n, o[u + 3] = l.y - r, t = l
                                    }
                            }, t.prototype.updateTransform = function() {
                                this.autoUpdate && this.refreshVertices(), this.containerUpdateTransform()
                            }, t
                        }(s.default);
                    i.default = l
                }, {
                    "./Mesh": 166
                }],
                170: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = e("../../core"),
                        o = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(r),
                        a = e("../Mesh"),
                        s = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(a),
                        l = function() {
                            function e(t) {
                                n(this, e), this.renderer = t
                            }
                            return e.prototype.render = function(e) {
                                var t = this.renderer,
                                    i = t.context,
                                    n = e.worldTransform,
                                    r = t.resolution;
                                t.roundPixels ? i.setTransform(n.a * r, n.b * r, n.c * r, n.d * r, n.tx * r | 0, n.ty * r | 0) : i.setTransform(n.a * r, n.b * r, n.c * r, n.d * r, n.tx * r, n.ty * r), t.context.globalAlpha = e.worldAlpha, t.setBlendMode(e.blendMode), e.drawMode === s.default.DRAW_MODES.TRIANGLE_MESH ? this._renderTriangleMesh(e) : this._renderTriangles(e)
                            }, e.prototype._renderTriangleMesh = function(e) {
                                for (var t = e.vertices.length / 2, i = 0; i < t - 2; i++) {
                                    var n = 2 * i;
                                    this._renderDrawTriangle(e, n, n + 2, n + 4)
                                }
                            }, e.prototype._renderTriangles = function(e) {
                                for (var t = e.indices, i = t.length, n = 0; n < i; n += 3) {
                                    var r = 2 * t[n],
                                        o = 2 * t[n + 1],
                                        a = 2 * t[n + 2];
                                    this._renderDrawTriangle(e, r, o, a)
                                }
                            }, e.prototype._renderDrawTriangle = function(e, t, i, n) {
                                var r = this.renderer.context,
                                    o = e.uvs,
                                    a = e.vertices,
                                    s = e._texture;
                                if (s.valid) {
                                    var l = s.baseTexture,
                                        u = l.source,
                                        c = l.width,
                                        h = l.height,
                                        p = void 0,
                                        f = void 0,
                                        d = void 0,
                                        _ = void 0,
                                        m = void 0,
                                        g = void 0;
                                    if (e.uploadUvTransform) {
                                        var v = e._uvTransform.mapCoord;
                                        p = (o[t] * v.a + o[t + 1] * v.c + v.tx) * l.width, f = (o[i] * v.a + o[i + 1] * v.c + v.tx) * l.width, d = (o[n] * v.a + o[n + 1] * v.c + v.tx) * l.width, _ = (o[t] * v.b + o[t + 1] * v.d + v.ty) * l.height, m = (o[i] * v.b + o[i + 1] * v.d + v.ty) * l.height, g = (o[n] * v.b + o[n + 1] * v.d + v.ty) * l.height
                                    } else p = o[t] * l.width, f = o[i] * l.width, d = o[n] * l.width, _ = o[t + 1] * l.height, m = o[i + 1] * l.height, g = o[n + 1] * l.height;
                                    var y = a[t],
                                        b = a[i],
                                        x = a[n],
                                        S = a[t + 1],
                                        T = a[i + 1],
                                        w = a[n + 1],
                                        E = e.canvasPadding / this.renderer.resolution;
                                    if (E > 0) {
                                        var P = E / Math.abs(e.worldTransform.a),
                                            R = E / Math.abs(e.worldTransform.d),
                                            O = (y + b + x) / 3,
                                            A = (S + T + w) / 3,
                                            I = y - O,
                                            C = S - A,
                                            M = Math.sqrt(I * I + C * C);
                                        y = O + I / M * (M + P), S = A + C / M * (M + R), I = b - O, C = T - A, M = Math.sqrt(I * I + C * C), b = O + I / M * (M + P), T = A + C / M * (M + R), I = x - O, C = w - A, M = Math.sqrt(I * I + C * C), x = O + I / M * (M + P), w = A + C / M * (M + R)
                                    }
                                    r.save(), r.beginPath(), r.moveTo(y, S), r.lineTo(b, T), r.lineTo(x, w), r.closePath(), r.clip();
                                    var D = p * m + _ * d + f * g - m * d - _ * f - p * g,
                                        N = y * m + _ * x + b * g - m * x - _ * b - y * g,
                                        L = p * b + y * d + f * x - b * d - y * f - p * x,
                                        k = p * m * x + _ * b * d + y * f * g - y * m * d - _ * f * x - p * b * g,
                                        F = S * m + _ * w + T * g - m * w - _ * T - S * g,
                                        B = p * T + S * d + f * w - T * d - S * f - p * w,
                                        G = p * m * w + _ * T * d + S * f * g - S * m * d - _ * f * w - p * T * g;
                                    r.transform(N / D, F / D, L / D, B / D, k / D, G / D), r.drawImage(u, 0, 0, c * l.resolution, h * l.resolution, 0, 0, c, h), r.restore(), this.renderer.invalidateBlendMode()
                                }
                            }, e.prototype.renderMeshFlat = function(e) {
                                var t = this.renderer.context,
                                    i = e.vertices,
                                    n = i.length / 2;
                                t.beginPath();
                                for (var r = 1; r < n - 2; ++r) {
                                    var o = 2 * r,
                                        a = i[o],
                                        s = i[o + 1],
                                        l = i[o + 2],
                                        u = i[o + 3],
                                        c = i[o + 4],
                                        h = i[o + 5];
                                    t.moveTo(a, s), t.lineTo(l, u), t.lineTo(c, h)
                                }
                                t.fillStyle = "#FF0000", t.fill(), t.closePath()
                            }, e.prototype.destroy = function() {
                                this.renderer = null
                            }, e
                        }();
                    i.default = l, o.CanvasRenderer.registerPlugin("mesh", l)
                }, {
                    "../../core": 65,
                    "../Mesh": 166
                }],
                171: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }
                    i.__esModule = !0;
                    var r = e("./Mesh");
                    Object.defineProperty(i, "Mesh", {
                        enumerable: !0,
                        get: function() {
                            return n(r).default
                        }
                    });
                    var o = e("./webgl/MeshRenderer");
                    Object.defineProperty(i, "MeshRenderer", {
                        enumerable: !0,
                        get: function() {
                            return n(o).default
                        }
                    });
                    var a = e("./canvas/CanvasMeshRenderer");
                    Object.defineProperty(i, "CanvasMeshRenderer", {
                        enumerable: !0,
                        get: function() {
                            return n(a).default
                        }
                    });
                    var s = e("./Plane");
                    Object.defineProperty(i, "Plane", {
                        enumerable: !0,
                        get: function() {
                            return n(s).default
                        }
                    });
                    var l = e("./NineSlicePlane");
                    Object.defineProperty(i, "NineSlicePlane", {
                        enumerable: !0,
                        get: function() {
                            return n(l).default
                        }
                    });
                    var u = e("./Rope");
                    Object.defineProperty(i, "Rope", {
                        enumerable: !0,
                        get: function() {
                            return n(u).default
                        }
                    })
                }, {
                    "./Mesh": 166,
                    "./NineSlicePlane": 167,
                    "./Plane": 168,
                    "./Rope": 169,
                    "./canvas/CanvasMeshRenderer": 170,
                    "./webgl/MeshRenderer": 172
                }],
                172: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function a(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var s = e("../../core"),
                        l = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(s),
                        u = e("pixi-gl-core"),
                        c = n(u),
                        h = e("../Mesh"),
                        p = n(h),
                        f = (e("path"), l.Matrix.IDENTITY),
                        d = function(e) {
                            function t(i) {
                                r(this, t);
                                var n = o(this, e.call(this, i));
                                return n.shader = null, n
                            }
                            return a(t, e), t.prototype.onContextChange = function() {
                                var e = this.renderer.gl;
                                this.shader = new l.Shader(e, "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n    gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n    vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\n}\n", "varying vec2 vTextureCoord;\nuniform vec4 uColor;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n    gl_FragColor = texture2D(uSampler, vTextureCoord) * uColor;\n}\n")
                            }, t.prototype.render = function(e) {
                                var t = this.renderer,
                                    i = t.gl,
                                    n = e._texture;
                                if (n.valid) {
                                    var r = e._glDatas[t.CONTEXT_UID];
                                    r || (t.bindVao(null), r = {
                                        shader: this.shader,
                                        vertexBuffer: c.default.GLBuffer.createVertexBuffer(i, e.vertices, i.STREAM_DRAW),
                                        uvBuffer: c.default.GLBuffer.createVertexBuffer(i, e.uvs, i.STREAM_DRAW),
                                        indexBuffer: c.default.GLBuffer.createIndexBuffer(i, e.indices, i.STATIC_DRAW),
                                        vao: null,
                                        dirty: e.dirty,
                                        indexDirty: e.indexDirty,
                                        vertexDirty: e.vertexDirty
                                    }, r.vao = new c.default.VertexArrayObject(i).addIndex(r.indexBuffer).addAttribute(r.vertexBuffer, r.shader.attributes.aVertexPosition, i.FLOAT, !1, 8, 0).addAttribute(r.uvBuffer, r.shader.attributes.aTextureCoord, i.FLOAT, !1, 8, 0), e._glDatas[t.CONTEXT_UID] = r), t.bindVao(r.vao), e.dirty !== r.dirty && (r.dirty = e.dirty, r.uvBuffer.upload(e.uvs)), e.indexDirty !== r.indexDirty && (r.indexDirty = e.indexDirty, r.indexBuffer.upload(e.indices)), e.vertexDirty !== r.vertexDirty && (r.vertexDirty = e.vertexDirty, r.vertexBuffer.upload(e.vertices)), t.bindShader(r.shader), r.shader.uniforms.uSampler = t.bindTexture(n), t.state.setBlendMode(l.utils.correctBlendMode(e.blendMode, n.baseTexture.premultipliedAlpha)), r.shader.uniforms.uTransform && (e.uploadUvTransform ? r.shader.uniforms.uTransform = e._uvTransform.mapCoord.toArray(!0) : r.shader.uniforms.uTransform = f.toArray(!0)), r.shader.uniforms.translationMatrix = e.worldTransform.toArray(!0), r.shader.uniforms.uColor = l.utils.premultiplyRgba(e.tintRgb, e.worldAlpha, r.shader.uniforms.uColor, n.baseTexture.premultipliedAlpha);
                                    var o = e.drawMode === p.default.DRAW_MODES.TRIANGLE_MESH ? i.TRIANGLE_STRIP : i.TRIANGLES;
                                    r.vao.draw(o, e.indices.length, 0)
                                }
                            }, t
                        }(l.ObjectRenderer);
                    i.default = d, l.WebGLRenderer.registerPlugin("mesh", d)
                }, {
                    "../../core": 65,
                    "../Mesh": 166,
                    path: 8,
                    "pixi-gl-core": 15
                }],
                173: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function o(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var a = function() {
                            function e(e, t) {
                                for (var i = 0; i < t.length; i++) {
                                    var n = t[i];
                                    n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
                                }
                            }
                            return function(t, i, n) {
                                return i && e(t.prototype, i), n && e(t, n), t
                            }
                        }(),
                        s = e("../core"),
                        l = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(s),
                        u = e("../core/utils"),
                        c = function(e) {
                            function t() {
                                var i = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1500,
                                    o = arguments[1],
                                    a = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 16384,
                                    s = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];
                                n(this, t);
                                var u = r(this, e.call(this));
                                return a > 16384 && (a = 16384), a > i && (a = i), u._properties = [!1, !0, !1, !1, !1], u._maxSize = i, u._batchSize = a, u._glBuffers = {}, u._bufferUpdateIDs = [], u._updateID = 0, u.interactiveChildren = !1, u.blendMode = l.BLEND_MODES.NORMAL, u.autoResize = s, u.roundPixels = !0, u.baseTexture = null, u.setProperties(o), u._tint = 0, u.tintRgb = new Float32Array(4), u.tint = 16777215, u
                            }
                            return o(t, e), t.prototype.setProperties = function(e) {
                                e && (this._properties[0] = "vertices" in e || "scale" in e ? !!e.vertices || !!e.scale : this._properties[0], this._properties[1] = "position" in e ? !!e.position : this._properties[1], this._properties[2] = "rotation" in e ? !!e.rotation : this._properties[2], this._properties[3] = "uvs" in e ? !!e.uvs : this._properties[3], this._properties[4] = "tint" in e || "alpha" in e ? !!e.tint || !!e.alpha : this._properties[4])
                            }, t.prototype.updateTransform = function() {
                                this.displayObjectUpdateTransform()
                            }, t.prototype.renderWebGL = function(e) {
                                var t = this;
                                this.visible && !(this.worldAlpha <= 0) && this.children.length && this.renderable && (this.baseTexture || (this.baseTexture = this.children[0]._texture.baseTexture, this.baseTexture.hasLoaded || this.baseTexture.once("update", function() {
                                    return t.onChildrenChange(0)
                                })), e.setObjectRenderer(e.plugins.particle), e.plugins.particle.render(this))
                            }, t.prototype.onChildrenChange = function(e) {
                                for (var t = Math.floor(e / this._batchSize); this._bufferUpdateIDs.length < t;) this._bufferUpdateIDs.push(0);
                                this._bufferUpdateIDs[t] = ++this._updateID
                            }, t.prototype.renderCanvas = function(e) {
                                if (this.visible && !(this.worldAlpha <= 0) && this.children.length && this.renderable) {
                                    var t = e.context,
                                        i = this.worldTransform,
                                        n = !0,
                                        r = 0,
                                        o = 0,
                                        a = 0,
                                        s = 0;
                                    e.setBlendMode(this.blendMode), t.globalAlpha = this.worldAlpha, this.displayObjectUpdateTransform();
                                    for (var l = 0; l < this.children.length; ++l) {
                                        var u = this.children[l];
                                        if (u.visible) {
                                            var c = u._texture.frame;
                                            if (t.globalAlpha = this.worldAlpha * u.alpha, u.rotation % (2 * Math.PI) == 0) n && (t.setTransform(i.a, i.b, i.c, i.d, i.tx * e.resolution, i.ty * e.resolution), n = !1), r = u.anchor.x * (-c.width * u.scale.x) + u.position.x + .5, o = u.anchor.y * (-c.height * u.scale.y) + u.position.y + .5, a = c.width * u.scale.x, s = c.height * u.scale.y;
                                            else {
                                                n || (n = !0), u.displayObjectUpdateTransform();
                                                var h = u.worldTransform;
                                                e.roundPixels ? t.setTransform(h.a, h.b, h.c, h.d, h.tx * e.resolution | 0, h.ty * e.resolution | 0) : t.setTransform(h.a, h.b, h.c, h.d, h.tx * e.resolution, h.ty * e.resolution), r = u.anchor.x * -c.width + .5, o = u.anchor.y * -c.height + .5, a = c.width, s = c.height
                                            }
                                            var p = u._texture.baseTexture.resolution;
                                            t.drawImage(u._texture.baseTexture.source, c.x * p, c.y * p, c.width * p, c.height * p, r * e.resolution, o * e.resolution, a * e.resolution, s * e.resolution)
                                        }
                                    }
                                }
                            }, t.prototype.destroy = function(t) {
                                if (e.prototype.destroy.call(this, t), this._buffers)
                                    for (var i = 0; i < this._buffers.length; ++i) this._buffers[i].destroy();
                                this._properties = null, this._buffers = null, this._bufferUpdateIDs = null
                            }, a(t, [{
                                key: "tint",
                                get: function() {
                                    return this._tint
                                },
                                set: function(e) {
                                    this._tint = e, (0, u.hex2rgb)(e, this.tintRgb)
                                }
                            }]), t
                        }(l.Container);
                    i.default = c
                }, {
                    "../core": 65,
                    "../core/utils": 125
                }],
                174: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }
                    i.__esModule = !0;
                    var r = e("./ParticleContainer");
                    Object.defineProperty(i, "ParticleContainer", {
                        enumerable: !0,
                        get: function() {
                            return n(r).default
                        }
                    });
                    var o = e("./webgl/ParticleRenderer");
                    Object.defineProperty(i, "ParticleRenderer", {
                        enumerable: !0,
                        get: function() {
                            return n(o).default
                        }
                    })
                }, {
                    "./ParticleContainer": 173,
                    "./webgl/ParticleRenderer": 176
                }],
                175: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var o = e("pixi-gl-core"),
                        a = n(o),
                        s = e("../../core/utils/createIndicesForQuads"),
                        l = n(s),
                        u = function() {
                            function e(t, i, n, o) {
                                r(this, e), this.gl = t, this.size = o, this.dynamicProperties = [], this.staticProperties = [];
                                for (var a = 0; a < i.length; ++a) {
                                    var s = i[a];
                                    s = {
                                        attribute: s.attribute,
                                        size: s.size,
                                        uploadFunction: s.uploadFunction,
                                        unsignedByte: s.unsignedByte,
                                        offset: s.offset
                                    }, n[a] ? this.dynamicProperties.push(s) : this.staticProperties.push(s)
                                }
                                this.staticStride = 0, this.staticBuffer = null, this.staticData = null, this.staticDataUint32 = null, this.dynamicStride = 0, this.dynamicBuffer = null, this.dynamicData = null, this.dynamicDataUint32 = null, this._updateID = 0, this.initBuffers()
                            }
                            return e.prototype.initBuffers = function() {
                                var e = this.gl,
                                    t = 0;
                                this.indices = (0, l.default)(this.size), this.indexBuffer = a.default.GLBuffer.createIndexBuffer(e, this.indices, e.STATIC_DRAW), this.dynamicStride = 0;
                                for (var i = 0; i < this.dynamicProperties.length; ++i) {
                                    var n = this.dynamicProperties[i];
                                    n.offset = t, t += n.size, this.dynamicStride += n.size
                                }
                                var r = new ArrayBuffer(this.size * this.dynamicStride * 4 * 4);
                                this.dynamicData = new Float32Array(r), this.dynamicDataUint32 = new Uint32Array(r), this.dynamicBuffer = a.default.GLBuffer.createVertexBuffer(e, r, e.STREAM_DRAW);
                                var o = 0;
                                this.staticStride = 0;
                                for (var s = 0; s < this.staticProperties.length; ++s) {
                                    var u = this.staticProperties[s];
                                    u.offset = o, o += u.size, this.staticStride += u.size
                                }
                                var c = new ArrayBuffer(this.size * this.staticStride * 4 * 4);
                                this.staticData = new Float32Array(c), this.staticDataUint32 = new Uint32Array(c), this.staticBuffer = a.default.GLBuffer.createVertexBuffer(e, c, e.STATIC_DRAW), this.vao = new a.default.VertexArrayObject(e).addIndex(this.indexBuffer);
                                for (var h = 0; h < this.dynamicProperties.length; ++h) {
                                    var p = this.dynamicProperties[h];
                                    p.unsignedByte ? this.vao.addAttribute(this.dynamicBuffer, p.attribute, e.UNSIGNED_BYTE, !0, 4 * this.dynamicStride, 4 * p.offset) : this.vao.addAttribute(this.dynamicBuffer, p.attribute, e.FLOAT, !1, 4 * this.dynamicStride, 4 * p.offset)
                                }
                                for (var f = 0; f < this.staticProperties.length; ++f) {
                                    var d = this.staticProperties[f];
                                    d.unsignedByte ? this.vao.addAttribute(this.staticBuffer, d.attribute, e.UNSIGNED_BYTE, !0, 4 * this.staticStride, 4 * d.offset) : this.vao.addAttribute(this.staticBuffer, d.attribute, e.FLOAT, !1, 4 * this.staticStride, 4 * d.offset)
                                }
                            }, e.prototype.uploadDynamic = function(e, t, i) {
                                for (var n = 0; n < this.dynamicProperties.length; n++) {
                                    var r = this.dynamicProperties[n];
                                    r.uploadFunction(e, t, i, r.unsignedByte ? this.dynamicDataUint32 : this.dynamicData, this.dynamicStride, r.offset)
                                }
                                this.dynamicBuffer.upload()
                            }, e.prototype.uploadStatic = function(e, t, i) {
                                for (var n = 0; n < this.staticProperties.length; n++) {
                                    var r = this.staticProperties[n];
                                    r.uploadFunction(e, t, i, r.unsignedByte ? this.staticDataUint32 : this.staticData, this.staticStride, r.offset)
                                }
                                this.staticBuffer.upload()
                            }, e.prototype.destroy = function() {
                                this.dynamicProperties = null, this.dynamicBuffer.destroy(), this.dynamicBuffer = null, this.dynamicData = null, this.dynamicDataUint32 = null, this.staticProperties = null, this.staticBuffer.destroy(), this.staticBuffer = null, this.staticData = null, this.staticDataUint32 = null
                            }, e
                        }();
                    i.default = u
                }, {
                    "../../core/utils/createIndicesForQuads": 123,
                    "pixi-gl-core": 15
                }],
                176: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }

                    function r(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function a(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var s = e("../../core"),
                        l = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(s),
                        u = e("./ParticleShader"),
                        c = n(u),
                        h = e("./ParticleBuffer"),
                        p = n(h),
                        f = e("../../core/utils"),
                        d = function(e) {
                            function t(i) {
                                r(this, t);
                                var n = o(this, e.call(this, i));
                                return n.shader = null, n.indexBuffer = null, n.properties = null, n.tempMatrix = new l.Matrix, n.CONTEXT_UID = 0, n
                            }
                            return a(t, e), t.prototype.onContextChange = function() {
                                var e = this.renderer.gl;
                                this.CONTEXT_UID = this.renderer.CONTEXT_UID, this.shader = new c.default(e), this.properties = [{
                                    attribute: this.shader.attributes.aVertexPosition,
                                    size: 2,
                                    uploadFunction: this.uploadVertices,
                                    offset: 0
                                }, {
                                    attribute: this.shader.attributes.aPositionCoord,
                                    size: 2,
                                    uploadFunction: this.uploadPosition,
                                    offset: 0
                                }, {
                                    attribute: this.shader.attributes.aRotation,
                                    size: 1,
                                    uploadFunction: this.uploadRotation,
                                    offset: 0
                                }, {
                                    attribute: this.shader.attributes.aTextureCoord,
                                    size: 2,
                                    uploadFunction: this.uploadUvs,
                                    offset: 0
                                }, {
                                    attribute: this.shader.attributes.aColor,
                                    size: 1,
                                    unsignedByte: !0,
                                    uploadFunction: this.uploadTint,
                                    offset: 0
                                }]
                            }, t.prototype.start = function() {
                                this.renderer.bindShader(this.shader)
                            }, t.prototype.render = function(e) {
                                var t = e.children,
                                    i = e._maxSize,
                                    n = e._batchSize,
                                    r = this.renderer,
                                    o = t.length;
                                if (0 !== o) {
                                    o > i && (o = i);
                                    var a = e._glBuffers[r.CONTEXT_UID];
                                    a || (a = e._glBuffers[r.CONTEXT_UID] = this.generateBuffers(e));
                                    var s = t[0]._texture.baseTexture;
                                    this.renderer.setBlendMode(l.utils.correctBlendMode(e.blendMode, s.premultipliedAlpha));
                                    var u = r.gl,
                                        c = e.worldTransform.copy(this.tempMatrix);
                                    c.prepend(r._activeRenderTarget.projectionMatrix), this.shader.uniforms.projectionMatrix = c.toArray(!0), this.shader.uniforms.uColor = l.utils.premultiplyRgba(e.tintRgb, e.worldAlpha, this.shader.uniforms.uColor, s.premultipliedAlpha), this.shader.uniforms.uSampler = r.bindTexture(s);
                                    for (var h = !1, p = 0, f = 0; p < o; p += n, f += 1) {
                                        var d = o - p;
                                        if (d > n && (d = n), f >= a.length) {
                                            if (!e.autoResize) break;
                                            a.push(this._generateOneMoreBuffer(e))
                                        }
                                        var _ = a[f];
                                        _.uploadDynamic(t, p, d);
                                        var m = e._bufferUpdateIDs[f] || 0;
                                        h = h || _._updateID < m, h && (_._updateID = e._updateID, _.uploadStatic(t, p, d)), r.bindVao(_.vao), _.vao.draw(u.TRIANGLES, 6 * d)
                                    }
                                }
                            }, t.prototype.generateBuffers = function(e) {
                                for (var t = this.renderer.gl, i = [], n = e._maxSize, r = e._batchSize, o = e._properties, a = 0; a < n; a += r) i.push(new p.default(t, this.properties, o, r));
                                return i
                            }, t.prototype._generateOneMoreBuffer = function(e) {
                                var t = this.renderer.gl,
                                    i = e._batchSize,
                                    n = e._properties;
                                return new p.default(t, this.properties, n, i)
                            }, t.prototype.uploadVertices = function(e, t, i, n, r, o) {
                                for (var a = 0, s = 0, l = 0, u = 0, c = 0; c < i; ++c) {
                                    var h = e[t + c],
                                        p = h._texture,
                                        f = h.scale.x,
                                        d = h.scale.y,
                                        _ = p.trim,
                                        m = p.orig;
                                    _ ? (s = _.x - h.anchor.x * m.width, a = s + _.width, u = _.y - h.anchor.y * m.height, l = u + _.height) : (a = m.width * (1 - h.anchor.x), s = m.width * -h.anchor.x, l = m.height * (1 - h.anchor.y), u = m.height * -h.anchor.y), n[o] = s * f, n[o + 1] = u * d, n[o + r] = a * f, n[o + r + 1] = u * d, n[o + 2 * r] = a * f, n[o + 2 * r + 1] = l * d, n[o + 3 * r] = s * f, n[o + 3 * r + 1] = l * d, o += 4 * r
                                }
                            }, t.prototype.uploadPosition = function(e, t, i, n, r, o) {
                                for (var a = 0; a < i; a++) {
                                    var s = e[t + a].position;
                                    n[o] = s.x, n[o + 1] = s.y, n[o + r] = s.x, n[o + r + 1] = s.y, n[o + 2 * r] = s.x, n[o + 2 * r + 1] = s.y, n[o + 3 * r] = s.x, n[o + 3 * r + 1] = s.y, o += 4 * r
                                }
                            }, t.prototype.uploadRotation = function(e, t, i, n, r, o) {
                                for (var a = 0; a < i; a++) {
                                    var s = e[t + a].rotation;
                                    n[o] = s, n[o + r] = s, n[o + 2 * r] = s, n[o + 3 * r] = s, o += 4 * r
                                }
                            }, t.prototype.uploadUvs = function(e, t, i, n, r, o) {
                                for (var a = 0; a < i; ++a) {
                                    var s = e[t + a]._texture._uvs;
                                    s ? (n[o] = s.x0, n[o + 1] = s.y0, n[o + r] = s.x1, n[o + r + 1] = s.y1, n[o + 2 * r] = s.x2, n[o + 2 * r + 1] = s.y2, n[o + 3 * r] = s.x3, n[o + 3 * r + 1] = s.y3, o += 4 * r) : (n[o] = 0, n[o + 1] = 0, n[o + r] = 0, n[o + r + 1] = 0, n[o + 2 * r] = 0, n[o + 2 * r + 1] = 0, n[o + 3 * r] = 0, n[o + 3 * r + 1] = 0, o += 4 * r)
                                }
                            }, t.prototype.uploadTint = function(e, t, i, n, r, o) {
                                for (var a = 0; a < i; ++a) {
                                    var s = e[t + a],
                                        l = s._texture.baseTexture.premultipliedAlpha,
                                        u = s.alpha,
                                        c = u < 1 && l ? (0, f.premultiplyTint)(s._tintRGB, u) : s._tintRGB + (255 * u << 24);
                                    n[o] = c, n[o + r] = c, n[o + 2 * r] = c, n[o + 3 * r] = c, o += 4 * r
                                }
                            }, t.prototype.destroy = function() {
                                this.renderer.gl && this.renderer.gl.deleteBuffer(this.indexBuffer), e.prototype.destroy.call(this), this.shader.destroy(), this.indices = null, this.tempMatrix = null
                            }, t
                        }(l.ObjectRenderer);
                    i.default = d, l.WebGLRenderer.registerPlugin("particle", d)
                }, {
                    "../../core": 65,
                    "../../core/utils": 125,
                    "./ParticleBuffer": 175,
                    "./ParticleShader": 177
                }],
                177: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function o(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }
                    i.__esModule = !0;
                    var a = e("../../core/Shader"),
                        s = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(a),
                        l = function(e) {
                            function t(i) {
                                return n(this, t), r(this, e.call(this, i, ["attribute vec2 aVertexPosition;", "attribute vec2 aTextureCoord;", "attribute vec4 aColor;", "attribute vec2 aPositionCoord;", "attribute float aRotation;", "uniform mat3 projectionMatrix;", "uniform vec4 uColor;", "varying vec2 vTextureCoord;", "varying vec4 vColor;", "void main(void){", "   float x = (aVertexPosition.x) * cos(aRotation) - (aVertexPosition.y) * sin(aRotation);", "   float y = (aVertexPosition.x) * sin(aRotation) + (aVertexPosition.y) * cos(aRotation);", "   vec2 v = vec2(x, y);", "   v = v + aPositionCoord;", "   gl_Position = vec4((projectionMatrix * vec3(v, 1.0)).xy, 0.0, 1.0);", "   vTextureCoord = aTextureCoord;", "   vColor = aColor * uColor;", "}"].join("\n"), ["varying vec2 vTextureCoord;", "varying vec4 vColor;", "uniform sampler2D uSampler;", "void main(void){", "  vec4 color = texture2D(uSampler, vTextureCoord) * vColor;", "  gl_FragColor = color;", "}"].join("\n")))
                            }
                            return o(t, e), t
                        }(s.default);
                    i.default = l
                }, {
                    "../../core/Shader": 44
                }],
                178: [function(e, t, i) {
                    "use strict";
                    Math.sign || (Math.sign = function(e) {
                        return e = Number(e), 0 === e || isNaN(e) ? e : e > 0 ? 1 : -1
                    })
                }, {}],
                179: [function(e, t, i) {
                    "use strict";
                    Number.isInteger || (Number.isInteger = function(e) {
                        return "number" == typeof e && isFinite(e) && Math.floor(e) === e
                    })
                }, {}],
                180: [function(e, t, i) {
                    "use strict";
                    var n = e("object-assign"),
                        r = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(n);
                    Object.assign || (Object.assign = r.default)
                }, {
                    "object-assign": 6
                }],
                181: [function(e, t, i) {
                    "use strict";
                    e("./Object.assign"), e("./requestAnimationFrame"), e("./Math.sign"), e("./Number.isInteger"), window.ArrayBuffer || (window.ArrayBuffer = Array), window.Float32Array || (window.Float32Array = Array), window.Uint32Array || (window.Uint32Array = Array), window.Uint16Array || (window.Uint16Array = Array)
                }, {
                    "./Math.sign": 178,
                    "./Number.isInteger": 179,
                    "./Object.assign": 180,
                    "./requestAnimationFrame": 182
                }],
                182: [function(e, t, i) {
                    (function(e) {
                        "use strict";
                        if (Date.now && Date.prototype.getTime || (Date.now = function() {
                                return (new Date).getTime()
                            }), !e.performance || !e.performance.now) {
                            var t = Date.now();
                            e.performance || (e.performance = {}), e.performance.now = function() {
                                return Date.now() - t
                            }
                        }
                        for (var i = Date.now(), n = ["ms", "moz", "webkit", "o"], r = 0; r < n.length && !e.requestAnimationFrame; ++r) {
                            var o = n[r];
                            e.requestAnimationFrame = e[o + "RequestAnimationFrame"], e.cancelAnimationFrame = e[o + "CancelAnimationFrame"] || e[o + "CancelRequestAnimationFrame"]
                        }
                        e.requestAnimationFrame || (e.requestAnimationFrame = function(e) {
                            if ("function" != typeof e) throw new TypeError(e + "is not a function");
                            var t = Date.now(),
                                n = 16 + i - t;
                            return n < 0 && (n = 0), i = t, setTimeout(function() {
                                i = Date.now(), e(performance.now())
                            }, n)
                        }), e.cancelAnimationFrame || (e.cancelAnimationFrame = function(e) {
                            return clearTimeout(e)
                        })
                    }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {})
                }, {}],
                183: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(e, t) {
                        var i = !1;
                        if (e && e._textures && e._textures.length)
                            for (var n = 0; n < e._textures.length; n++)
                                if (e._textures[n] instanceof p.Texture) {
                                    var r = e._textures[n].baseTexture; - 1 === t.indexOf(r) && (t.push(r), i = !0)
                                }
                        return i
                    }

                    function o(e, t) {
                        return e instanceof p.BaseTexture && (-1 === t.indexOf(e) && t.push(e), !0)
                    }

                    function a(e, t) {
                        if (e._texture && e._texture instanceof p.Texture) {
                            var i = e._texture.baseTexture;
                            return -1 === t.indexOf(i) && t.push(i), !0
                        }
                        return !1
                    }

                    function s(e, t) {
                        return t instanceof p.Text && (t.updateText(!0), !0)
                    }

                    function l(e, t) {
                        if (t instanceof p.TextStyle) {
                            var i = t.toFontString();
                            return p.TextMetrics.measureFont(i), !0
                        }
                        return !1
                    }

                    function u(e, t) {
                        if (e instanceof p.Text) {
                            -1 === t.indexOf(e.style) && t.push(e.style), -1 === t.indexOf(e) && t.push(e);
                            var i = e._texture.baseTexture;
                            return -1 === t.indexOf(i) && t.push(i), !0
                        }
                        return !1
                    }

                    function c(e, t) {
                        return e instanceof p.TextStyle && (-1 === t.indexOf(e) && t.push(e), !0)
                    }
                    i.__esModule = !0;
                    var h = e("../core"),
                        p = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(h),
                        f = e("./limiters/CountLimiter"),
                        d = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(f),
                        _ = p.ticker.shared;
                    p.settings.UPLOADS_PER_FRAME = 4;
                    var m = function() {
                        function e(t) {
                            var i = this;
                            n(this, e), this.limiter = new d.default(p.settings.UPLOADS_PER_FRAME), this.renderer = t, this.uploadHookHelper = null, this.queue = [], this.addHooks = [], this.uploadHooks = [], this.completes = [], this.ticking = !1, this.delayedTick = function() {
                                i.queue && i.prepareItems()
                            }, this.registerFindHook(u), this.registerFindHook(c), this.registerFindHook(r), this.registerFindHook(o), this.registerFindHook(a), this.registerUploadHook(s), this.registerUploadHook(l)
                        }
                        return e.prototype.upload = function(e, t) {
                            "function" == typeof e && (t = e, e = null), e && this.add(e), this.queue.length ? (t && this.completes.push(t), this.ticking || (this.ticking = !0, _.addOnce(this.tick, this, p.UPDATE_PRIORITY.UTILITY))) : t && t()
                        }, e.prototype.tick = function() {
                            setTimeout(this.delayedTick, 0)
                        }, e.prototype.prepareItems = function() {
                            for (this.limiter.beginFrame(); this.queue.length && this.limiter.allowedToUpload();) {
                                var e = this.queue[0],
                                    t = !1;
                                if (e && !e._destroyed)
                                    for (var i = 0, n = this.uploadHooks.length; i < n; i++)
                                        if (this.uploadHooks[i](this.uploadHookHelper, e)) {
                                            this.queue.shift(), t = !0;
                                            break
                                        }
                                t || this.queue.shift()
                            }
                            if (this.queue.length) _.addOnce(this.tick, this, p.UPDATE_PRIORITY.UTILITY);
                            else {
                                this.ticking = !1;
                                var r = this.completes.slice(0);
                                this.completes.length = 0;
                                for (var o = 0, a = r.length; o < a; o++) r[o]()
                            }
                        }, e.prototype.registerFindHook = function(e) {
                            return e && this.addHooks.push(e), this
                        }, e.prototype.registerUploadHook = function(e) {
                            return e && this.uploadHooks.push(e), this
                        }, e.prototype.add = function(e) {
                            for (var t = 0, i = this.addHooks.length; t < i && !this.addHooks[t](e, this.queue); t++);
                            if (e instanceof p.Container)
                                for (var n = e.children.length - 1; n >= 0; n--) this.add(e.children[n]);
                            return this
                        }, e.prototype.destroy = function() {
                            this.ticking && _.remove(this.tick, this), this.ticking = !1, this.addHooks = null, this.uploadHooks = null, this.renderer = null, this.completes = null, this.queue = null, this.limiter = null, this.uploadHookHelper = null
                        }, e
                    }();
                    i.default = m
                }, {
                    "../core": 65,
                    "./limiters/CountLimiter": 186
                }],
                184: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function o(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }

                    function a(e, t) {
                        if (t instanceof l.BaseTexture) {
                            var i = t.source,
                                n = 0 === i.width ? e.canvas.width : Math.min(e.canvas.width, i.width),
                                r = 0 === i.height ? e.canvas.height : Math.min(e.canvas.height, i.height);
                            return e.ctx.drawImage(i, 0, 0, n, r, 0, 0, e.canvas.width, e.canvas.height), !0
                        }
                        return !1
                    }
                    i.__esModule = !0;
                    var s = e("../../core"),
                        l = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(s),
                        u = e("../BasePrepare"),
                        c = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(u),
                        h = 16,
                        p = function(e) {
                            function t(i) {
                                n(this, t);
                                var o = r(this, e.call(this, i));
                                return o.uploadHookHelper = o, o.canvas = document.createElement("canvas"), o.canvas.width = h, o.canvas.height = h, o.ctx = o.canvas.getContext("2d"), o.registerUploadHook(a), o
                            }
                            return o(t, e), t.prototype.destroy = function() {
                                e.prototype.destroy.call(this), this.ctx = null, this.canvas = null
                            }, t
                        }(c.default);
                    i.default = p, l.CanvasRenderer.registerPlugin("prepare", p)
                }, {
                    "../../core": 65,
                    "../BasePrepare": 183
                }],
                185: [function(e, t, i) {
                    "use strict";

                    function n(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }
                    i.__esModule = !0;
                    var r = e("./webgl/WebGLPrepare");
                    Object.defineProperty(i, "webgl", {
                        enumerable: !0,
                        get: function() {
                            return n(r).default
                        }
                    });
                    var o = e("./canvas/CanvasPrepare");
                    Object.defineProperty(i, "canvas", {
                        enumerable: !0,
                        get: function() {
                            return n(o).default
                        }
                    });
                    var a = e("./BasePrepare");
                    Object.defineProperty(i, "BasePrepare", {
                        enumerable: !0,
                        get: function() {
                            return n(a).default
                        }
                    });
                    var s = e("./limiters/CountLimiter");
                    Object.defineProperty(i, "CountLimiter", {
                        enumerable: !0,
                        get: function() {
                            return n(s).default
                        }
                    });
                    var l = e("./limiters/TimeLimiter");
                    Object.defineProperty(i, "TimeLimiter", {
                        enumerable: !0,
                        get: function() {
                            return n(l).default
                        }
                    })
                }, {
                    "./BasePrepare": 183,
                    "./canvas/CanvasPrepare": 184,
                    "./limiters/CountLimiter": 186,
                    "./limiters/TimeLimiter": 187,
                    "./webgl/WebGLPrepare": 188
                }],
                186: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = function() {
                        function e(t) {
                            n(this, e), this.maxItemsPerFrame = t, this.itemsLeft = 0
                        }
                        return e.prototype.beginFrame = function() {
                            this.itemsLeft = this.maxItemsPerFrame
                        }, e.prototype.allowedToUpload = function() {
                            return this.itemsLeft-- > 0
                        }, e
                    }();
                    i.default = r
                }, {}],
                187: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }
                    i.__esModule = !0;
                    var r = function() {
                        function e(t) {
                            n(this, e), this.maxMilliseconds = t, this.frameStart = 0
                        }
                        return e.prototype.beginFrame = function() {
                            this.frameStart = Date.now()
                        }, e.prototype.allowedToUpload = function() {
                            return Date.now() - this.frameStart < this.maxMilliseconds
                        }, e
                    }();
                    i.default = r
                }, {}],
                188: [function(e, t, i) {
                    "use strict";

                    function n(e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(e, t) {
                        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !t || "object" != typeof t && "function" != typeof t ? e : t
                    }

                    function o(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                    }

                    function a(e, t) {
                        return t instanceof c.BaseTexture && (t._glTextures[e.CONTEXT_UID] || e.textureManager.updateTexture(t), !0)
                    }

                    function s(e, t) {
                        return t instanceof c.Graphics && ((t.dirty || t.clearDirty || !t._webGL[e.plugins.graphics.CONTEXT_UID]) && e.plugins.graphics.updateGraphics(t), !0)
                    }

                    function l(e, t) {
                        return e instanceof c.Graphics && (t.push(e), !0)
                    }
                    i.__esModule = !0;
                    var u = e("../../core"),
                        c = function(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }(u),
                        h = e("../BasePrepare"),
                        p = function(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }(h),
                        f = function(e) {
                            function t(i) {
                                n(this, t);
                                var o = r(this, e.call(this, i));
                                return o.uploadHookHelper = o.renderer, o.registerFindHook(l), o.registerUploadHook(a), o.registerUploadHook(s), o
                            }
                            return o(t, e), t
                        }(p.default);
                    i.default = f, c.WebGLRenderer.registerPlugin("prepare", f)
                }, {
                    "../../core": 65,
                    "../BasePrepare": 183
                }],
                189: [function(e, t, i) {
                    (function(t) {
                        "use strict";

                        function n(e) {
                            if (e && e.__esModule) return e;
                            var t = {};
                            if (null != e)
                                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
                            return t.default = e, t
                        }
                        i.__esModule = !0, i.loader = i.prepare = i.particles = i.mesh = i.loaders = i.interaction = i.filters = i.extras = i.extract = i.accessibility = void 0;
                        var r = e("./polyfill");
                        Object.keys(r).forEach(function(e) {
                            "default" !== e && "__esModule" !== e && Object.defineProperty(i, e, {
                                enumerable: !0,
                                get: function() {
                                    return r[e]
                                }
                            })
                        });
                        var o = e("./core");
                        Object.keys(o).forEach(function(e) {
                            "default" !== e && "__esModule" !== e && Object.defineProperty(i, e, {
                                enumerable: !0,
                                get: function() {
                                    return o[e]
                                }
                            })
                        });
                        var a = e("./deprecation"),
                            s = function(e) {
                                return e && e.__esModule ? e : {
                                    default: e
                                }
                            }(a),
                            l = e("./accessibility"),
                            u = n(l),
                            c = e("./extract"),
                            h = n(c),
                            p = e("./extras"),
                            f = n(p),
                            d = e("./filters"),
                            _ = n(d),
                            m = e("./interaction"),
                            g = n(m),
                            v = e("./loaders"),
                            y = n(v),
                            b = e("./mesh"),
                            x = n(b),
                            S = e("./particles"),
                            T = n(S),
                            w = e("./prepare"),
                            E = n(w);
                        o.utils.mixins.performMixins();
                        var P = y.shared || null;
                        i.accessibility = u, i.extract = h, i.extras = f, i.filters = _, i.interaction = g, i.loaders = y, i.mesh = x, i.particles = T, i.prepare = E, i.loader = P, "function" == typeof s.default && (0, s.default)(i), t.PIXI = i
                    }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {})
                }, {
                    "./accessibility": 42,
                    "./core": 65,
                    "./deprecation": 131,
                    "./extract": 133,
                    "./extras": 141,
                    "./filters": 153,
                    "./interaction": 159,
                    "./loaders": 162,
                    "./mesh": 171,
                    "./particles": 174,
                    "./polyfill": 181,
                    "./prepare": 185
                }]
            }, {}, [189])(189)
        }), define("skbJet/component/utils/Interface", [], function() {
            function e(e, t) {
                if (this.functions = e || [], t)
                    for (var i = 0; i < t.functions.length; i++) this.functions.indexOf(t.functions[i]) < 0 && this.functions.push(t.functions[i])
            }

            function t() {
                throw "Not implemented yet."
            }
            return e.prototype.implementedBy = function(e) {
                for (var i = 0; i < this.functions.length; i++) e[this.functions[i]] || (e[this.functions[i]] = t)
            }, e.prototype.isImplementedBy = function(e) {
                for (var t = 0; t < this.functions.length; t++) {
                    var i = e[this.functions[t]];
                    if (!i || "function" != typeof i) return !1
                }
                return !0
            }, e
        }), define("skbJet/component/gladRenderer/IgladRenderer", ["skbJet/component/utils/Interface"], function(e) {
            return new e(["init", "showScene", "fitSize", "getSize", "setSize", "getTicker", "forceRender", "getSprite", "getAnimation"])
        }), define("skbJet/component/gladRenderer/gladUtil", [], function() {
            function e(e, t) {
                function i(e) {
                    var t = e._style;
                    if (t && (t._width && (t._width = Number(t._width) * n), t._height && (t._height = Number(t._height) * n), t._top && (t._top = Number(t._top) * n), t._left && (t._left = Number(t._left) * n), t._background && t._background._position && (t._background._position._x && (t._background._position._x = Number(t._background._position._x) * n), t._background._position._y && (t._background._position._y = Number(t._background._position._y) * n)), t._font && t._font._size && (t._font._size = Number(t._font._size) * n), t._text && t._text._lineHeight && (t._text._lineHeight = Number(t._text._lineHeight) * n), t._text && t._text._strokeWidth && (t._text._strokeWidth = Number(t._text._strokeWidth) * n)), e._SPRITES)
                        for (var r = 0; r < e._SPRITES.length; r++) i(e._SPRITES[r])
                }
                var n = t || 2;
                e._width && (e._width = Number(e._width) * n), e._height && (e._height = Number(e._height) * n);
                for (var r = 0; r < e._SCENES.length; r++) {
                    for (var o = 0; o < e._SCENES[r]._LAYERS.length; o++) i(e._SCENES[r]._LAYERS[o]);
                    for (var a = 0; a < e._SCENES[r]._ANIMATIONS.length; a++) {
                        var s = e._SCENES[r]._ANIMATIONS[a];
                        if ("_KEY_FRAME_ANIMATION" !== s._type) throw "Other animation type not support conver sprite pixel rate yet.";
                        for (var l = 0; l < s._keyFrames.length; l++)
                            for (var u = 0; u < s._keyFrames[l]._SPRITES.length; u++) i(s._keyFrames[l]._SPRITES[u])
                    }
                }
            }

            function t(e) {
                function t(e) {
                    if (e && e._style && e._style._text && e._style._text._token && (e._style._text._token = " "), e && e._SPRITES)
                        for (var i = 0; i < e._SPRITES.length; i++) t(e._SPRITES[i])
                }
                for (var i = 0; i < e._SCENES.length; i++)
                    for (var n = 0; n < e._SCENES[i]._LAYERS.length; n++) t(e._SCENES[i]._LAYERS[n])
            }

            function i(e, t) {
                if (e[t])
                    for (var i in e) t === i ? e[i].show(!0) : e[i].show(!1)
            }

            function n(e, t) {
                var i = e - t;
                return (i = i > 0 ? i : -i) <= 1
            }

            function r(e, t, i, r, a) {
                if (!(0 === i || 0 === r || 0 === e || 0 === t || n(e, o.w) && n(t, o.h))) {
                    o.w = e, o.h = t;
                    var s, l, u = r / i;
                    t / e > u ? (s = Math.round(e), l = Math.round(e * u), a.style.transform = "translate(0px," + (t - l) / 2 + "px)") : (l = Math.round(t), s = Math.round(t / u), a.style.transform = "translate(" + (e - s) / 2 + "px,0px)"), a.style.width = s + "px", a.style.height = l + "px"
                }
            }
            var o = {
                w: -1,
                h: -1
            };
            return {
                convertPixelRate: e,
                clearGladDataText: t,
                showScene: i,
                fitSize: r
            }
        }), define("skbJet/component/gladPixiRenderer/globalStore", [], function() {
            return {
                lib: {},
                animMap: {},
                gameConfigOption: {}
            }
        }), define("skbJet/component/utils/PauseTimer", [], function() {
            function e(t, i) {
                this.index = e.index++, e.map[this.index] = this, this.callBack = t, this.delay = i, this.startTime = Date.now(), this.pauseTime = null;
                var n = this;
                this._innerIndex = window.setTimeout(function() {
                    delete e.map[n.index], n.callBack()
                }, i)
            }

            function t(e, i) {
                this.index = t.index++, t.map[this.index] = this, this.callBack = e, this.delay = i, this.startTime = Date.now(), this.pauseTime = null, this._innerTimeoutIndex = null;
                var n = this;
                this._innerIndex = window.setInterval(n.callBack, i)
            }

            function i(t, i) {
                return new e(t, i).index
            }

            function n(t) {
                e.map[t] && e.map[t].clear()
            }

            function r(e, i) {
                return new t(e, i).index
            }

            function o(e) {
                t.map[e] && t.map[e].clear()
            }

            function a() {
                t.pause(), e.pause()
            }

            function s() {
                t.resume(), e.resume()
            }
            e.index = 1, e.map = {}, e.pause = function() {
                for (var t in e.map) e.map[t] && e.map[t].pause()
            }, e.resume = function() {
                for (var t in e.map) e.map[t] && e.map[t].resume()
            }, e.prototype.pause = function() {
                var e = this;
                e._innerIndex && (window.clearTimeout(e._innerIndex), e.pauseTime = Date.now() - e.startTime, e._innerIndex = null)
            }, e.prototype.resume = function() {
                var t = this;
                t._innerIndex || null === t.pauseTime || void 0 === t.pauseTime || (this._innerIndex = window.setTimeout(function() {
                    delete e.map[t.index], t.callBack()
                }, t.delay - t.pauseTime), t.startTime = Date.now() - t.pauseTime, this.pauseTime = null)
            }, e.prototype.clear = function() {
                var t = this;
                t._innerIndex && (window.clearTimeout(t._innerIndex), t._innerIndex = null), delete e.map[t.index]
            }, t.index = 1, t.map = {}, t.pause = function() {
                for (var e in t.map) t.map[e] && t.map[e].pause()
            }, t.resume = function() {
                for (var e in t.map) t.map[e] && t.map[e].resume()
            }, t.prototype.pause = function() {
                var e = this;
                e._innerIndex ? (window.clearInterval(e._innerIndex), e.pauseTime = (Date.now() - e.startTime) % e.delay, e._innerIndex = null, e._innerTimeoutIndex = null) : e._innerTimeoutIndex && (window.clearTimeout(e._innerTimeoutIndex), e.pauseTime = Date.now() - e.startTime, e._innerIndex = null, e._innerTimeoutIndex = null)
            }, t.prototype.resume = function() {
                var e = this;
                e._innerIndex || e._innerTimeoutIndex || null === e.pauseTime || void 0 === e.pauseTime || (e._innerTimeoutIndex = window.setTimeout(function() {
                    e._innerIndex = window.setInterval(e.callBack, e.delay), e._innerTimeoutIndex = null, e.callBack()
                }, e.delay - e.pauseTime), e.startTime = Date.now() - e.pauseTime, this.pauseTime = null)
            }, t.prototype.clear = function() {
                var e = this;
                e._innerIndex ? (window.clearInterval(e._innerIndex), e._innerIndex = null, e._innerTimeoutIndex = null) : e._innerTimeoutIndex && (window.clearTimeout(e._innerTimeoutIndex), e._innerIndex = null, e._innerTimeoutIndex = null), delete t.map[e.index]
            };
            var l = {
                setTimeout: i,
                clearTimeout: n,
                setInterval: r,
                clearInterval: o,
                pause: a,
                resume: s
            };
            return document.addEventListener("visibilitychange", function() {
                "hidden" === document.visibilityState ? l.pause() : l.resume()
            }), l
        }), define("skbJet/component/gladRenderer/view/IViewObject", ["skbJet/component/utils/Interface"], function(e) {
            return new e(["getChildren", "getParent", "getData", "show"])
        }), define("skbJet/component/gladRenderer/view/ISprite", ["skbJet/component/utils/Interface", "skbJet/component/gladRenderer/view/IViewObject"], function(e, t) {
            return new e(["getCurrentStyle", "draw", "addChildFromData", "getText", "setText", "getTextWidth", "setImage", "getImage", "on", "off", "getName", "getParent", "setTextAutoFit", "updateCurrentStyle", "toLocal", "toGlobal"], t)
        }), define("skbJet/component/gladRenderer/view/spriteUtil", [], function() {
            function e(e) {
                return e.match(/^_/) ? e.substring(1) : e
            }

            function t() {
                return {
                    _width: 0,
                    _height: 0,
                    _top: 0,
                    _left: 0,
                    _opacity: 1,
                    _background: {
                        _color: null,
                        _imagePlate: null,
                        _position: {
                            _x: 0,
                            _y: 0
                        }
                    },
                    _transform: {
                        _scale: {
                            _x: 1,
                            _y: 1
                        },
                        _rotate: 0
                    },
                    _text: {
                        _align: "center",
                        _color: "000000",
                        _token: "",
                        _lineHeight: 12,
                        _strokeWidth: 0,
                        _strokeColor: "",
                        _gradient: {
                            _color: ["000000", "000000"],
                            _stop: [0, 1],
                            _orientation: "vertical"
                        }
                    },
                    _font: {
                        _size: 12,
                        _weight: "normal"
                    },
                    _display: "block"
                }
            }

            function i(e, t) {
                if (!t) return e;
                if (null != t._width && "" !== t._width && (e._width = Number(t._width)), null != t._height && "" !== t._height && (e._height = Number(t._height)), null != t._left && "" !== t._left && (e._left = Number(t._left)), null != t._top && "" !== t._top && (e._top = Number(t._top)), null != t._opacity && ("string" == typeof t._opacity && "" === t._opacity || (e._opacity = Number(t._opacity))), t._background ? (t._background._color && (e._background._color = t._background._color), t._background._imagePlate && e._background._imagePlate !== t._background._imagePlate ? (e._background._imagePlate = t._background._imagePlate, e._background._imagePlateUpdateFlag = !0) : e._background._imagePlateUpdateFlag = !1, t._background._position && (null != t._background._position._x && "" !== t._background._position._x && (e._background._position._x = Number(t._background._position._x)), null != t._background._position._y && "" !== t._background._position._y && (e._background._position._y = Number(t._background._position._y)))) : e._background._imagePlateUpdateFlag = !1, t._transform) {
                    if (t._transform._scale) {
                        if (null != t._transform._scale._x && ("string" != typeof t._transform._scale._x || "" !== t._transform._scale._x)) {
                            var i = Number(t._transform._scale._x);
                            e._transform._scale._x = i
                        }
                        if (null != t._transform._scale._y && ("string" != typeof t._transform._scale._y || "" !== t._transform._scale._y)) {
                            var i = Number(t._transform._scale._y);
                            e._transform._scale._y = i
                        }
                    }
                    null != t._transform._rotate && "" !== t._transform._rotate && (e._transform._rotate = Number(t._transform._rotate))
                }
                return t._text && (t._text._align && (e._text._align = t._text._align), t._text._color && (e._text._color = t._text._color), null != t._text._token && (e._text._token = t._text._token), null != t._text._strokeWidth && (e._text._strokeWidth = t._text._strokeWidth), null != t._text._strokeColor && (e._text._strokeColor = t._text._strokeColor), t._text._gradient && (null != t._text._gradient._color && (e._text._gradient._color = t._text._gradient._color), null != t._text._gradient._stop && (e._text._gradient._stop = t._text._gradient._stop), null != t._text._gradient._orientation && (e._text._gradient._orientation = t._text._gradient._orientation)), null != t._text._lineHeight ? e._text._lineHeight = t._text._lineHeight : t._font && t._font._size && (e._text._gradient && (e._text._gradient._color.length > 2 || e._text._gradient._stop[0] !== e._text._gradient._stop[1]) ? e._text._lineHeight = 1.2 * t._font._size : e._text._lineHeight = t._font._size)), t._font && (t._font._size && (e._font._size = t._font._size), t._font._weight && (e._font._weight = t._font._weight), t._font._family && (e._font._family = t._font._family)), t._display && (e._display = t._display), t._overflow && (e._overflow = t._overflow), e
            }

            function n(e) {
                return !(null === e || void 0 === e || "" === e)
            }

            function r(e, t) {
                var n = e.getCurrentStyle();
                if (!n) throw "Sprite style not init yet.";
                i(n, t), e.draw()
            }

            function o(e, t) {
                var i = e.getCurrentStyle(),
                    n = i._width,
                    r = i._height,
                    o = i._top,
                    a = i._left,
                    s = i._transform._scale._x,
                    l = i._transform._scale._y,
                    u = i._transform._rotate * Math.PI / 180,
                    c = t.x,
                    h = t.y;
                c = c - a - n / 2, h = h - o - r / 2;
                var p = c * Math.cos(u) + h * Math.sin(u),
                    f = h * Math.cos(u) - c * Math.sin(u);
                return c = p / s, h = f / l, c += n / 2, h += r / 2, {
                    x: c,
                    y: h
                }
            }

            function a(e, t) {
                for (var i = [], n = t; e._currentStyle && (i.push(e), e.parent);) e = e.parent;
                for (var r = i.length - 1; r >= 0; r--) e = i[r], n = o(e, n);
                return n
            }

            function s(e, t) {
                var i = e.getCurrentStyle(),
                    n = i._width,
                    r = i._height,
                    o = i._top,
                    a = i._left,
                    s = i._transform._scale._x,
                    l = i._transform._scale._y,
                    u = i._transform._rotate * Math.PI / 180,
                    c = t.x,
                    h = t.y;
                c -= n / 2, h -= r / 2, c *= s, h *= l;
                var p = c * Math.cos(u) - h * Math.sin(u),
                    f = h * Math.cos(u) + c * Math.sin(u);
                return c = p + a + n / 2, h = f + o + r / 2, {
                    x: c,
                    y: h
                }
            }

            function l(e, t) {
                for (var i = t; e._currentStyle && i && (i = s(e, i), e.parent);) e = e.parent;
                return i
            }
            return {
                removeUnderLinePrefix: e,
                getDefaultStyle: t,
                updateStyle: i,
                updateCurrentStyle: r,
                isNotEmpty: n,
                toLocal: a,
                toGlobal: l
            }
        }), define("skbJet/component/gladPixiRenderer/Sprite", ["com/pixijs/pixi", "skbJet/component/gladRenderer/view/ISprite", "skbJet/component/gladRenderer/view/spriteUtil", "skbJet/component/gladPixiRenderer/globalStore"], function(e, t, i, n) {
            function r(e) {
                this.sprites = {}, this.data = e, n.lib[e._name] = this, this._currentStyle = s(), this.updateCurrentStyle(this.data._style);
                for (var t = 0; t < e._SPRITES.length; t++) this.addChildFromData(e._SPRITES[t])
            }

            function o() {
                var t = {};
                for (var i in e.utils.TextureCache) {
                    var n = i.match(/^(\w+)_\d+$/);
                    if (n) {
                        var r = n[1];
                        t[r] || (t[r] = []), t[r].push(i)
                    }
                }
                for (var o in t) t[o].sort(function(e, t) {
                    return parseInt(e.match(/\d+$/)[0]) - parseInt(t.match(/\d+$/)[0])
                });
                return t
            }
            var a = i.removeUnderLinePrefix,
                s = i.getDefaultStyle,
                l = i.updateStyle,
                u = i.isNotEmpty;
            t.implementedBy(r.prototype), r.prototype.getChildren = function() {
                return this.sprites
            }, r.prototype.getData = function() {
                return this.data
            }, r.prototype.getCurrentStyle = function() {
                return this._currentStyle
            }, r.prototype.draw = function() {
                var t = this;
                t.pixiContainer || (t.pixiContainer = new e.Container, t.pixiContainer.name = t.data._name);
                var i = t._currentStyle,
                    r = t.pixiContainer,
                    o = Number(i._width),
                    s = Number(i._height);
                if (r.pivot.x = o / 2, r.pivot.y = s / 2, r.x = Number(i._left) + r.pivot.x, r.y = Number(i._top) + r.pivot.y, u(i._background)) {
                    if (u(i._background._color)) {
                        var l = i._background._color + "";
                        if ("#" === l.charAt(0) && (l = l.substring(1)), l = l.toUpperCase(), r.$bgColor && r.$bgColor._color !== l) {
                            var c = r.$bgColor;
                            r.removeChild(c), c.destroy(), r.$bgColor = null
                        }
                        r.$bgColor || (r.$bgColor = new e.Graphics, r.addChild(r.$bgColor), r.$bgColor.width = o, r.$bgColor.height = s, r.$bgColor._color = l, r.$bgColor.beginFill(Number("0x" + l), 1), r.$bgColor.drawRect(0, 0, o, s), r.$bgColor.endFill()), r.$bgColor.width = o, r.$bgColor.height = s
                    }
                    if (r.$sprite || (r.$sprite = new e.Sprite, r.addChildAt(r.$sprite, 0)), r.$sprite.width = o, r.$sprite.height = s, u(i._background._imagePlate) && i._background._imagePlateUpdateFlag) {
                        var h = a(i._background._imagePlate);
                        r.$sprite.texture = e.Texture.fromFrame(h)
                    }
                }
                if (u(i._text) && u(i._text._token)) {
                    r.$text || (r.$text = new e.Text, r.addChild(r.$text));
                    var p = r.$text;
                    if (u(i._text._align) && (p.style.align = i._text._align), u(i._text._color) && (p.style.fill = "#" + i._text._color), u(i._text._strokeWidth) && (p.style.strokeThickness = i._text._strokeWidth, p.style.miterLimit = 2.6), u(i._text._strokeColor) && (p.style.stroke = "#" + i._text._strokeColor), 2 !== i._text._gradient._color.length || i._text._gradient._color[1] !== i._text._gradient._color[0]) {
                        for (var f = [], d = 0; d < i._text._gradient._color.length; d++) f[d] = "#" + i._text._gradient._color[d];
                        p.style.fill = f, p.style.fillGradientStops = i._text._gradient._stop, "horizontal" === i._text._gradient._orientation ? p.style.fillGradientType = e.TEXT_GRADIENT.LINEAR_HORIZONTAL : p.style.fillGradientType = e.TEXT_GRADIENT.LINEAR_VERTICAL
                    }
                    u(i._font) && (u(i._font._family) && (p.style.fontFamily = i._font._family.split(",")[0]), u(i._font._size) && (p.style.fontSize = i._font._size), u(i._font._weight) && (p.style.fontWeight = "" + i._font._weight)), u(i._text._lineHeight) && (p.style.lineHeight = Number(i._text._lineHeight)), u(i._width) && (p.style.wordWrapWidth = Number(i._width), p.style.wordWrap = !0), u(i._height) && (t.padding > 0 ? p.style.padding = t.padding : n.gameConfigOption.defaultPadding ? p.style.padding = n.gameConfigOption.defaultPadding : 0 === p.style.padding && (p.style.padding = 1)), p.text = i._text._token, u(i._font) && u(i._font._size) && t.autoFontFitText && (p.style.wordWrap = !1, p.scale.set(1), p.width > o && p.scale.set(o / p.width), p.y = Math.floor(s * (1 - p.scale.y) / 2));
                    var _ = p.style.align;
                    p.x = "right" === _ ? o - p.width : "center" === _ ? r.x - p.width / 2 - Number(i._left) : 0
                } else r.$text && (r.$text.text = "");
                u(i._transform) && u(i._transform._scale) && (u(i._transform._scale._x) && (r.scale.x = Number(i._transform._scale._x)), u(i._transform._scale._y) && (r.scale.y = Number(i._transform._scale._y))), u(i._transform) && u(i._transform._rotate) && (r.rotation = Number(i._transform._rotate) * Math.PI / 180), u(i._opacity) && (r.alpha = Number(i._opacity))
            }, r.prototype.updateCurrentStyle = function(e) {
                i.updateCurrentStyle(this, e)
            }, r.prototype.addChildFromData = function(e) {
                var t = new r(e);
                return this.sprites[e._name] = t, t.parent = this, this.pixiContainer.addChild(t.pixiContainer), t
            }, r.prototype.setText = function(e) {
                this.updateCurrentStyle({
                    _text: {
                        _token: e
                    }
                })
            }, r.prototype.getText = function() {
                return this.pixiContainer.$text.text
            }, r.prototype.getTextWidth = function() {
                return this.pixiContainer.$text.width
            }, r.prototype.setImage = function(t) {
                e.utils.TextureCache[t] && (l(this._currentStyle, {
                    _background: {
                        _imagePlate: t
                    }
                }), this.pixiContainer.$sprite.texture = e.Texture.fromFrame(t))
            }, r.prototype.getImage = function() {
                return this._currentStyle && this._currentStyle._background ? this._currentStyle._background._imagePlate : null
            }, r.prototype.on = function(e, t) {
                if (this.pixiContainer.interactive = !0, "click" === e) this.pixiContainer.on("touchstart", t), this.pixiContainer.on("click", t);
                else if ("mouseover" === e) this.pixiContainer.on(e, t);
                else if ("mouseout" === e) this.pixiContainer.on("mouseout", t), "ontouchend" in window && this.pixiContainer.on("touchendoutside", t);
                else if ("mousedown" === e) "ontouchstart" in window ? this.pixiContainer.on("touchstart", t) : this.pixiContainer.on("mousedown", t);
                else if ("mouseup" === e) this.pixiContainer.on("mouseup", t), "ontouchend" in window && this.pixiContainer.on("touchend", t);
                else if ("mouseupoutside" === e) "ontouchend" in window ? this.pixiContainer.on("touchendoutside", t) : this.pixiContainer.on("mouseupoutside", t);
                else {
                    if ("mousemove" !== e) throw "Not supported event!";
                    "ontouchmove" in window ? this.pixiContainer.on("touchmove", t) : this.pixiContainer.on("mousemove", t)
                }
            }, r.prototype.off = function(e, t) {
                if ("click" === e) this.pixiContainer.off("touchstart", t), this.pixiContainer.off("click", t);
                else if ("mouseover" === e) this.pixiContainer.off("mouseover", t);
                else if ("mouseout" === e) this.pixiContainer.off("mouseout", t), "ontouchend" in window && this.pixiContainer.off("touchendoutside", t);
                else if ("mousedown" === e) "ontouchstart" in window ? this.pixiContainer.off("touchstart", t) : this.pixiContainer.off("mousedown", t);
                else if ("mouseup" === e) this.pixiContainer.off("mouseup", t), "ontouchend" in window && this.pixiContainer.off("touchend", t);
                else if ("mouseupoutside" === e) "ontouchend" in window ? this.pixiContainer.off("touchendoutside", t) : this.pixiContainer.off("mouseupoutside", t);
                else {
                    if ("mousemove" !== e) throw "Not supported event!";
                    "ontouchmove" in window ? this.pixiContainer.off("touchmove", t) : this.pixiContainer.off("mousemove", t)
                }
            }, r.prototype.toLocal = function(e) {
                return i.toLocal(this, e)
            }, r.prototype.toGlobal = function(e) {
                return i.toGlobal(this, e)
            }, r.prototype.getName = function() {
                return this.data._name
            }, r.prototype.getParent = function() {
                return this.parent
            }, r.prototype.show = function(e) {
                this.pixiContainer.visible = !!e
            };
            var c = null;
            return r.addSpriteSheetAnimation = function(e, t) {
                c || (c = o()), c[e] = t
            }, r.getSpriteSheetAnimationFrameArray = function(e) {
                return c || (c = o()), c[e]
            }, r.prototype.gotoAndPlay = function(t, i, n, r) {
                if (c || (c = o()), !c[t]) throw "Cannot find sprite animation " + t;
                this.pixiContainer.$sprite ? this.pixiContainer.$sprite.animName !== t && (this.pixiContainer.removeChild(this.pixiContainer.$sprite).destroy(), this.pixiContainer.$sprite = e.extras.AnimatedSprite.fromFrames(c[t]), this.pixiContainer.addChildAt(this.pixiContainer.$sprite, this.data._style._background && this.data._style._background._color ? 1 : 0), this.pixiContainer.$sprite.width = Number(this._currentStyle._width), this.pixiContainer.$sprite.height = Number(this._currentStyle._height)) : (this.pixiContainer.$sprite = e.extras.AnimatedSprite.fromFrames(c[t]), this.pixiContainer.addChildAt(this.pixiContainer.$sprite, this.data._style._background._color ? 1 : 0)), this.pixiContainer.$sprite.animName = t, this.pixiContainer.$sprite.animationSpeed = i || 1, this.pixiContainer.$sprite.loop = !!n;
                var a = this;
                this.pixiContainer.$sprite.onComplete = function() {
                    "function" == typeof a.onComplete && a.onComplete()
                }, (!r || r < 0) && (r = 0), this.pixiContainer.$sprite.gotoAndPlay(r)
            }, r.prototype.stopPlay = function() {
                this.pixiContainer.$sprite && this.pixiContainer.$sprite.stop && this.pixiContainer.$sprite.stop()
            }, r.prototype.gotoAndStop = function(e) {
                this.pixiContainer.$sprite && this.pixiContainer.$sprite.gotoAndStop && this.pixiContainer.$sprite.gotoAndStop(e)
            }, r.prototype.onComplete = null, r.prototype.autoFontFitText = !1, r.prototype.setTextAutoFit = function(e) {
                this.autoFontFitText = e
            }, r
        }), define("skbJet/component/gladPixiRenderer/Layer", ["com/pixijs/pixi", "skbJet/component/gladPixiRenderer/Sprite", "skbJet/component/gladRenderer/view/IViewObject", "skbJet/component/gladPixiRenderer/globalStore"], function(e, t, i, n) {
            function r(i) {
                this.sprites = {}, this.data = i, n.lib[i._name] = this, this.pixiContainer = new e.Container, this.pixiContainer.name = i._name;
                for (var r = 0; r < i._SPRITES.length; r++) {
                    var o = i._SPRITES[r];
                    this.sprites[o._name] = new t(o), this.sprites[o._name].parent = this, this.pixiContainer.addChild(this.sprites[o._name].pixiContainer)
                }
            }
            return i.implementedBy(r.prototype), r.prototype.getChildren = function() {
                return this.sprites
            }, r.prototype.getParent = function() {
                return null
            }, r.prototype.getData = function() {
                return this.data
            }, r.prototype.show = function(e) {
                this.pixiContainer.visible = !!e
            }, r
        }),
        define("skbJet/component/gladRenderer/animation/IAnimation", ["skbJet/component/utils/Interface"], function(e) {
            return new e(["isPlaying", "onTick"])
        }), define("skbJet/component/gladRenderer/animation/KeyFrameAnimation", ["skbJet/component/gladRenderer/animation/IAnimation"], function(e) {
            function t() {}

            function i(e, t, i, n, r, o) {
                if (e.animData = t, o || (o = e.animData._name), t._keyFrames && t._keyFrames.length > 0) {
                    var a = t._keyFrames[t._keyFrames.length - 1];
                    e.maxTime = Number(a._time), e._spritesNameList = [];
                    for (var s = 0; s < a._SPRITES.length; s++) e._spritesNameList.push(a._SPRITES[s]._name);
                    if (r)
                        for (var s = 0; s < r.length && s < a._SPRITES.length; s++) e._spritesNameList[s] = r[s]
                }
                e._name = o, e._gladObjLib = n, e._gladAnimMap = i, i[o] = e
            }

            function n(e) {
                e.pause(), e.timeCount = 0, e.loopCount = 0, e.loopNumber = 1, e._frameIndex = 0
            }

            function r(e, t, i) {
                var n = Number(e);
                return (Number(t) - n) * i + n
            }

            function o(e, t, i) {
                if (t = Number(t), e.animData._keyFrames.length <= 1 || t <= 0) return 0;
                i || (i = 0);
                for (var n = i; n < e.animData._keyFrames.length; n++)
                    if (t <= Number(e.animData._keyFrames[n]._time) && t > Number(e.animData._keyFrames[n - 1]._time)) return n;
                return e.animData._keyFrames.length
            }

            function a(e) {
                return !(null === e || void 0 === e || "" === e)
            }

            function s(e, t, i, n) {
                if (i._style) {
                    var o = e._style,
                        s = t._style,
                        l = i._style;
                    a(l._width) && (s._width = r(o._width, l._width, n)), a(l._height) && (s._height = r(o._height, l._height, n)), a(l._top) && (s._top = r(o._top, l._top, n)), a(l._left) && (s._left = r(o._left, l._left, n)), a(l._opacity) && (s._opacity = r(o._opacity, l._opacity, n)), a(l._background) && (s._background = {}, a(l._background._position) && (s._background._position = {}, a(l._background._position._x) && (s._background._position._x = r(o._background._position._x, l._background._position._x, n)), a(l._background._position._y) && (s._background._position._y = r(o._background._position._y, l._background._position._y, n)))), a(l._transform) && (s._transform = {}, a(l._transform._rotate) && (s._transform._rotate = r(o._transform._rotate, l._transform._rotate, n)), a(l._transform._scale) && (s._transform._scale = {}, a(l._transform._scale._x) && (s._transform._scale._x = r(o._transform._scale._x, l._transform._scale._x, n)), a(l._transform._scale._y) && (s._transform._scale._y = r(o._transform._scale._y, l._transform._scale._y, n))), a(l._transform._skew) && (s._transform._skew = {}, a(l._transform._skew._x) && (s._transform._skew._x = r(o._transform._skew._x, l._transform._skew._x, n)), a(l._transform._skew._y) && (s._transform._skew._y = r(o._transform._skew._y, l._transform._skew._y, n))))
                }
            }
            return e.implementedBy(t.prototype), t.prototype._isPlaying = !1, t.prototype.animData = null, t.prototype.maxTime = 0, t.prototype.timeCount = 0, t.prototype.loopCount = 0, t.prototype.loopNumber = 1, t.prototype._frameIndex = 0, t.prototype._onStart = null, t.prototype._onEnd = null, t.prototype._onComplete = null, t.prototype._onLoop = null, t.prototype._onFrame = null, t.prototype._onResume = null, t.prototype._gladObjLib = null, t.prototype._gladAnimMap = null, t.prototype.isPlaying = function() {
                return this._isPlaying
            }, t.prototype.init = function(e, t, n) {
                i(this, e, t, n)
            }, t.prototype.onTick = function(e) {
                if (this._isPlaying) {
                    if (0 === this.timeCount && 0 === this.loopCount && this._onStart ? this._onStart() : (this.timeCount > 0 || this.loopCount > 0) && this._onResume && this._onResume(), this.timeCount += e, this.timeCount >= this.maxTime) {
                        if (++this.loopCount >= this.loopNumber) return this.updateStyleToTime(this.maxTime), n(this), void(this._onComplete && this._onComplete());
                        this.timeCount = 0, this._frameIndex = 0, this._onLoop && this._onLoop()
                    }
                    this.updateStyleToTime(this.timeCount)
                }
            }, t.prototype.updateStyleToTime = function(e) {
                if (!(e < 0 || e > this.maxTime)) {
                    var t = this.getFrameAtTime(e);
                    if (t._SPRITES)
                        for (var i = 0; i < this._spritesNameList.length; i++) {
                            var n = this._gladObjLib[this._spritesNameList[i]];
                            n.updateCurrentStyle(t._SPRITES[i]._style)
                        }
                }
            }, t.prototype.play = function(e) {
                this.maxTime <= 0 || !0 !== this._isPlaying && ("number" == typeof e && (e = {
                    loopNumber: e
                }), e || (e = {}), e.loopNumber ? this.loopNumber = e.loopNumber : this.loopNumber = 1, e.startTime ? this.timeCount = e.startTime : this.timeCount = 0, this._isPlaying = !0)
            }, t.prototype.stop = function() {
                this._isPlaying && (n(this), this._onEnd && this._onEnd())
            }, t.prototype.pause = function() {
                this._isPlaying = !1
            }, t.prototype.clone = function(e, n) {
                var r = new t;
                return i(r, this.animData, this._gladAnimMap, this._gladObjLib, e, n), r
            }, t.prototype.getFrameAtTime = function(e) {
                var t = this;
                if (e = Number(e), 1 === t.animData._keyFrames.length) return e === Number(t.animData._keyFrames[0]._time) ? t.animData._keyFrames[0] : null;
                t._frameIndex = o(t, e, t._frameIndex);
                var i = t.animData._keyFrames[t._frameIndex];
                if (null == i) return null;
                if (i && i._time === e) return i;
                var n = t.animData._keyFrames[t._frameIndex - 1],
                    r = {
                        _time: e,
                        _SPRITES: []
                    },
                    a = r._time;
                t.animData._step && (a = t.animData._step * Math.floor(r._time / t.animData._step));
                for (var l = (a - n._time) / (i._time - n._time), u = 0; u < i._SPRITES.length; u++) {
                    var c = i._SPRITES[u],
                        h = n._SPRITES[u];
                    if (h._id !== c._id) throw "Error: sprite list dismatch in animation frames";
                    var p = {
                        _id: c._id,
                        _name: c._name,
                        _style: {}
                    };
                    s(h, p, c, l), r._SPRITES.push(p)
                }
                return r
            }, t
        }), define("skbJet/component/gladPixiRenderer/KeyFrameAnimation", ["skbJet/component/gladRenderer/animation/KeyFrameAnimation", "skbJet/component/gladPixiRenderer/globalStore"], function(e, t) {
            function i(e) {
                this.init(e, t.animMap, t.lib), this.updateStyleIfPlaying = this.onTick
            }
            return i.prototype = new e, i
        }), define("skbJet/component/gladPixiRenderer/Scene", ["com/pixijs/pixi", "skbJet/component/gladPixiRenderer/Layer", "skbJet/component/gladPixiRenderer/KeyFrameAnimation", "skbJet/component/gladRenderer/view/IViewObject", "skbJet/component/gladRenderer/view/spriteUtil", "skbJet/component/gladPixiRenderer/globalStore"], function(e, t, i, n, r, o) {
            function a(n) {
                this.layers = {}, this.data = n, o.lib[n._name] = this, this.pixiContainer = new e.Container, this.pixiContainer.name = n._name;
                for (var r = 0; r < n._LAYERS.length; r++) {
                    var a = n._LAYERS[r];
                    this.layers[a._name] = new t(a), this.layers[a._name].parent = this, this.pixiContainer.addChild(this.layers[a._name].pixiContainer)
                }
                this._animations = [], this.show = function(e) {
                    this.pixiContainer.visible = e
                };
                for (var r = 0; r < n._ANIMATIONS.length; r++) {
                    "_KEY_FRAME_ANIMATION" === n._ANIMATIONS[r]._type && new i(n._ANIMATIONS[r])
                }
            }
            var s;
            n.implementedBy(a.prototype), a.prototype.getChildren = function() {
                return this.layers
            }, a.prototype.getParent = function() {
                return null
            }, a.prototype.getData = function() {
                return this.data
            };
            var l = r.isNotEmpty;
            return a.prototype.updateCurrentStyle = function(e) {
                var t = this.pixiContainer,
                    i = e,
                    n = Number(i._width),
                    r = Number(i._height);
                n || (s || (s = require("skbJet/component/gladPixiRenderer/gladPixiRenderer")), n = s.getSize().width), r || (s || (s = require("skbJet/component/gladPixiRenderer/gladPixiRenderer")), r = s.getSize().height), t.pivot.x = n / 2, t.pivot.y = r / 2, t.x = Number(i._left) + t.pivot.x, t.y = Number(i._top) + t.pivot.y, l(i._transform) && l(i._transform._scale) && (l(i._transform._scale._x) && (t.scale.x = Number(i._transform._scale._x)), l(i._transform._scale._y) && (t.scale.y = Number(i._transform._scale._y))), l(i._transform) && l(i._transform._rotate) && (t.rotation = Number(i._transform._rotate) * Math.PI / 180), l(i._opacity) && (t.alpha = Number(i._opacity))
            }, a
        }), define("skbJet/component/gladPixiRenderer/gladPixiRenderer", ["com/pixijs/pixi", "skbJet/component/gladRenderer/IgladRenderer", "skbJet/component/gladRenderer/gladUtil", "skbJet/component/gladPixiRenderer/globalStore", "skbJet/component/utils/PauseTimer", "skbJet/component/gladPixiRenderer/Scene"], function(e, t, i, n, r, o) {
            function a(e, t) {
                e === b.width && t === b.height || (b.width = e, b.height = t, h.resize(b.width, b.height), c(x.width, x.height))
            }

            function s(t, n, r) {
                p = t, p || (p = window._gladData), i.convertPixelRate(p, 2), i.clearGladDataText(p), n || (n = document.getElementById("game")), _ = n, !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform) && !window.MSStream && (e.settings.PRECISION_FRAGMENT = e.PRECISION.HIGH), h = "webgl" === r ? new e.WebGLRenderer(p._width, p._height, {
                    transparent: !0,
                    resolution: 1,
                    antialias: !0
                }) : "2d" === r ? new e.CanvasRenderer(p._width, p._height, {
                    transparent: !0,
                    resolution: 1,
                    antialias: !0
                }) : e.autoDetectRenderer(p._width, p._height, {
                    transparent: !0,
                    resolution: 1,
                    antialias: !0
                }), _.appendChild(h.view), x.width = p._width, x.height = p._height, a(p._width, p._height), d = new e.Container;
                for (var s = 0; s < p._SCENES.length; s++) {
                    var u = p._SCENES[s];
                    g[u._name] = new o(u), d.addChild(g[u._name].pixiContainer)
                }
                f = new e.ticker.Ticker, f.add(function() {
                    for (var e in v) v[e].updateStyleIfPlaying ? v[e].updateStyleIfPlaying(f.elapsedMS) : v[e].onTick(f.elapsedMS);
                    h.render(d)
                }), f.start(), document.addEventListener("visibilitychange", function() {
                    "hidden" === document.visibilityState ? f.stop() : f.start()
                }), l(n)
            }

            function l(e) {
                var t, i = !!window.PointerEvent;
                t = i ? "pointerdown" : "mousedown", e.addEventListener(t, function(e) {
                    e && 1 === e.button && e.stopPropagation()
                }, !0)
            }

            function u(e) {
                i.showScene(g, e)
            }

            function c(e, t) {
                var n = Number(h.view.width),
                    r = Number(h.view.height);
                x.width = e, x.height = t, i.fitSize(e, t, n, r, h.view)
            }
            var h, p, f, d, _, m = n.lib,
                g = {},
                v = n.animMap,
                y = n.gameConfigOption,
                b = {
                    width: 0,
                    height: 0
                },
                x = {
                    width: 0,
                    height: 0
                },
                S = {
                    init: s,
                    lib: m,
                    fitSize: c,
                    showScene: u,
                    animMap: v,
                    gameConfigOption: y,
                    setSize: a,
                    getSize: function() {
                        return {
                            width: b.width,
                            height: b.height
                        }
                    },
                    getPixiRenderer: function() {
                        return h
                    },
                    getTicker: function() {
                        return f
                    },
                    getTimer: function() {
                        return r
                    },
                    forceRender: function() {
                        h.render(d)
                    },
                    getSprite: function(e) {
                        return m[e]
                    },
                    getAnimation: function(e) {
                        return v[e]
                    }
                };
            return t.implementedBy(S), S
        }), define("skbJet/component/resourceLoader/resourceLib", [], function() {
            return {}
        }), define("skbJet/component/resourceLoader/Util", [], function() {
            var e = {};
            return e.httpGetJson = function(t, i, n) {
                e.httpGetText(t, function(e) {
                    i(JSON.parse(e))
                }, n)
            }, e.httpGetText = function(e, t, i) {
                var n = new XMLHttpRequest;
                n.addEventListener("load", function(e) {
                    e.target.status >= 200 && e.target.status < 300 ? t(e.target.responseText) : i()
                }), n.addEventListener("error", i), n.addEventListener("timeout", i), n.open("GET", e), n.send()
            }, e.removeQueryStr = function(e) {
                var t = e.match(/(.*)\?/);
                return t ? t[1] : e
            }, e.getFileNameFromPath = function(e) {
                var t = e.match(/\/?([^\/]+)$/);
                return t ? t[1] : e
            }, e.getFileExt = function(t, i) {
                t = e.removeQueryStr(t), t = e.getFileNameFromPath(t);
                var n = t.match(/\.(\w+)$/);
                return n && n[1] ? i ? n[1].toLowerCase() : n[1] : null
            }, e.getFileNameWithoutExt = function(t) {
                t = e.removeQueryStr(t), t = e.getFileNameFromPath(t);
                var i = t.match(/(.*)(\.\w+)+$/);
                return i ? i[1] : t
            }, e.getParentFolder = function(t) {
                t = e.removeQueryStr(t);
                var i = e.getFileNameFromPath(t);
                return t.substring(0, t.length - i.length)
            }, e
        }), define("skbJet/component/resourceLoader/LoaderContext", [], function() {
            function e(e, t, i) {
                this.assetPackUrl = e, this.languageCode = t, this.skinCode = i, this.totalResAmount = 0, this.currentLoaded = 0, this.gameFolder = null, this.i18nParent = null, this.queryStr = "", window._cacheFlag && window._cacheFlag.queryStr && (this.queryStr = window._cacheFlag.queryStr), this.fileListMap = {
                    i18n: null
                }, this.subLoaderMap = {}, this.onFileLoaded = function() {}, this.onLoadFailed = function() {}
            }
            return e
        }), define("skbJet/component/resourceLoader/LoaderChainHandler", [], function() {
            function e() {}
            return e.prototype.next = null, e.prototype.handle = null, e
        }), define("skbJet/component/resourceLoader/handlers/languageListHandler", ["skbJet/component/resourceLoader/Util", "skbJet/component/resourceLoader/LoaderChainHandler"], function(e, t) {
            function i(e, t) {
                for (var i = {}, n = 0; n < e.length; n++) i[e[n]] = [e[n].toLowerCase()], e[n].indexOf("_") > -1 ? i[e[n]].push(e[n].replace("_", "-").toLowerCase()) : e[n].indexOf("-") > -1 && i[e[n]].push(e[n].replace("-", "_").toLowerCase());
                var r;
                for (var o in i)
                    if (i[o].indexOf("i18n/" + t.languageCode.toLowerCase() + ".json") >= 0) {
                        r = o.substring(o.lastIndexOf("/") + 1, o.lastIndexOf("."));
                        break
                    }
                if (!r)
                    for (var o in i)
                        if (i[o].indexOf("i18n/default.json") >= 0) {
                            r = o.substring(o.lastIndexOf("/") + 1, o.lastIndexOf("."));
                            break
                        }
                if (!r)
                    for (var o in i)
                        if (i[o].indexOf("i18n/en.json") >= 0) {
                            r = o.substring(o.lastIndexOf("/") + 1, o.lastIndexOf("."));
                            break
                        }
                return !!r && (t.languageCode = r, !0)
            }

            function n(t) {
                var i = t.gameFolder,
                    n = !1;
                if (window.location.search.match(/&?custom=true&?/) && (n = !0), window.gtk && window.gtk.jLottery && window.gtk.jLottery.embeddedParams && window.gtk.jLottery.embeddedParams.custom && (n = !0), n) {
                    var r, o = window.location.pathname;
                    o.match(/\/splash\.html$/) || o.match(/\/launcher\.html$/) ? (r = e.getParentFolder(o), r = r.match(/\/([^\/]+\/)$/)[1]) : r = t.gameFolder.match(/\/([^\/]+\/)$/)[1], i = "/custom_lang/" + t.skinCode + "/" + r
                }
                return i
            }
            var r = new t;
            return r.handle = function(t) {
                t.languageCode = t.languageCode || "default", t.languageCode = t.languageCode.toLowerCase();
                var o = t.assetPackUrl.substring(0, t.assetPackUrl.lastIndexOf("/"));
                t.gameFolder = o.substring(0, o.lastIndexOf("/") + 1), t.i18nParent = n(t), e.httpGetJson(t.i18nParent + "i18n.json" + t.queryStr, function(e) {
                    i(e.i18n, t) ? r.next.handle(t) : t.onLoadFailed()
                }, t.onLoadFailed)
            }, r
        }), define("skbJet/component/resourceLoader/handlers/skinListHandler", ["skbJet/component/resourceLoader/Util", "skbJet/component/resourceLoader/LoaderChainHandler"], function(e, t) {
            function i(e, t) {
                for (var i = 0; i < e.length; i++) {
                    var n = e[i];
                    if (n = n.substring(n.lastIndexOf("/") + 1, n.lastIndexOf(".")), t.skinCode.toLowerCase() === n.toLowerCase()) return
                }
                t.skinCode = "default"
            }
            var n = new t;
            return n.handle = function(t) {
                t.skinCode = t.skinCode || "default";
                var r = t.i18nParent + "i18n/" + t.languageCode + ".json" + t.queryStr;
                e.httpGetJson(r, function(e) {
                    i(e[t.languageCode], t), n.next.handle(t)
                }, t.onLoadFailed)
            }, n
        }), define("skbJet/component/resourceLoader/handlers/fileListHandler", ["skbJet/component/resourceLoader/Util", "skbJet/component/resourceLoader/LoaderChainHandler"], function(e, t) {
            function i(e, t, i, n) {
                n.fileListMap[e] || (n.fileListMap[e] = {});
                for (var r = 0; r < t.length; r++) n.fileListMap[e][t[r]] = i
            }

            function n(t, n) {
                var o = t.assetPackUrl + ".json" + t.queryStr;
                e.httpGetJson(o, function(e) {
                    for (var o in e) i(o, e[o], t.gameFolder + "assetPacks/", t);
                    var s = t.assetPackUrl.substring(t.assetPackUrl.lastIndexOf("assetPacks"));
                    n && n.indexOf(t.skinCode + "/" + s + ".json") > -1 ? r(t, s) : a.next.handle(t)
                }, t.onLoadFailed)
            }

            function r(t, n) {
                var r = t.i18nParent + "i18n/" + t.languageCode + "/" + t.skinCode + "/",
                    o = r + n + ".json" + t.queryStr;
                e.httpGetJson(o, function(e) {
                    for (var n in e) i(n, e[n], r + "assetPacks/", t);
                    a.next.handle(t)
                }, t.onLoadFailed)
            }

            function o(t) {
                var r = t.i18nParent + "i18n/",
                    o = r + t.languageCode + "/",
                    a = o + t.skinCode + ".json" + t.queryStr;
                e.httpGetJson(a, function(e) {
                    i("i18n", e[t.skinCode], o, t), n(t, e.assetPacks)
                }, t.onLoadFailed)
            }
            var a = new t;
            return a.handle = o, a
        }), define("skbJet/component/resourceLoader/handlers/fileLoadHandler", ["skbJet/component/resourceLoader/LoaderChainHandler"], function(e) {
            function t(e, t, i) {
                setTimeout(function() {
                    e.load(t, i)
                }, 1)
            }
            var i = new e;
            return i.handle = function(e) {
                for (var i in e.fileListMap) e.subLoaderMap[i] && t(e.subLoaderMap[i], e.fileListMap[i], {
                    onFileLoaded: e.onFileLoaded,
                    onLoadFailed: e.onLoadFailed,
                    queryStr: e.queryStr
                })
            }, i.addSubLoader = function(e, t, i) {
                e.subLoaderMap[t] = i
            }, i.summary = function(e) {
                var t = 0,
                    i = 0,
                    n = !0;
                for (var r in e.fileListMap) e.subLoaderMap[r] && (t += e.subLoaderMap[r].getTotal(), i += e.subLoaderMap[r].getCurrent(), n = n && e.subLoaderMap[r].isComplete());
                return {
                    total: t,
                    current: i,
                    complete: n
                }
            }, i
        }), define("skbJet/component/resourceLoader/ResourceLoader", ["skbJet/component/resourceLoader/Util", "skbJet/component/resourceLoader/LoaderContext", "skbJet/component/resourceLoader/handlers/languageListHandler", "skbJet/component/resourceLoader/handlers/skinListHandler", "skbJet/component/resourceLoader/handlers/fileListHandler", "skbJet/component/resourceLoader/handlers/fileLoadHandler"], function(e, t, i, n, r, o) {
            function a(e, a, s) {
                this.context = new t(e, a, s), this.loadChain = [i, n, r, o]
            }
            var s;
            return a.prototype.load = function(e, t) {
                for (var i = 0; i < this.loadChain.length - 1; i++) this.loadChain[i].next = this.loadChain[i + 1];
                this.context.onFileLoaded = e, this.context.onLoadFailed = t, this.loadChain[0].handle(this.context)
            }, a.prototype.addSubLoader = function(e, t) {
                o.addSubLoader(this.context, e, t)
            }, a.prototype.currentProgress = function() {
                return o.summary(this.context)
            }, a.initDefault = function(e, t, i) {
                if (s) throw "Default loader already inited.";
                s = new a(e, t, i)
            }, a.getDefault = function() {
                return s
            }, a.setDefault = function(e) {
                s = e
            }, a.prototype.addHeartBeat = function(e, t) {
                function i() {
                    var t = n.currentProgress();
                    if (t.complete) return clearInterval(n.heartBeatInterval), void(n.heartBeatInterval = null);
                    e(t)
                }
                var n = this;
                n.heartBeatInterval && (clearInterval(n.heartBeatInterval), n.heartBeatInterval = null), t || (t = 5e3), n.heartBeatInterval = setInterval(i, t)
            }, a.prototype.removeHeartBeat = function() {
                var e = this;
                if (e.heartBeatInterval) return clearInterval(e.heartBeatInterval), void(e.heartBeatInterval = null)
            }, a
        }), define("skbJet/component/resourceLoader/AbstractSubLoader", ["skbJet/component/resourceLoader/Util", "skbJet/component/resourceLoader/resourceLib"], function(e, t) {
            function i() {}

            function n() {}
            return n.prototype._initOptions = function(e, i) {
                this._count = {
                    total: 0,
                    current: 0,
                    complete: !1
                }, this.options = i || {}, this.options.type = this.options.type || e, t[this.options.type] || (t[this.options.type] = {})
            }, n.prototype.getTotal = function() {
                return this._count.total
            }, n.prototype.getCurrent = function() {
                return this._count.current
            }, n.prototype.isComplete = function() {
                return this._count.complete
            }, n.prototype._prepareLoad = function(e) {
                e = e || {}, this._count.total = 0, this._count.current = 0, e.queryStr = e.queryStr ? e.queryStr : "", e.onFileLoaded = e.onFileLoaded ? e.onFileLoaded : i, e.onLoadFailed = e.onLoadFailed ? e.onLoadFailed : i;
                for (var t in e) this.options[t] = e[t]
            }, n.prototype.load = function(i, n) {
                this._prepareLoad(n);
                var r = [];
                for (var o in i)
                    if (i[o]) {
                        if (this.options.fileExtFilterList) {
                            var a = e.getFileExt(o, !0);
                            if (this.options.fileExtFilterList.indexOf(a) < 0) continue
                        }
                        this._count.total++, r.push(o)
                    }
                if (0 === this._count.total) return this._count.complete = !0, void this.options.onFileLoaded();
                for (var s = this, l = 0; l < r.length; l++) {
                    var o = r[l];
                    this._doLoadFile(i[o] + o + this.options.queryStr, function(e) {
                        return function(i) {
                            s._count.current++, s._count.current === s._count.total && (s._count.complete = !0), t[s.options.type] = t[s.options.type] || {}, t[s.options.type][e] = i, s.options.onFileLoaded()
                        }
                    }(e.getFileNameWithoutExt(o)), this.options.onLoadFailed)
                }
            }, n.prototype._doLoadFile = function(e, t, i) {
                throw "Not implemented yet. Params: url:" + e + "   success:" + t + "   fail:" + i
            }, n
        }), define("skbJet/component/resourceLoader/subLoaders/TextFilesSubLoader", ["skbJet/component/resourceLoader/Util", "skbJet/component/resourceLoader/AbstractSubLoader"], function(e, t) {
            function i(e) {
                this._initOptions("_text_files", e)
            }
            return i.prototype = new t, i.prototype._doLoadFile = function(t, i, n) {
                "json" === e.getFileExt(t, !0) && this.options.parseJson ? e.httpGetJson(t, i, n) : e.httpGetText(t, i, n)
            }, i
        }), define("skbJet/component/resourceLoader/subLoaders/HtmlTagSubLoader", ["skbJet/component/resourceLoader/Util", "skbJet/component/resourceLoader/AbstractSubLoader"], function(e, t) {
            function i(e) {
                this._initOptions("_html_tags", e)
            }
            return i.prototype = new t, i.prototype._doLoadFile = function(e, t, i) {
                var n = document.createElement(this.options.tagName);
                if (n.onload = function() {
                        t(n)
                    }, n.onerror = i, this.options.parentTag && this.options.parentTag.appendChild(n), this.options.tagAttributes)
                    for (var r in this.options.tagAttributes) n.setAttribute(r, this.options.tagAttributes[r]);
                n.src = e
            }, i
        }), define("skbJet/component/pixiResourceLoader/PixiSpriteSubLoader", ["skbJet/component/resourceLoader/Util", "skbJet/component/resourceLoader/AbstractSubLoader", "com/pixijs/pixi"], function(e, t, i) {
            function n(e) {
                e = e || {}, e.fileExtFilterList = ["json"], this._initOptions("sprites", e)
            }
            return n.prototype = new t, n.prototype._load = n.prototype.load, n.prototype.load = function(t, n) {
                this.loader = new i.loaders.Loader, this.loader.defaultQueryString = "?" === n.queryStr.charAt(0) ? n.queryStr.replace("?", "") : n.queryStr, n.queryStr = null, this._load(t, n);
                var r = this;
                this.loader.on("load", function(t, n) {
                    if (n.textures) {
                        for (var o in n.textures) {
                            var a = e.getFileNameWithoutExt(o);
                            i.Texture.addToCache(n.textures[o], a)
                        }
                        r._count.current++, r.options.onFileLoaded()
                    }
                }), this.loader.once("complete", function() {
                    r._count.current === r._count.total && (r._count.complete = !0, r.options.onFileLoaded())
                }), this.loader.on("error", this.options.onLoadFailed), this.loader.load()
            }, n.prototype._doLoadFile = function(t) {
                var i = e.getFileNameWithoutExt(t);
                this.loader.add(i, t)
            }, n
        }), define("skbJet/component/pixiResourceLoader/PixiImageSubLoader", ["skbJet/component/resourceLoader/Util", "skbJet/component/resourceLoader/AbstractSubLoader", "com/pixijs/pixi"], function(e, t, i) {
            function n(e) {
                this._initOptions("images", e)
            }
            return n.prototype = new t, n.prototype._load = n.prototype.load, n.prototype.load = function(e, t) {
                this.loader = new i.loaders.Loader, this._load(e, t);
                var n = this;
                this.loader.on("load", function(e, t) {
                    i.Texture.addToCache(t.texture, t.name), n._count.current++, n.options.onFileLoaded()
                }), this.loader.once("complete", function() {
                    n._count.current === n._count.total && (n._count.complete = !0, n.options.onFileLoaded())
                }), this.loader.on("error", this.options.onLoadFailed), this.loader.load()
            }, n.prototype._doLoadFile = function(t) {
                var i = e.getFileNameWithoutExt(t);
                this.loader.add(i, t)
            }, n
        }), define("skbJet/component/pixiResourceLoader/pixiResourceLoader", ["skbJet/component/gameMsgBus/GameMsgBus", "com/pixijs/pixi", "skbJet/component/resourceLoader/resourceLib", "skbJet/component/resourceLoader/ResourceLoader", "skbJet/component/resourceLoader/subLoaders/TextFilesSubLoader", "skbJet/component/resourceLoader/subLoaders/HtmlTagSubLoader", "skbJet/component/pixiResourceLoader/PixiSpriteSubLoader", "skbJet/component/pixiResourceLoader/PixiImageSubLoader"], function(e, t, i, n, r, o, a, s) {
            function l(t) {
                var n = "resourceLoader." + ("default" === t ? "loadProgress" : "deferredLoadProgress");
                return function() {
                    f[t] = p[t].currentProgress(), f[t].complete && (h.i18n = i.i18n.game || {}, h.i18n.helpHTML = i.i18n.help, h.i18n.paytableHTML = i.i18n.paytable, h.i18n.gameConfig = i.i18n.gameConfig), e.publish(n, {
                        label: t,
                        total: f[t].total,
                        current: f[t].current,
                        complete: f[t].complete
                    })
                }
            }

            function u(t) {
                return function() {
                    e.publish("toPlatform", {
                        channel: "Kernel",
                        topic: "LoadProgress",
                        data: {
                            id: "game",
                            items: f[t].total,
                            current: f[t].current,
                            label: t,
                            complete: !1,
                            fail: !0
                        }
                    })
                }
            }

            function c(e, i, n) {
                if (t.utils.TextureCache[e]) {
                    var r = t.utils.TextureCache[e],
                        o = new t.CanvasRenderer(r.orig.width, r.orig.height, {
                            transparent: !0
                        }),
                        a = new t.Sprite(r);
                    _.addChild(a), o.render(_);
                    var s = new Image;
                    s.src = o.view.toDataURL(i, n), d[e] = s, _.removeChild(a)
                }
            }
            i.sounds = i.sounds || {}, i.images = i.images || {}, i.layout = i.layout || {}, i.sprites = i.sprites || {}, i.i18n = i.i18n || {};
            var h = {
                    audio: i.sounds,
                    images: i.images,
                    layout: i.layout,
                    sprites: i.sprites,
                    i18n: null
                },
                p = {},
                f = {
                    default: {}
                };
            h.load = function(e, t, i) {
                n.initDefault(e, t, i), p.default = n.getDefault(), p.default.addSubLoader("images", new s({
                    type: "images"
                })), p.default.addSubLoader("sprites", new a({
                    type: "sprites"
                }));
                var c = new r({
                    type: "i18n",
                    parseJson: !0
                });
                return c.origLoad = c.load, c.load = function(e, t) {
                    for (var i in e) i.match(/splash\.json$/) && delete e[i];
                    this.origLoad(e, t)
                }, p.default.addSubLoader("i18n", c), p.default.addSubLoader("layout", new o({
                    tagName: "script",
                    tagAttributes: {
                        type: "text/javascript"
                    },
                    fileExtFilterList: ["js"],
                    parentTag: document.getElementsByTagName("head")[0]
                })), p.default.load(l("default"), u("default")), p.default
            }, h.loadDeferred = function(e, t, i, r) {
                return f[t] = {}, p[t] = new n(e, i, r), p[t].addSubLoader("images", new s({
                    type: "images"
                })), p[t].addSubLoader("sprites", new a({
                    type: "sprites"
                })), p[t].load(l(t), u(t)), p[t]
            };
            var d = {},
                _ = new t.Container;
            return h.getImgObj = function(e, t, i) {
                return d[e] || c(e, t, i), d[e]
            }, h
        }), define("skbJet/component/currencyHelper/Currency", [], function() {
            function e(e) {
                this.currencyData = e, this.decimalPrecision = Number(e.DECIMAL_PRECISION)
            }

            function t(e, t) {
                var i = Math.floor(e);
                if ("no" === t.USE_THOUSANDS_SEPARATOR) return i + "";
                for (var n = ""; i.toString().length > 3;) {
                    var r = i.toString().length - 3,
                        o = t.THOUSANDS_SEPARATOR;
                    o = "_" === o ? " " : o, n = o + i.toString().substring(r) + n, i = parseInt(i.toString().substring(0, r))
                }
                return n = i + n
            }

            function i(e, t, i) {
                if (!isNaN(e = Number(e))) {
                    if (i <= 0) return "";
                    var n = e.toFixed(i),
                        r = n.indexOf(".");
                    return -1 === r ? "" : t.DECIMAL_SEPARATOR + n.substring(r + 1)
                }
            }
            return e.prototype.formatBalance = function(e) {
                var n = t(Number(e), this.currencyData) + i(Number(e), this.currencyData, this.decimalPrecision);
                return "left" === this.currencyData.MAJOR_SYMBOL_ALIGNMENT ? n = "false" === this.currencyData.MAJOR_SYMBOL_PADDING_SPACE || !1 === this.currencyData.MAJOR_SYMBOL_PADDING_SPACE ? this.currencyData.MAJOR_SYMBOL + n : this.currencyData.MAJOR_SYMBOL + " " + n : "false" === this.currencyData.MAJOR_SYMBOL_PADDING_SPACE || !1 === this.currencyData.MAJOR_SYMBOL_PADDING_SPACE ? n += this.currencyData.MAJOR_SYMBOL : n = n + " " + this.currencyData.MAJOR_SYMBOL, n
            }, e.prototype.formatDecimal = function(e) {
                return e = Number(e), this.decimalPrecision <= 0 ? e : e.toFixed(this.decimalPrecision)
            }, e.prototype.formatFloat = function(e) {
                return e = Number(e), Number(this.decimalPrecision <= 0 ? e : e.toFixed(this.decimalPrecision))
            }, e.prototype.getCurrencyCode = function() {
                return this.currencyData["@currencyCode"]
            }, e
        }), define("skbJet/component/currencyHelper/currencyHelper", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/currencyHelper/Currency"], function(e, t) {
            function i(e) {
                if (Array.isArray(e.CurrencyResponse))
                    for (var i = 0; i < e.CurrencyResponse.length; i++) {
                        var n = new t(e.CurrencyResponse[i].CURRENCY);
                        f[n.getCurrencyCode()] = n
                    } else {
                        var n = new t(e.CurrencyResponse.CURRENCY);
                        f[p] = n
                    }
            }

            function n(e) {
                h = Number(e.serverConfig.denomamount), p = e.gameConfig.currencycode
            }

            function r(e, t) {
                return t || (t = p), f[t] ? f[t].formatBalance(e) : ""
            }

            function o(e) {
                return l(e.replace(/[^\d.]/g, ""))
            }

            function a(e, t) {
                return t || (t = p), f[t] ? f[t].formatDecimal(e) : ""
            }

            function s(e) {
                if (!isNaN(e = Number(e))) return parseInt(e)
            }

            function l(e, t) {
                return t || (t = p), f[t] ? f[t].formatFloat(e) : ""
            }

            function u(e) {
                return e * (1e3 * h) / 1e3
            }

            function c(e) {
                return 1e3 * e / (1e3 * h)
            }
            var h, p, f = {};
            return e.subscribe("platformMsg/ClientService/Game.Init", i), e.subscribe("platformMsg/Kernel/System.Init", n), {
                formatBalance: r,
                formatFloat: l,
                formatInteger: s,
                convertToNumber: o,
                formatDecimal: a,
                fromStakeUnits: u,
                toStakeUnits: c
            }
        }), define("game/data/setupData", [], function() {
            return {
                VERSION: "v1.2.0",
                DEV: !1,
                SOUND_ON: !0,
                MUSIC_ON: !0,
                ROLLUP_NO_ROLLUP_HOLD_TIME: 1,
                ROLLUP_TIME_UNIT: [800, 1500],
                ROLLUP_MIN_TIME: [1, 3],
                ROLLUP_MAX_TIME: [7, 12],
                ROLLUP_BIG_WIN_BELL_TIME: 2800,
                ROLLUP_BIG_WIN_MINIMUM_MUSIC_TIME: 3e3,
                WINLINE_SHOW_TIME: 750,
                BASE_GAME: "BaseGame",
                FREE_SPINS: "FreeSpin",
                GAME_DIMS: {
                    desktop: {
                        width: 1920,
                        height: 1080
                    },
                    mobileL: {
                        width: 960,
                        height: 540
                    },
                    mobileP: {
                        width: 540,
                        height: 960
                    },
                    mini: {
                        width: 480,
                        height: 320
                    }
                },
                PORTRAIT: "portrait",
                LANDSCAPE: "landscape",
                WINLINE_PRIZE_PULSE_TIME: 200,
                DELAY_BEFORE_END: 0,
                CIRCLE: "Circle",
                SQUARE: "Square",
                WIN_PRES_LAYOUT: [0, 4, 8, 12, 16, 20, 1, 5, 9, 13, 17, 21, 2, 6, 10, 14, 18, 22, 3, 7, 11, 15, 19, 23],
                SD_TURN_TIME: 1e3,
                SD_LENSFLARE_TIME: 1,
                SD_START_DELAY: 4e3,
                SD_SHAKE_TIME: 700,
                SD_PAUSE_BEFORE_WILD_ANIM: 500,
                SD_SHAKE_MAX: 5,
                SD_DELAY_BEFORE_START_SPIN: .4,
                SD_SPIN_TIME: .4,
                SD_DONUTA_ANIM_TIME: 2,
                SD_DONUT_DELAY: .1,
                FREE_SPINS_TRANSITION_TIME: 1,
                FREE_SPINS_BG_TRANSITION_TIME: 5,
                FREE_SPINS_START_TIME: 1,
                FREE_SPINS_INTRO_PANEL_TIME: 3e3,
                FREE_SPINS_PAUSE_BEFORE_INTRO_BACK_SPIN: 1500,
                FREE_SPINS_PAUSE_BEFORE_INTRO_FIRST_SPIN: 1e3,
                FREE_SPINS_CONGRATS_PANEL_TIME: 4e3,
                FREE_SPINS_REVERSE_REEL_SPEED: 400,
                FREE_SPINS_FLYING_DISCS_PER_REEL: 5,
                BIG_WIN_THRESHOLDS: [15, 30, 60, 120],
                BIG_WIN_HOLD_TIME: 2500,
                NORMAL_HOLD_TIME: 1e3,
                ROLLUP_FADE_TIME: 1e3,
                CLEAR_OUTGOING_SYMBOLS_DELAY: 300
            }
        }), define("game/configs/baseReelConfig", [], function() {
            var e = [200, 134],
                t = [174, 141],
                i = [0, 0];
            return {
                symbolSlotWidth: 0,
                symbolSlotHeight: 0,
                symbolSpacingW: 0,
                symbolSpacingH: 0,
                options: {
                    clip: [{
                        x: e[0],
                        y: e[1],
                        w: 6 * t[0] + 5 * i[0],
                        h: 4 * t[1] + 3 * i[1] - 1
                    }],
                    pos: {
                        x: 0,
                        y: 0
                    },
                    reels: [{
                        symbolCount: 4
                    }, {
                        symbolCount: 4
                    }, {
                        symbolCount: 4
                    }, {
                        symbolCount: 4
                    }, {
                        symbolCount: 4
                    }, {
                        symbolCount: 4
                    }]
                },
                symbolNames: ["s01", "s02", "s03", "s04", "s05", "s06", "r00", "r01", "r02", "r03", "r04", "r05", "b01", "w01"],
                spriteMap: {
                    s01: "Basic-Puma",
                    s02: "Basic-Bear",
                    s03: "Basic-Vase",
                    s04: "Basic-Mask",
                    s05: "Basic-Key",
                    s06: "Basic-Coin",
                    r00: "Basic-Solar-Disc-full",
                    r01: "Basic-Solar-Disc-full",
                    r02: "Basic-Solar-Disc-full",
                    r03: "Basic-Solar-Disc-full",
                    r04: "Basic-Solar-Disc-full",
                    r05: "Basic-Solar-Disc-full",
                    b01: "Basic-Bonus",
                    w01: "Basic-Wild"
                },
                spriteOffsets: {
                    r00: {
                        x: -382.5,
                        y: -370.5,
                        z: 2
                    },
                    r01: {
                        x: -382.5,
                        y: -370.5,
                        z: 2
                    },
                    r02: {
                        x: -382.5,
                        y: -370.5,
                        z: 2
                    },
                    r03: {
                        x: -382.5,
                        y: -370.5,
                        z: 2
                    },
                    r04: {
                        x: -382.5,
                        y: -370.5,
                        z: 2
                    },
                    r05: {
                        x: -382.5,
                        y: -370.5,
                        z: 2
                    }
                },
                StripInfo: {},
                locationsMap: ["L0C0R1", "L0C0R2", "L0C0R3", "L0C0R4", "L0C1R1", "L0C1R2", "L0C1R3", "L0C1R4", "L0C2R1", "L0C2R2", "L0C2R3", "L0C2R4", "L0C3R1", "L0C3R2", "L0C3R3", "L0C3R4", "L0C4R1", "L0C4R2", "L0C4R3", "L0C4R4", "L0C5R1", "L0C5R2", "L0C5R3", "L0C5R4"],
                locationCellMap: [0, 6, 12, 18, 1, 7, 13, 19, 2, 8, 14, 20, 3, 9, 15, 21, 4, 10, 16, 22, 5, 11, 17, 23]
            }
        }), define("game/utils/miscUtils", ["require", "game/data/setupData", "com/pixijs/pixi", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "game/configs/baseReelConfig"], function(e) {
            function t() {
                if (d.DEV) {
                    for (var e = ["NORMAL", "IMPORTANT", "WARNING", "BEWARE", "SUPER_IMPORTANT"], t = [], i = 0; i < arguments.length; i++) t.push(arguments[i]);
                    for (var n = e.indexOf(t[t.length - 1]), r = e[n > -1 ? n : 0], o = "", a = n > -1 ? t.length - 1 : t.length, i = 0; i < a; i++) o += t[i] + (i < a - 1 ? ", " : "");
                    r === e[4] || r === e[3] || r === e[2] || e[1]
                }
            }

            function i(e) {
                var t = [];
                for (var i in e) t.push(i);
                return t
            }

            function n(e, t, i) {
                void 0 === i && (i = !1);
                return e = e.pixiContainer ? e.pixiContainer : e, e.rotation = (i ? e.rotation : 0) + .0174532925 * t, r(e)
            }

            function r(e) {
                if (!e.rotation && e.pixiContainer) e = e.pixiContainer;
                else if (!e.pixiContainer && !e.rotation) return void t("miscUtils.getDegrees - " + e + " is not a MovieClip or Sprite with rotation property!", "WARNING");
                return e.rotation / .0174532925
            }

            function o(e) {
                return .0174532925 * e
            }

            function a(e, i) {
                return e[i] ? e[i] : (t("MISSING ASSET: '" + i + "'", "WARNING"), null)
            }

            function s(e, i) {
                if (void 0 === i && (i = "topLeft"), _.Texture.fromFrame(e)) {
                    var n = _.Texture.fromFrame(e),
                        r = new _.Sprite(n);
                    return "centre" === i ? r.anchor.set(.5, .5) : "bottomRight" === i ? r.anchor.set(1, 1) : "bottomCentre" === i && r.anchor.set(.5, 1), r
                }
                return t("miscUtils.spriteFromTexture(" + e + ") - Does not exist!", "WARNING"), {}
            }

            function l(e, i, n, r, o, a, l, u) {
                var c = [];
                void 0 === r && (r = 2), void 0 === o && (o = 1), void 0 === a && (a = !1), void 0 === l && (l = !1), void 0 === u && (u = !0);
                for (var h = [], p = i; p <= n; p += a ? 2 : 1) {
                    var f = e + function(e) {
                        return 3 === r ? e > 99 ? e : e > 9 ? "0" + e : "00" + e : 2 === r ? e > 9 ? e : "0" + e : e
                    }(p);
                    c.push(_.Texture.fromFrame(f)), l && h.push(f)
                }
                if (l) {
                    h = h.reverse();
                    for (var p = 1; p < h.length; p++)
                        if (u) {
                            var d = m.getPixiRenderer(),
                                g = s(h[p], "centre");
                            g.x = .5 * g.width, g.y = .5 * g.height, g.scaleX = -1;
                            var v = new _.Container;
                            v.addChild(g);
                            var y = new _.RenderTexture(new _.BaseRenderTexture(g.width, g.height, _.SCALE_MODES.LINEAR, 1));
                            d.render(v, y), c.push(y)
                        } else c.push(_.Texture.fromFrame(h[p]))
                }
                if (c.length > 0) {
                    var b = new _.extras.AnimatedSprite(c);
                    return b.animationSpeed = o, b
                }
                return t("miscUtils.createMovieClip() no frames found for:'" + e + "'!", "WARNING"), {}
            }

            function u(e, i, n) {
                var r = [];
                void 0 === i && (i = 1), void 0 === n && (n = "centre");
                for (var o = 0; o < e.length; o++) {
                    var a = e[o];
                    _.Texture.fromFrame(a) ? r.push(_.Texture.fromFrame(a)) : t("miscUtils.createMovieClip() frame:'" + a + "' not found!", "WARNING")
                }
                if (r.length > 0) {
                    var s = new _.extras.AnimatedSprite(r);
                    return s.animationSpeed = i, "centre" === n ? s.anchor.set(.5, .5) : "bottomRight" === n ? s.anchor.set(1, 1) : "bottomCentre" === n && s.anchor.set(.5, 1), s
                }
                return t("miscUtils.createMovieClipFromArray() no frame assets found! '" + e + "'", "WARNING"), {}
            }

            function c(e, t) {
                var i = [];
                if (e.length > -1)
                    for (var n = 0; n < e.length; n++) e[n][t] && i.push(e[n][t]);
                else i.push(e[t]);
                return i
            }

            function h(e, t) {
                if (e.length > -1) {
                    for (var i = 0; i < e.length; i++)
                        if (e[i]["@name"] === t) return e[i];
                    return null
                }
                return null
            }

            function p(e) {
                var i = g.locationsMap.indexOf(e);
                return i > -1 && i < 25 ? g.locationCellMap[i] : (t("winlineView.parseIndividualWinline() - impossible cell Number detected: " + i, "WARNING"), null)
            }

            function f(e, t) {
                var i = t ? Math.floor(16777215 * Math.random()) : 0,
                    n = new _.Graphics;
                return e && e.addChild(n), n.lineStyle(2, 0), n.beginFill(i, .5), n.drawCircle(0, 0, 10), n.endFill(), n.moveTo(0, -15), n.lineTo(0, 15), n.moveTo(-15, 0), n.lineTo(15, 0), n
            }
            var d = e("game/data/setupData"),
                _ = e("com/pixijs/pixi"),
                m = e("skbJet/component/gladPixiRenderer/gladPixiRenderer"),
                g = e("game/configs/baseReelConfig");
            return {
                log: t,
                keysInObject: i,
                rotateDegrees: n,
                getDegrees: r,
                degToRad: o,
                checkExists: a,
                spriteFromTexture: s,
                createMovieClip: l,
                createMovieClipFromArray: u,
                getDataFromElement: c,
                getElementFromName: h,
                cellFromLocationID: p,
                addMarker: f
            }
        }), define("game/data/stateEvents", ["skbJet/component/gameMsgBus/GameMsgBus", "game/utils/miscUtils"], function(e) {
            return {
                publish: function(t, i) {
                    void 0 === i && (i = {}), i.type = t, e.publish(t, i)
                },
                NEXT_STATE: "nextState",
                STATE_CHANGED: "stateChanged",
                START_BASE_SPIN: "se_startBaseSpin",
                FROM_BEFORE_SHOW_STAGE: "se_fromBeforeShowStage",
                FROM_START_GAME_INITIAL: "se_fromStartGameInitial",
                FROM_RECOVERY_GAME_IN_PROGRESS: "se_fromRecoveryGameInProgress",
                FROM_RECOVERY_GAME_IN_PROGRESS_NEXT: "se_fromRecoveryGameInProgressNext",
                FROM_BEFORE_REQUEST: "se_fromBeforeRequest",
                FROM_MAKE_REQUEST: "se_fromMakeRequest",
                FROM_RESOLVE_STAGE: "se_fromResolveStage",
                FROM_START_ROLLUP: "se_fromStartRollup",
                FROM_END_GAME: "se_fromEndGame",
                FROM_BEGIN_NEW_GAME: "se_fromBeginNewGame",
                FROM_EXIT_STAGE: "se_fromExitStage",
                FROM_FREE_SPIN_EXIT_ROLLUP: "se_fromFreeSpinExitRollup",
                FROM_ENTER_NEXT_STAGE: "se_fromEnterNextStage",
                FROM_IN_PROGRESS_STAGE: "se_fromInProgressStage",
                FROM_ABORT_NEXT_STAGE: "se_fromAbortNextStage",
                FROM_RESET_NEXT_STAGE: "se_fromResetNextStage"
            }
        }), define("game/data/gameDataModel", ["require", "game/utils/miscUtils", "game/data/setupData", "game/data/stateEvents"], function(e) {
            "use strict";
            var t = (e("game/utils/miscUtils"), e("game/data/setupData")),
                i = e("game/data/stateEvents"),
                n = {
                    LANDSCAPE: "landscape",
                    PORTRAIT: "portrait",
                    DESKTOP: "desktop",
                    MOBILE: "mobile",
                    MINI: "mini",
                    init: function(e) {
                        var r = e.assetPack.toLowerCase();
                        this.langCode = e.langCode, this.skinCode = e.skinCode, this.gameType = r === this.MOBILE ? this.MOBILE : r === this.MINI ? this.MINI : this.DESKTOP, this.windowWidth = Number(window.innerWidth), this.windowHeight = Number(window.innerHeight), this.isLandscape = this.gameWidth > this.gameHeight;
                        var o = t.GAME_DIMS.desktop;
                        this.gameWidth = o.width, this.gameHeight = o.height, this.gladWidth = .75 * o.width, this.gladHeight = .75 * o.height, this.stageAtLoad = "", this.currentState = "", this.currentGameState = "", this.freeSpinsDebugEnabled = !1, this.freeSpinPendingEvent = "", this.freeSpinsExit = !1, this.recoveryTypes = {
                            FREE_SPINS_START: "freeSpinsStart",
                            FREE_SPINS_MID: "freeSpinsMid",
                            FREE_SPINS_EXIT: "freeSpinsExit"
                        }, this.recoveryType, this.getPrefix = function(e) {
                            void 0 === e && (e = !1);
                            var t = {
                                general: "D-T-",
                                portrait: "D-T-",
                                landscape: "D-T-"
                            };
                            return this.gameType === this.MOBILE ? e ? this.isLandscape ? t.landscape : t.portrait : t.general : (this.gameType, this.MINI, "D-T-")
                        }, this.completeSpinEvent = function(e, r) {
                            var o = n.currentGameState === t.BASE_GAME,
                                a = o ? i.FROM_END_GAME : parseInt(r) > 0 ? i.FROM_IN_PROGRESS_STAGE : i.FROM_EXIT_STAGE;
                            !this.freeSpinsDebugEnabled || a !== i.FROM_IN_PROGRESS_STAGE && a !== i.FROM_EXIT_STAGE ? (this.freeSpinPendingEvent = "", setTimeout(function() {
                                i.publish(a)
                            }, t.DELAY_BEFORE_END)) : this.freeSpinPendingEvent = a
                        }, this.autoplayInProgress = !1
                    }
                };
            return n
        }), define("game/setup/WinlineHelper", ["skbJet/component/gameMsgBus/GameMsgBus"], function(e) {
            function t() {
                return {
                    id: "",
                    locations: [],
                    colour: "",
                    backgroundColour: "",
                    leftToRight: 0,
                    yOffset: 0
                }
            }

            function i(e) {
                var i, n, r, o, h = {},
                    p = e.PatternInfo.Pattern,
                    f = a.winlines,
                    d = a.locations;
                p.forEach(function(e, a) {
                    r = t(), r.id = e["@name"], o = s[a % s.length], r.colour = o.colour, r.backgroundColour = o.backgroundColour, r.leftToRight = o.leftToRight || 1, n = {
                        locations: []
                    }, e.Cell.forEach(function(e) {
                        r.locations.push(c.indexOf(e["@name"])), n.locations.push(c.indexOf(e["@name"]))
                    }), 0 === r.leftToRight && (r.locations.reverse(), n.locations.reverse()), d.push(n), i = r.locations[0], void 0 === h[i] ? h[i] = 0 : ++h[i], r.yOffset = l * u[h[i]], f.push(r)
                })
            }

            function n(e) {
                i(e.PaytableResponse)
            }

            function r() {
                return a.locations
            }
            var o = window.location.search.match(/&?assetPack=([^&]+)&?/)[1],
                a = {
                    winlines: [],
                    locations: [],
                    leftx: -20,
                    rightx: 662,
                    shortenright: 40,
                    shortenleft: 40
                },
                s = [{
                    colour: "0XFFFFFF",
                    backgroundColour: "0X4FEFFD",
                    leftToRight: 1
                }],
                l = "desktop" === o ? 14 : 11,
                u = [0, 1, -1, 2, -2, 3, -3, 4, -4, 5, -5, 6, -6, 7, -7, 8, -8, 9, -9, 10, -10],
                c = ["L0C0R1", "L0C0R2", "L0C0R3", "L0C0R4", "L0C1R1", "L0C1R2", "L0C1R3", "L0C1R4", "L0C2R1", "L0C2R2", "L0C2R3", "L0C2R4", "L0C3R1", "L0C3R2", "L0C3R3", "L0C3R4", "L0C4R1", "L0C4R2", "L0C4R3", "L0C4R4", "L0C5R1", "L0C5R2", "L0C5R3", "L0C5R4"];
            return e.subscribe("platformMsg/ClientService/Game.Init", n), {
                getLocations: r
            }
        }), define("skbJet/componentManchester/paylineDiagrams/PaylineDiagrams", [], function() {
            function e(e) {
                if (e.cellWidth = e.cellWidth || 10, e.cellHeight = e.cellHeight || 10, !e.reels) {
                    e.reels = [];
                    for (var t = 0; t < e.columns; t += 1) e.reels.push({
                        x: t * e.cellWidth,
                        y: 0,
                        h: e.rows
                    })
                }
                e.canvasH = 0, e.canvasW = 0, e.reels.forEach(function(t) {
                    var i = t.y + t.h * e.cellHeight + 1;
                    e.canvasH = Math.max(e.canvasH, i);
                    var n = t.x + e.cellWidth + 1;
                    e.canvasW = Math.max(e.canvasW, n)
                }), this.dimensions = e
            }
            return e.prototype.renderDiagram = function(e, t, i) {
                var n = window.devicePixelRatio || 1,
                    r = document.createElement("canvas"),
                    o = r.getContext("2d");
                r.width = this.dimensions.canvasW * n, r.height = this.dimensions.canvasH * n, r.style.width = this.dimensions.canvasW + "px", r.style.height = this.dimensions.canvasH + "px", o.scale(n, n), o.fillStyle = "#fff", o.fillRect(1, 1, this.dimensions.canvasW, this.dimensions.canvasH);
                for (var a = 0, s = 0; s < this.dimensions.reels.length; s += 1)
                    for (var l = this.dimensions.reels[s], u = 0; u < l.h; u += 1) {
                        var c = l.x,
                            h = l.y + u * this.dimensions.cellHeight;
                        o.fillStyle = "#333", o.fillRect(c, h, this.dimensions.cellWidth + 1, this.dimensions.cellHeight + 1), o.fillStyle = e.locations.indexOf(a) > -1 ? i : "#fff", o.fillRect(c + 1, h + 1, this.dimensions.cellWidth - 1, this.dimensions.cellHeight - 1), a += 1
                    }
                var p = document.createElement("div"),
                    f = document.createElement("div");
                return p.className = "paylineDiagram", f.className = "paylineCaption", f.textContent = t, p.appendChild(f), p.appendChild(r), p
            }, e.prototype.render = function(e, t) {
                t = t || "#36a9e2";
                var i = document.createElement("div");
                i.className = "paylineWrapper";
                for (var n = 0; n < e.length; n += 1) {
                    var r = this.renderDiagram(e[n], n + 1, t);
                    i.appendChild(r)
                }
                return i
            }, e
        }), define("game/setup/helpAndPaytableFiles", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/currencyHelper/currencyHelper", "game/data/gameDataModel", "game/data/stateEvents", "game/setup/WinlineHelper", "skbJet/componentManchester/paylineDiagrams/PaylineDiagrams"], function(e, t, i, n, r, o, a, s) {
            function l() {
                for (var e = document.getElementsByTagName("article"), t = 0; t < e.length; t++) e[t].addEventListener("mousedown", u, !1);
                document.addEventListener("mousemove", u, !1)
            }

            function u(e) {
                var t = e || window.event;
                t.returnValue = !1, t.preventDefault()
            }

            function c(e) {
                A = e.PaytableResponse.AwardCapInfo.CurrencyCap.AwardCap, "true" === e.PaytableResponse.PaytableStatistics["@singleRTP"] ? (I = e.PaytableResponse.PaytableStatistics["@maxSingleRTP"], C = e.PaytableResponse.PaytableStatistics["@minSingleRTP"]) : (I = e.PaytableResponse.PaytableStatistics["@maxRTP"], C = e.PaytableResponse.PaytableStatistics["@minRTP"]), I === C ? (i.i18n.Paytable.RTPvalue = i.i18n.Paytable.RTPvalue.replace("{@minRTP}", C), M = i.i18n.Paytable.RTPvalue) : (i.i18n.Paytable.RTPrange = i.i18n.Paytable.RTPrange.replace("{@minRTP}", C), i.i18n.Paytable.RTPrange = i.i18n.Paytable.RTPrange.replace("{@maxRTP}", I), M = i.i18n.Paytable.RTPrange), document.getElementById("searchContainer").style.display = "none", d()
            }

            function h() {
                g(), v(), b()
            }

            function p(e) {
                "BaseGame" === e.response.OutcomeDetail.NextStage && (L = !1, m()), x("game")
            }

            function f() {
                L = !0
            }

            function d() {
                e.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Register",
                    data: {
                        options: [{
                            type: "command",
                            name: "paytable",
                            text: i.i18n.MenuCommand.payTable,
                            enabled: 0
                        }]
                    }
                }), e.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Register",
                    data: {
                        options: [{
                            type: "command",
                            name: "howToPlay",
                            text: i.i18n.MenuCommand.howToPlay,
                            enabled: 0
                        }]
                    }
                })
            }

            function _() {
                e.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Control",
                    data: {
                        name: "howToPlay",
                        event: "enable",
                        params: [1]
                    }
                }), e.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Control",
                    data: {
                        name: "paytable",
                        event: "enable",
                        params: [1]
                    }
                })
            }

            function m() {
                e.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Control",
                    data: {
                        name: "howToPlay",
                        event: "enable",
                        params: [0]
                    }
                }), e.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Control",
                    data: {
                        name: "paytable",
                        event: "enable",
                        params: [0]
                    }
                })
            }

            function g() {
                var e = document.getElementById("gameRulesHeader"),
                    t = document.getElementById("paytableHeader");
                e.innerHTML = i.i18n.Game.gameRules, t.innerHTML = i.i18n.Game.payTable
            }

            function v() {
                var e = i.i18n.paytableHTML.replace(/\"/g, "'");
                e = e.replace("<winlinediagrams/>", D), e = e.replace("{awardCap}", n.formatBalance(A)), e = e.replace("{RTP}", M), e = e.replace("{minRTP}", C), e = e.replace("{maxRTP}", I), e = y(e), document.getElementById("paytableArticle").innerHTML = e;
                var t = i.i18n.helpHTML.replace(/\"/g, "'"),
                    r = document.getElementById("gameRulesArticle");
                t = y(t), r.innerHTML = t;
                var o = a.getLocations();
                document.getElementById("paylinetables").appendChild(N.render(o))
            }

            function y(e) {
                var t = r.getPrefix();
                return e = e.replace(/{s01}/g, i.getImgObj(t + "Basic-Puma").outerHTML), e = e.replace(/{s02}/g, i.getImgObj(t + "Basic-Bear").outerHTML), e = e.replace(/{s03}/g, i.getImgObj(t + "Basic-Vase").outerHTML), e = e.replace(/{s04}/g, i.getImgObj(t + "Basic-Mask").outerHTML), e = e.replace(/{s05}/g, i.getImgObj(t + "Basic-Key").outerHTML), e = e.replace(/{s06}/g, i.getImgObj(t + "Basic-Coin").outerHTML), e = e.replace(/{w01}/g, i.getImgObj(t + "Basic-Wild").outerHTML), e = e.replace(/{r00}/g, i.getImgObj(t + "Basic-Solar-Disc-Paytable").outerHTML), e = e.replace(/{b01}/g, i.getImgObj(t + "Basic-Bonus").outerHTML)
            }

            function b() {
                var e = document.getElementsByClassName("closeBtn");
                Array.prototype.forEach.call(e, function(e) {
                    e.innerHTML = i.i18n.Game.buttonClose, e.onclick = function() {
                        x("game")
                    }
                })
            }

            function x(e) {
                var t = document.getElementsByClassName("tab");
                "game" === e && (document.getElementById("searchContainer").style.display = "none");
                for (var i = 0; i < t.length; i++) t[i].style.display = "none";
                document.getElementById(e).style.display = "block"
            }

            function S() {
                L = !1, m()
            }

            function T(e) {
                if ("paytable" === e.option || "howToPlay" === e.option) {
                    var t = "howToPlay" === e.option ? "gameRules" : "paytable";
                    document.getElementById("searchContainer").style.display = "block", x("block" === document.getElementById(t).style.display ? "game" : t)
                }
            }

            function w() {
                m()
            }

            function E(e) {
                "BaseGame" === e.response.OutcomeDetail.NextStage && (L = !0, _())
            }

            function P() {
                m()
            }

            function R() {
                L && _()
            }

            function O(e) {
                "BaseGame.beginNewGame" === e.state ? _() : m()
            }
            var A, I, C, M, D, N = new s({
                    columns: 6,
                    rows: 4
                }),
                L = !0;
            return e.subscribe("platformMsg/Kernel/System.Init", l), e.subscribe("platformMsg/ClientService/Game.Init", c), e.subscribe("onBeforeShowStage", h), e.subscribe("onBeforeRequest", p), e.subscribe("onBeginNewGame", f), e.subscribe("onAbortNextStage", w), e.subscribe("onResetNextStage", E), e.subscribe("platformMsg/ConsoleService/Game.Control", T), e.subscribe("onStartGameInProgressStage", S), e.subscribe("helpFiles.enableConsole", _), e.subscribe("AutoSpin.enabled", P), e.subscribe("AutoSpin.disabled", R), e.subscribe(o.STATE_CHANGED, O), e.subscribe("UI.AutoSpinDialogueOpen", m), e.subscribe("UI.AutoSpinDialogueClose", _), {}
        }), define("skbJet/component/channelAudioPlayer/IChannelAudioPlayer", ["skbJet/component/utils/Interface"], function(e) {
            return new e(["play", "stopChannel", "stopAll", "pauseChannel", "pauseAll", "resumeChannel", "resumeAll", "muteChannel", "muteAll", "volume", "fadeOut", "playAndFadeIn", "cancelFade", "gameAudioControlChanged", "consoleAudioControlChanged", "enableAudioDialog"])
        }), define("skbJet/component/deviceCompatibility/IWindowSize", ["skbJet/component/utils/Interface"], function(e) {
            return new e(["getDeviceWidth", "getDeviceHeight"])
        }), define("skbJet/component/deviceCompatibility/IOSWindow", ["skbJet/component/deviceCompatibility/IWindowSize"], function(e) {
            var t = {
                getDeviceWidth: function() {
                    return navigator.userAgent.match(/Version/) ? window.innerWidth : window.innerWidth >= window.innerHeight ? window.innerWidth >= screen.height ? screen.height : window.innerWidth : window.innerWidth >= screen.width ? screen.width : window.innerWidth
                },
                getDeviceHeight: function() {
                    return navigator.userAgent.match(/Version/) ? window.innerHeight : window.innerWidth >= window.innerHeight ? window.innerHeight > screen.width ? screen.width : window.innerHeight : window.innerHeight > screen.height ? screen.height : window.innerHeight
                }
            };
            return e.implementedBy(t), t
        }), define("skbJet/component/deviceCompatibility/AndroidWindow", ["skbJet/component/deviceCompatibility/IWindowSize"], function(e) {
            var t = {
                getDeviceWidth: function() {
                    return Number(window.innerWidth)
                },
                getDeviceHeight: function() {
                    return Number(window.innerHeight)
                }
            };
            return e.implementedBy(t), t
        }), define("skbJet/component/deviceCompatibility/windowSize", ["skbJet/component/deviceCompatibility/IWindowSize", "skbJet/component/deviceCompatibility/IOSWindow", "skbJet/component/deviceCompatibility/AndroidWindow"], function(e, t, i) {
            var n = function() {
                    return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream
                }() ? t : i,
                r = {
                    getDeviceWidth: n.getDeviceWidth,
                    getDeviceHeight: n.getDeviceHeight
                };
            return e.implementedBy(r), r
        }), define("skbJet/component/channelAudioPlayer/channelAudioPlayerHelper", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/resourceLoader/resourceLib", "skbJet/component/deviceCompatibility/windowSize"], function(e, t, i) {
            function n() {}

            function r(e) {
                d = e
            }

            function o(e) {
                f = e
            }

            function a(t) {
                function n() {
                    var e, t;
                    S ? (e = i.getDeviceWidth(), t = i.getDeviceHeight()) : (e = b.clientWidth, t = b.clientHeight);
                    var n = e > t ? t : e,
                        r = n > 600 ? n / 600 : 1;
                    a.style.transform = "scale(" + r + ")"
                }

                function r(t) {
                    var i = t || window.event;
                    i.stopPropagation(), i.cancelBubble = !0, b.removeChild(o);
                    var r = !1;
                    "audio_btn_YES" === this.id && (r = !0), f && f(r), setTimeout(function() {
                        d.muteAll(!r), l(r), e.publish("audioPlayer.playerSelectedWhenGameLaunch", r)
                    }, 110), window.removeEventListener("resize", n)
                }
                if (_) {
                    var o = document.createElement("div");
                    o.style.width = "100%", o.style.height = "100%", o.style.backgroundColor = "rgba(0,0,0,.9)", o.style.position = "absolute", o.style.zIndex = 8, o.style.top = "0", o.style.left = "0", b.appendChild(o);
                    var a = document.createElement("div");
                    a.setAttribute("style", "width:240px; height:100px; margin-left:auto; margin-right:auto; background-color:#000000; border:2px solid #ffffff; border-radius:14px; position:relative; z-index:10; top:50%; margin-top:-50px;"), n(), window.addEventListener("resize", n), o.appendChild(a);
                    var s = document.createElement("p");
                    s.style.width = "220px", s.style.height = "40px", s.style.margin = "10px", s.style.color = "white", s.style.font = "normal 20px Arial", s.style.textAlign = "center", s.innerHTML = t.query, a.appendChild(s);
                    var u = document.createElement("button");
                    u.style.width = "60px", u.style.height = "26px", u.style.backgroundColor = "#DDDDDD", u.style.border = "2px solid white", u.style.borderRadius = "5px", u.style.float = "left", u.style.marginLeft = "33px", u.style.color = "balck", u.innerHTML = t.yes, u.id = "audio_btn_YES", a.appendChild(u);
                    var c = document.createElement("button");
                    c.style.width = "60px", c.style.height = "26px", c.style.backgroundColor = "#DDDDDD", c.style.border = "2px solid white", c.style.borderRadius = "5px", c.style.float = "right", c.style.marginRight = "33px", c.style.color = "balck", c.innerHTML = t.no, c.id = "audio_btn_NO", a.appendChild(c), u.addEventListener("click", r), c.addEventListener("click", r)
                }
            }

            function s(i) {
                if (!v) {
                    var n = null,
                        r = x.gameConfig.gameType.toUpperCase();
                    if (n = "L" !== r || !x.gameConfig.soundStartDisabled, "INT" !== m)
                        if (_) {
                            var o = {
                                query: t.i18n.game.audioLoader.confirm,
                                yes: t.i18n.game.audioLoader.yes,
                                no: t.i18n.game.audioLoader.no
                            };
                            a(o)
                        } else d.muteAll(!n), l(n), h(n);
                    else "S" === r && ("STD" === g ? n = !0 : "BaseGame" === i.response.OutcomeDetail.NextStage ? (n = !1, localStorage.setItem("audioDefaultSwitchForDesktopmini" + y, n)) : n = null !== localStorage.getItem("audioDefaultSwitchForDesktopmini" + y) && "true" === localStorage.getItem("audioDefaultSwitchForDesktopmini" + y)), l(n), setTimeout(function() {
                        d.muteAll(!n), e.publish("audioPlayer.playerSelectedWhenGameLaunch", n)
                    }, 20)
                }
            }

            function l(i) {
                var n = "Sound",
                    r = "On",
                    o = "Off";
                v = !0, t.i18n.game.MenuCommand.audio && (n = t.i18n.game.MenuCommand.audio.sound, r = t.i18n.game.MenuCommand.audio.on, o = t.i18n.game.MenuCommand.audio.off), e.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Register",
                    data: {
                        options: [{
                            name: "sound",
                            text: n,
                            type: "list",
                            enabled: 1,
                            value: i ? 0 : 1,
                            values: ["0", "1"],
                            valueText: [r, o]
                        }]
                    }
                })
            }

            function u(e) {
                "sound" === e.option && d.muteAll("1" === e.value), "INT" === m && "STD" !== g && localStorage.setItem("audioDefaultSwitchForDesktopmini" + y, "1" !== e.value)
            }

            function c(e) {
                m = e.serverConfig.channel, g = e.serverConfig.presenttype, y = e.serverConfig.softwareid, x = e
            }

            function h(t) {
                function i() {
                    b.removeEventListener(n, i, !0), b.removeEventListener(r, i, !0), f && f(t), setTimeout(function() {
                        e.publish("audioPlayer.playerSelectedWhenGameLaunch", t)
                    }, 110)
                }
                var n, r, o = !!window.PointerEvent,
                    a = "ontouchstart" in window;
                n = o ? "pointerdown" : "mousedown", a && (r = "touchstart"), b.addEventListener(n, i, !0), b.addEventListener(r, i, !0)
            }

            function p() {
                function i() {
                    if ("device" === n.config.screenEnvironment)
                        if (_) {
                            var o = {
                                query: t.i18n.game.audioLoader.confirm,
                                yes: t.i18n.game.audioLoader.yes,
                                no: t.i18n.game.audioLoader.no
                            };
                            a(o)
                        } else d.muteAll(r), h(!r);
                    else d.muteAll(r), e.publish("audioPlayer.playerSelectedWhenGameLaunch", !r);
                    e.unsubscribe("SKBeInstant.gameParametersUpdated", i)
                }
                var n = require("skbJet/component/SKBeInstant/SKBeInstant");
                if (!(S = n.isSKB())) {
                    b = n.getGameContainerElem();
                    var r = n.config.soundStartDisabled;
                    e.subscribe("SKBeInstant.gameParametersUpdated", i)
                }
            }
            var f, d = {
                    muteAll: n,
                    pauseAll: n,
                    resumeAll: n
                },
                _ = !1,
                m = null,
                g = null,
                v = !1,
                y = null,
                b = document.getElementById("game"),
                x = null,
                S = !0;
            return document.addEventListener("visibilitychange", function() {
                "hidden" === document.visibilityState ? d.pauseAll() : d.resumeAll()
            }), e.subscribe("platformMsg/Kernel/System.Init", c), e.subscribe("platformMsg/ConsoleService/Game.Control", u), e.subscribe("onBeforeShowStage", s), e.subscribe("jLotteryGame.assetsLoadedAndGameReady", p), {
                setChannelAudioPlayer: r,
                setPlayerAudioChoiceCallBack: o,
                gameAudioControlChanged: function(t) {
                    var i = 0;
                    t && (i = 1), e.publish("toPlatform", {
                        channel: "Game",
                        topic: "Game.Control",
                        data: {
                            name: "sound",
                            event: "change",
                            params: [i]
                        }
                    })
                },
                consoleAudioControlChanged: function(e) {
                    var t = !1;
                    return "sound" === e.option && "1" === e.value && (t = !0), t
                },
                enableAudioDialog: function(e) {
                    _ = void 0 !== e && null !== e && e
                }
            }
        }),
        function() {
            "use strict";
            var e = function() {
                this.init()
            };
            e.prototype = {
                init: function() {
                    var e = this || t;
                    return e._counter = 1e3, e._html5AudioPool = [], e.html5PoolSize = 10, e._codecs = {}, e._howls = [], e._muted = !1, e._volume = 1, e._canPlayEvent = "canplaythrough", e._navigator = "undefined" != typeof window && window.navigator ? window.navigator : null, e.masterGain = null, e.noAudio = !1, e.usingWebAudio = !0, e.autoSuspend = !0, e.ctx = null, e.autoUnlock = !0, e._setup(), e
                },
                volume: function(e) {
                    var i = this || t;
                    if (e = parseFloat(e), i.ctx || u(), void 0 !== e && e >= 0 && e <= 1) {
                        if (i._volume = e, i._muted) return i;
                        i.usingWebAudio && i.masterGain.gain.setValueAtTime(e, t.ctx.currentTime);
                        for (var n = 0; n < i._howls.length; n++)
                            if (!i._howls[n]._webAudio)
                                for (var r = i._howls[n]._getSoundIds(), o = 0; o < r.length; o++) {
                                    var a = i._howls[n]._soundById(r[o]);
                                    a && a._node && (a._node.volume = a._volume * e)
                                }
                        return i
                    }
                    return i._volume
                },
                mute: function(e) {
                    var i = this || t;
                    i.ctx || u(), i._muted = e, i.usingWebAudio && i.masterGain.gain.setValueAtTime(e ? 0 : i._volume, t.ctx.currentTime);
                    for (var n = 0; n < i._howls.length; n++)
                        if (!i._howls[n]._webAudio)
                            for (var r = i._howls[n]._getSoundIds(), o = 0; o < r.length; o++) {
                                var a = i._howls[n]._soundById(r[o]);
                                a && a._node && (a._node.muted = !!e || a._muted)
                            }
                    return i
                },
                unload: function() {
                    for (var e = this || t, i = e._howls.length - 1; i >= 0; i--) e._howls[i].unload();
                    return e.usingWebAudio && e.ctx && void 0 !== e.ctx.close && (e.ctx.close(), e.ctx = null, u()), e
                },
                codecs: function(e) {
                    return (this || t)._codecs[e.replace(/^x-/, "")]
                },
                _setup: function() {
                    var e = this || t;
                    if (e.state = e.ctx ? e.ctx.state || "suspended" : "suspended", e._autoSuspend(), !e.usingWebAudio)
                        if ("undefined" != typeof Audio) try {
                            var i = new Audio;
                            void 0 === i.oncanplaythrough && (e._canPlayEvent = "canplay")
                        } catch (t) {
                            e.noAudio = !0
                        } else e.noAudio = !0;
                    try {
                        var i = new Audio;
                        i.muted && (e.noAudio = !0)
                    } catch (e) {}
                    return e.noAudio || e._setupCodecs(), e
                },
                _setupCodecs: function() {
                    var e = this || t,
                        i = null;
                    try {
                        i = "undefined" != typeof Audio ? new Audio : null
                    } catch (t) {
                        return e
                    }
                    if (!i || "function" != typeof i.canPlayType) return e;
                    var n = i.canPlayType("audio/mpeg;").replace(/^no$/, ""),
                        r = e._navigator && e._navigator.userAgent.match(/OPR\/([0-6].)/g),
                        o = r && parseInt(r[0].split("/")[1], 10) < 33;
                    return e._codecs = {
                        mp3: !(o || !n && !i.canPlayType("audio/mp3;").replace(/^no$/, "")),
                        mpeg: !!n,
                        opus: !!i.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/, ""),
                        ogg: !!i.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/, ""),
                        oga: !!i.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/, ""),
                        wav: !!i.canPlayType('audio/wav; codecs="1"').replace(/^no$/, ""),
                        aac: !!i.canPlayType("audio/aac;").replace(/^no$/, ""),
                        caf: !!i.canPlayType("audio/x-caf;").replace(/^no$/, ""),
                        m4a: !!(i.canPlayType("audio/x-m4a;") || i.canPlayType("audio/m4a;") || i.canPlayType("audio/aac;")).replace(/^no$/, ""),
                        mp4: !!(i.canPlayType("audio/x-mp4;") || i.canPlayType("audio/mp4;") || i.canPlayType("audio/aac;")).replace(/^no$/, ""),
                        weba: !!i.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/, ""),
                        webm: !!i.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/, ""),
                        dolby: !!i.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/, ""),
                        flac: !!(i.canPlayType("audio/x-flac;") || i.canPlayType("audio/flac;")).replace(/^no$/, "")
                    }, e
                },
                _unlockAudio: function() {
                    var e = this || t;
                    if (!e._audioUnlocked && e.ctx) {
                        e._audioUnlocked = !1, e.autoUnlock = !1, e._mobileUnloaded || 44100 === e.ctx.sampleRate || (e._mobileUnloaded = !0, e.unload()), e._scratchBuffer = e.ctx.createBuffer(1, 1, 22050);
                        var i = function(t) {
                            for (var n = 0; n < e.html5PoolSize; n++) try {
                                var r = new Audio;
                                r._unlocked = !0, e._releaseHtml5Audio(r)
                            } catch (t) {
                                e.noAudio = !0
                            }
                            for (var n = 0; n < e._howls.length; n++)
                                if (!e._howls[n]._webAudio)
                                    for (var o = e._howls[n]._getSoundIds(), a = 0; a < o.length; a++) {
                                        var s = e._howls[n]._soundById(o[a]);
                                        s && s._node && !s._node._unlocked && (s._node._unlocked = !0, s._node.load())
                                    }
                            e._autoResume();
                            var l = e.ctx.createBufferSource();
                            l.buffer = e._scratchBuffer, l.connect(e.ctx.destination), void 0 === l.start ? l.noteOn(0) : l.start(0), "function" == typeof e.ctx.resume && e.ctx.resume(), l.onended = function() {
                                l.disconnect(0), e._audioUnlocked = !0, document.removeEventListener("touchstart", i, !0), document.removeEventListener("touchend", i, !0), document.removeEventListener("click", i, !0);
                                for (var t = 0; t < e._howls.length; t++) e._howls[t]._emit("unlock")
                            }
                        };
                        return document.addEventListener("touchstart", i, !0), document.addEventListener("touchend", i, !0), document.addEventListener("click", i, !0), e
                    }
                },
                _obtainHtml5Audio: function() {
                    var e = this || t;
                    if (e._html5AudioPool.length) return e._html5AudioPool.pop();
                    var i = (new Audio).play();
                    return i && "undefined" != typeof Promise && (i instanceof Promise || "function" == typeof i.then) && i.catch(function() {}), new Audio
                },
                _releaseHtml5Audio: function(e) {
                    var i = this || t;
                    return e._unlocked && i._html5AudioPool.push(e), i
                },
                _autoSuspend: function() {
                    var e = this;
                    if (e.autoSuspend && e.ctx && void 0 !== e.ctx.suspend && t.usingWebAudio) {
                        for (var i = 0; i < e._howls.length; i++)
                            if (e._howls[i]._webAudio)
                                for (var n = 0; n < e._howls[i]._sounds.length; n++)
                                    if (!e._howls[i]._sounds[n]._paused) return e;
                        return e._suspendTimer && clearTimeout(e._suspendTimer), e._suspendTimer = setTimeout(function() {
                            e.autoSuspend && (e._suspendTimer = null, e.state = "suspending", e.ctx.suspend().then(function() {
                                e.state = "suspended", e._resumeAfterSuspend && (delete e._resumeAfterSuspend, e._autoResume())
                            }))
                        }, 3e4), e
                    }
                },
                _autoResume: function() {
                    var e = this;
                    if (e.ctx && void 0 !== e.ctx.resume && t.usingWebAudio) return "running" === e.state && e._suspendTimer ? (clearTimeout(e._suspendTimer), e._suspendTimer = null) : "suspended" === e.state ? (e.ctx.resume().then(function() {
                        e.state = "running";
                        for (var t = 0; t < e._howls.length; t++) e._howls[t]._emit("resume")
                    }), e._suspendTimer && (clearTimeout(e._suspendTimer), e._suspendTimer = null)) : "suspending" === e.state && (e._resumeAfterSuspend = !0), e
                }
            };
            var t = new e,
                i = function(e) {
                    var t = this;
                    e.src && 0 !== e.src.length && t.init(e)
                };
            i.prototype = {
                init: function(e) {
                    var i = this;
                    return t.ctx || u(), i._autoplay = e.autoplay || !1, i._format = "string" != typeof e.format ? e.format : [e.format], i._html5 = e.html5 || !1, i._muted = e.mute || !1, i._loop = e.loop || !1, i._pool = e.pool || 5, i._preload = "boolean" != typeof e.preload || e.preload, i._rate = e.rate || 1, i._sprite = e.sprite || {}, i._src = "string" != typeof e.src ? e.src : [e.src], i._volume = void 0 !== e.volume ? e.volume : 1, i._xhrWithCredentials = e.xhrWithCredentials || !1, i._duration = 0, i._state = "unloaded", i._sounds = [], i._endTimers = {}, i._queue = [], i._playLock = !1, i._onend = e.onend ? [{
                        fn: e.onend
                    }] : [], i._onfade = e.onfade ? [{
                        fn: e.onfade
                    }] : [], i._onload = e.onload ? [{
                        fn: e.onload
                    }] : [], i._onloaderror = e.onloaderror ? [{
                        fn: e.onloaderror
                    }] : [], i._onplayerror = e.onplayerror ? [{
                        fn: e.onplayerror
                    }] : [], i._onpause = e.onpause ? [{
                        fn: e.onpause
                    }] : [], i._onplay = e.onplay ? [{
                        fn: e.onplay
                    }] : [], i._onstop = e.onstop ? [{
                        fn: e.onstop
                    }] : [], i._onmute = e.onmute ? [{
                        fn: e.onmute
                    }] : [], i._onvolume = e.onvolume ? [{
                        fn: e.onvolume
                    }] : [], i._onrate = e.onrate ? [{
                        fn: e.onrate
                    }] : [], i._onseek = e.onseek ? [{
                        fn: e.onseek
                    }] : [], i._onunlock = e.onunlock ? [{
                        fn: e.onunlock
                    }] : [], i._onresume = [], i._webAudio = t.usingWebAudio && !i._html5, void 0 !== t.ctx && t.ctx && t.autoUnlock && t._unlockAudio(), t._howls.push(i), i._autoplay && i._queue.push({
                        event: "play",
                        action: function() {
                            i.play()
                        }
                    }), i._preload && i.load(), i
                },
                load: function() {
                    var e = this,
                        i = null;
                    if (t.noAudio) return void e._emit("loaderror", null, "No audio support.");
                    "string" == typeof e._src && (e._src = [e._src]);
                    for (var r = 0; r < e._src.length; r++) {
                        var a, s;
                        if (e._format && e._format[r]) a = e._format[r];
                        else {
                            if ("string" != typeof(s = e._src[r])) {
                                e._emit("loaderror", null, "Non-string found in selected audio sources - ignoring.");
                                continue
                            }
                            a = /^data:audio\/([^;,]+);/i.exec(s), a || (a = /\.([^.]+)$/.exec(s.split("?", 1)[0])), a && (a = a[1].toLowerCase())
                        }
                        if (a && t.codecs(a)) {
                            i = e._src[r];
                            break
                        }
                    }
                    return i ? (e._src = i, e._state = "loading", "https:" === window.location.protocol && "http:" === i.slice(0, 5) && (e._html5 = !0, e._webAudio = !1), new n(e), e._webAudio && o(e), e) : void e._emit("loaderror", null, "No codec support for selected audio sources.")
                },
                play: function(e, i) {
                    var n = this,
                        r = null;
                    if ("number" == typeof e) r = e, e = null;
                    else {
                        if ("string" == typeof e && "loaded" === n._state && !n._sprite[e]) return null;
                        if (void 0 === e && (e = "__default", !n._playLock)) {
                            for (var o = 0, a = 0; a < n._sounds.length; a++) n._sounds[a]._paused && !n._sounds[a]._ended && (o++, r = n._sounds[a]._id);
                            1 === o ? e = null : r = null
                        }
                    }
                    var s = r ? n._soundById(r) : n._inactiveSound();
                    if (!s) return null;
                    if (r && !e && (e = s._sprite || "__default"), "loaded" !== n._state) {
                        s._sprite = e, s._ended = !1;
                        var l = s._id;
                        return n._queue.push({
                            event: "play",
                            action: function() {
                                n.play(l)
                            }
                        }), l
                    }
                    if (r && !s._paused) return i || n._loadQueue("play"), s._id;
                    n._webAudio && t._autoResume();
                    var u = Math.max(0, s._seek > 0 ? s._seek : n._sprite[e][0] / 1e3),
                        c = Math.max(0, (n._sprite[e][0] + n._sprite[e][1]) / 1e3 - u),
                        h = 1e3 * c / Math.abs(s._rate),
                        p = n._sprite[e][0] / 1e3,
                        f = (n._sprite[e][0] + n._sprite[e][1]) / 1e3,
                        d = !(!s._loop && !n._sprite[e][2]);
                    s._sprite = e, s._ended = !1;
                    var _ = function() {
                        s._paused = !1, s._seek = u, s._start = p, s._stop = f, s._loop = d
                    };
                    if (u >= f) return void n._ended(s);
                    var m = s._node;
                    if (n._webAudio) {
                        var g = function() {
                            n._playLock = !1, _(), n._refreshBuffer(s);
                            var e = s._muted || n._muted ? 0 : s._volume;
                            m.gain.setValueAtTime(e, t.ctx.currentTime), s._playStart = t.ctx.currentTime, void 0 === m.bufferSource.start ? s._loop ? m.bufferSource.noteGrainOn(0, u, 86400) : m.bufferSource.noteGrainOn(0, u, c) : s._loop ? m.bufferSource.start(0, u, 86400) : m.bufferSource.start(0, u, c), h !== 1 / 0 && (n._endTimers[s._id] = setTimeout(n._ended.bind(n, s), h)), i || setTimeout(function() {
                                n._emit("play", s._id), n._loadQueue()
                            }, 0)
                        };
                        "running" === t.state ? g() : (n._playLock = !0, n.once("resume", g), n._clearTimer(s._id))
                    } else {
                        var v = function() {
                            m.currentTime = u, m.muted = s._muted || n._muted || t._muted || m.muted, m.volume = s._volume * t.volume(), m.playbackRate = s._rate;
                            try {
                                var r = m.play();
                                if (r && "undefined" != typeof Promise && (r instanceof Promise || "function" == typeof r.then) ? (n._playLock = !0, _(), r.then(function() {
                                        n._playLock = !1, m._unlocked = !0, i || (n._emit("play", s._id), n._loadQueue())
                                    }).catch(function() {
                                        n._playLock = !1, n._emit("playerror", s._id, "Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."), s._ended = !0, s._paused = !0
                                    })) : i || (n._playLock = !1, _(), n._emit("play", s._id), n._loadQueue()), m.playbackRate = s._rate, m.paused) return void n._emit("playerror", s._id, "Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");
                                "__default" !== e || s._loop ? n._endTimers[s._id] = setTimeout(n._ended.bind(n, s), h) : (n._endTimers[s._id] = function() {
                                    n._ended(s), m.removeEventListener("ended", n._endTimers[s._id], !1)
                                }, m.addEventListener("ended", n._endTimers[s._id], !1))
                            } catch (e) {
                                n._emit("playerror", s._id, e)
                            }
                        };
                        "data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA" === m.src && (m.src = n._src, m.load());
                        var y = window && window.ejecta || !m.readyState && t._navigator.isCocoonJS;
                        if (m.readyState >= 3 || y) v();
                        else {
                            n._playLock = !0;
                            var b = function() {
                                v(), m.removeEventListener(t._canPlayEvent, b, !1)
                            };
                            m.addEventListener(t._canPlayEvent, b, !1), n._clearTimer(s._id)
                        }
                    }
                    return s._id
                },
                pause: function(e) {
                    var t = this;
                    if ("loaded" !== t._state || t._playLock) return t._queue.push({
                        event: "pause",
                        action: function() {
                            t.pause(e)
                        }
                    }), t;
                    for (var i = t._getSoundIds(e), n = 0; n < i.length; n++) {
                        t._clearTimer(i[n]);
                        var r = t._soundById(i[n]);
                        if (r && !r._paused && (r._seek = t.seek(i[n]), r._rateSeek = 0, r._paused = !0, t._stopFade(i[n]), r._node))
                            if (t._webAudio) {
                                if (!r._node.bufferSource) continue;
                                void 0 === r._node.bufferSource.stop ? r._node.bufferSource.noteOff(0) : r._node.bufferSource.stop(0), t._cleanBuffer(r._node)
                            } else isNaN(r._node.duration) && r._node.duration !== 1 / 0 || r._node.pause();
                        arguments[1] || t._emit("pause", r ? r._id : null)
                    }
                    return t
                },
                stop: function(e, t) {
                    var i = this;
                    if ("loaded" !== i._state || i._playLock) return i._queue.push({
                        event: "stop",
                        action: function() {
                            i.stop(e)
                        }
                    }), i;
                    for (var n = i._getSoundIds(e), r = 0; r < n.length; r++) {
                        i._clearTimer(n[r]);
                        var o = i._soundById(n[r]);
                        o && (o._seek = o._start || 0, o._rateSeek = 0, o._paused = !0, o._ended = !0, i._stopFade(n[r]), o._node && (i._webAudio ? o._node.bufferSource && (void 0 === o._node.bufferSource.stop ? o._node.bufferSource.noteOff(0) : o._node.bufferSource.stop(0), i._cleanBuffer(o._node)) : isNaN(o._node.duration) && o._node.duration !== 1 / 0 || (o._node.currentTime = o._start || 0, o._node.pause(), o._node.duration === 1 / 0 && i._clearSound(o._node))), t || i._emit("stop", o._id))
                    }
                    return i
                },
                mute: function(e, i) {
                    var n = this;
                    if ("loaded" !== n._state || n._playLock) return n._queue.push({
                        event: "mute",
                        action: function() {
                            n.mute(e, i)
                        }
                    }), n;
                    if (void 0 === i) {
                        if ("boolean" != typeof e) return n._muted;
                        n._muted = e
                    }
                    for (var r = n._getSoundIds(i), o = 0; o < r.length; o++) {
                        var a = n._soundById(r[o]);
                        a && (a._muted = e, a._interval && n._stopFade(a._id), n._webAudio && a._node ? a._node.gain.setValueAtTime(e ? 0 : a._volume, t.ctx.currentTime) : a._node && (a._node.muted = !!t._muted || e), n._emit("mute", a._id))
                    }
                    return n
                },
                volume: function() {
                    var e, i, n = this,
                        r = arguments;
                    if (0 === r.length) return n._volume;
                    1 === r.length || 2 === r.length && void 0 === r[1] ? n._getSoundIds().indexOf(r[0]) >= 0 ? i = parseInt(r[0], 10) : e = parseFloat(r[0]) : r.length >= 2 && (e = parseFloat(r[0]), i = parseInt(r[1], 10));
                    var o;
                    if (!(void 0 !== e && e >= 0 && e <= 1)) return o = i ? n._soundById(i) : n._sounds[0], o ? o._volume : 0;
                    if ("loaded" !== n._state || n._playLock) return n._queue.push({
                        event: "volume",
                        action: function() {
                            n.volume.apply(n, r)
                        }
                    }), n;
                    void 0 === i && (n._volume = e), i = n._getSoundIds(i);
                    for (var a = 0; a < i.length; a++)(o = n._soundById(i[a])) && (o._volume = e, r[2] || n._stopFade(i[a]), n._webAudio && o._node && !o._muted ? o._node.gain.setValueAtTime(e, t.ctx.currentTime) : o._node && !o._muted && (o._node.volume = e * t.volume()), n._emit("volume", o._id));
                    return n
                },
                fade: function(e, i, n, r) {
                    var o = this;
                    if ("loaded" !== o._state || o._playLock) return o._queue.push({
                        event: "fade",
                        action: function() {
                            o.fade(e, i, n, r)
                        }
                    }), o;
                    e = parseFloat(e), i = parseFloat(i), n = parseFloat(n), o.volume(e, r);
                    for (var a = o._getSoundIds(r), s = 0; s < a.length; s++) {
                        var l = o._soundById(a[s]);
                        if (l) {
                            if (r || o._stopFade(a[s]), o._webAudio && !l._muted) {
                                var u = t.ctx.currentTime,
                                    c = u + n / 1e3;
                                l._volume = e, l._node.gain.setValueAtTime(e, u), l._node.gain.linearRampToValueAtTime(i, c)
                            }
                            o._startFadeInterval(l, e, i, n, a[s], void 0 === r)
                        }
                    }
                    return o
                },
                _startFadeInterval: function(e, t, i, n, r, o) {
                    var a = this,
                        s = t,
                        l = i - t,
                        u = Math.abs(l / .01),
                        c = Math.max(4, u > 0 ? n / u : n),
                        h = Date.now();
                    e._fadeTo = i, e._interval = setInterval(function() {
                        var r = (Date.now() - h) / n;
                        h = Date.now(), s += l * r, s = Math.max(0, s), s = Math.min(1, s), s = Math.round(100 * s) / 100, a._webAudio ? e._volume = s : a.volume(s, e._id, !0), o && (a._volume = s), (i < t && s <= i || i > t && s >= i) && (clearInterval(e._interval), e._interval = null, e._fadeTo = null, a.volume(i, e._id), a._emit("fade", e._id))
                    }, c)
                },
                _stopFade: function(e) {
                    var i = this,
                        n = i._soundById(e);
                    return n && n._interval && (i._webAudio && n._node.gain.cancelScheduledValues(t.ctx.currentTime), clearInterval(n._interval), n._interval = null, i.volume(n._fadeTo, e), n._fadeTo = null, i._emit("fade", e)), i
                },
                loop: function() {
                    var e, t, i, n = this,
                        r = arguments;
                    if (0 === r.length) return n._loop;
                    if (1 === r.length) {
                        if ("boolean" != typeof r[0]) return !!(i = n._soundById(parseInt(r[0], 10))) && i._loop;
                        e = r[0], n._loop = e
                    } else 2 === r.length && (e = r[0], t = parseInt(r[1], 10));
                    for (var o = n._getSoundIds(t), a = 0; a < o.length; a++)(i = n._soundById(o[a])) && (i._loop = e, n._webAudio && i._node && i._node.bufferSource && (i._node.bufferSource.loop = e, e && (i._node.bufferSource.loopStart = i._start || 0, i._node.bufferSource.loopEnd = i._stop)));
                    return n
                },
                rate: function() {
                    var e, i, n = this,
                        r = arguments;
                    if (0 === r.length) i = n._sounds[0]._id;
                    else if (1 === r.length) {
                        var o = n._getSoundIds(),
                            a = o.indexOf(r[0]);
                        a >= 0 ? i = parseInt(r[0], 10) : e = parseFloat(r[0])
                    } else 2 === r.length && (e = parseFloat(r[0]), i = parseInt(r[1], 10));
                    var s;
                    if ("number" != typeof e) return s = n._soundById(i), s ? s._rate : n._rate;
                    if ("loaded" !== n._state || n._playLock) return n._queue.push({
                        event: "rate",
                        action: function() {
                            n.rate.apply(n, r)
                        }
                    }), n;
                    void 0 === i && (n._rate = e), i = n._getSoundIds(i);
                    for (var l = 0; l < i.length; l++)
                        if (s = n._soundById(i[l])) {
                            n.playing(i[l]) && (s._rateSeek = n.seek(i[l]), s._playStart = n._webAudio ? t.ctx.currentTime : s._playStart), s._rate = e, n._webAudio && s._node && s._node.bufferSource ? s._node.bufferSource.playbackRate.setValueAtTime(e, t.ctx.currentTime) : s._node && (s._node.playbackRate = e);
                            var u = n.seek(i[l]),
                                c = (n._sprite[s._sprite][0] + n._sprite[s._sprite][1]) / 1e3 - u,
                                h = 1e3 * c / Math.abs(s._rate);
                            !n._endTimers[i[l]] && s._paused || (n._clearTimer(i[l]), n._endTimers[i[l]] = setTimeout(n._ended.bind(n, s), h)), n._emit("rate", s._id)
                        }
                    return n
                },
                seek: function() {
                    var e, i, n = this,
                        r = arguments;
                    if (0 === r.length) i = n._sounds[0]._id;
                    else if (1 === r.length) {
                        var o = n._getSoundIds(),
                            a = o.indexOf(r[0]);
                        a >= 0 ? i = parseInt(r[0], 10) : n._sounds.length && (i = n._sounds[0]._id, e = parseFloat(r[0]))
                    } else 2 === r.length && (e = parseFloat(r[0]), i = parseInt(r[1], 10));
                    if (void 0 === i) return n;
                    if ("loaded" !== n._state || n._playLock) return n._queue.push({
                        event: "seek",
                        action: function() {
                            n.seek.apply(n, r)
                        }
                    }), n;
                    var s = n._soundById(i);
                    if (s) {
                        if (!("number" == typeof e && e >= 0)) {
                            if (n._webAudio) {
                                var l = n.playing(i) ? t.ctx.currentTime - s._playStart : 0,
                                    u = s._rateSeek ? s._rateSeek - s._seek : 0;
                                return s._seek + (u + l * Math.abs(s._rate))
                            }
                            return s._node.currentTime
                        }
                        var c = n.playing(i);
                        c && n.pause(i, !0), s._seek = e, s._ended = !1, n._clearTimer(i), n._webAudio || !s._node || isNaN(s._node.duration) || (s._node.currentTime = e);
                        var h = function() {
                            n._emit("seek", i), c && n.play(i, !0)
                        };
                        if (c && !n._webAudio) {
                            var p = function() {
                                n._playLock ? setTimeout(p, 0) : h()
                            };
                            setTimeout(p, 0)
                        } else h()
                    }
                    return n
                },
                playing: function(e) {
                    var t = this;
                    if ("number" == typeof e) {
                        var i = t._soundById(e);
                        return !!i && !i._paused
                    }
                    for (var n = 0; n < t._sounds.length; n++)
                        if (!t._sounds[n]._paused) return !0;
                    return !1
                },
                duration: function(e) {
                    var t = this,
                        i = t._duration,
                        n = t._soundById(e);
                    return n && (i = t._sprite[n._sprite][1] / 1e3), i
                },
                state: function() {
                    return this._state
                },
                unload: function() {
                    for (var e = this, i = e._sounds, n = 0; n < i.length; n++) i[n]._paused || e.stop(i[n]._id), e._webAudio || (e._clearSound(i[n]._node), i[n]._node.removeEventListener("error", i[n]._errorFn, !1), i[n]._node.removeEventListener(t._canPlayEvent, i[n]._loadFn, !1), t._releaseHtml5Audio(i[n]._node)), delete i[n]._node, e._clearTimer(i[n]._id);
                    var o = t._howls.indexOf(e);
                    o >= 0 && t._howls.splice(o, 1);
                    var a = !0;
                    for (n = 0; n < t._howls.length; n++)
                        if (t._howls[n]._src === e._src || e._src.indexOf(t._howls[n]._src) >= 0) {
                            a = !1;
                            break
                        }
                    return r && a && delete r[e._src], t.noAudio = !1, e._state = "unloaded", e._sounds = [], e = null, null
                },
                on: function(e, t, i, n) {
                    var r = this,
                        o = r["_on" + e];
                    return "function" == typeof t && o.push(n ? {
                        id: i,
                        fn: t,
                        once: n
                    } : {
                        id: i,
                        fn: t
                    }), r
                },
                off: function(e, t, i) {
                    var n = this,
                        r = n["_on" + e],
                        o = 0;
                    if ("number" == typeof t && (i = t, t = null), t || i)
                        for (o = 0; o < r.length; o++) {
                            var a = i === r[o].id;
                            if (t === r[o].fn && a || !t && a) {
                                r.splice(o, 1);
                                break
                            }
                        } else if (e) n["_on" + e] = [];
                        else {
                            var s = Object.keys(n);
                            for (o = 0; o < s.length; o++) 0 === s[o].indexOf("_on") && Array.isArray(n[s[o]]) && (n[s[o]] = [])
                        }
                    return n
                },
                once: function(e, t, i) {
                    var n = this;
                    return n.on(e, t, i, 1), n
                },
                _emit: function(e, t, i) {
                    for (var n = this, r = n["_on" + e], o = r.length - 1; o >= 0; o--) r[o].id && r[o].id !== t && "load" !== e || (setTimeout(function(e) {
                        e.call(this, t, i)
                    }.bind(n, r[o].fn), 0), r[o].once && n.off(e, r[o].fn, r[o].id));
                    return n._loadQueue(e), n
                },
                _loadQueue: function(e) {
                    var t = this;
                    if (t._queue.length > 0) {
                        var i = t._queue[0];
                        i.event === e && (t._queue.shift(), t._loadQueue()), e || i.action()
                    }
                    return t
                },
                _ended: function(e) {
                    var i = this,
                        n = e._sprite;
                    if (!i._webAudio && e._node && !e._node.paused && !e._node.ended && e._node.currentTime < e._stop) return setTimeout(i._ended.bind(i, e), 100), i;
                    var r = !(!e._loop && !i._sprite[n][2]);
                    if (i._emit("end", e._id), !i._webAudio && r && i.stop(e._id, !0).play(e._id), i._webAudio && r) {
                        i._emit("play", e._id), e._seek = e._start || 0, e._rateSeek = 0, e._playStart = t.ctx.currentTime;
                        var o = 1e3 * (e._stop - e._start) / Math.abs(e._rate);
                        i._endTimers[e._id] = setTimeout(i._ended.bind(i, e), o)
                    }
                    return i._webAudio && !r && (e._paused = !0, e._ended = !0, e._seek = e._start || 0, e._rateSeek = 0, i._clearTimer(e._id), i._cleanBuffer(e._node), t._autoSuspend()), i._webAudio || r || i.stop(e._id, !0), i
                },
                _clearTimer: function(e) {
                    var t = this;
                    if (t._endTimers[e]) {
                        if ("function" != typeof t._endTimers[e]) clearTimeout(t._endTimers[e]);
                        else {
                            var i = t._soundById(e);
                            i && i._node && i._node.removeEventListener("ended", t._endTimers[e], !1)
                        }
                        delete t._endTimers[e]
                    }
                    return t
                },
                _soundById: function(e) {
                    for (var t = this, i = 0; i < t._sounds.length; i++)
                        if (e === t._sounds[i]._id) return t._sounds[i];
                    return null
                },
                _inactiveSound: function() {
                    var e = this;
                    e._drain();
                    for (var t = 0; t < e._sounds.length; t++)
                        if (e._sounds[t]._ended) return e._sounds[t].reset();
                    return new n(e)
                },
                _drain: function() {
                    var e = this,
                        t = e._pool,
                        i = 0,
                        n = 0;
                    if (!(e._sounds.length < t)) {
                        for (n = 0; n < e._sounds.length; n++) e._sounds[n]._ended && i++;
                        for (n = e._sounds.length - 1; n >= 0; n--) {
                            if (i <= t) return;
                            e._sounds[n]._ended && (e._webAudio && e._sounds[n]._node && e._sounds[n]._node.disconnect(0), e._sounds.splice(n, 1), i--)
                        }
                    }
                },
                _getSoundIds: function(e) {
                    var t = this;
                    if (void 0 === e) {
                        for (var i = [], n = 0; n < t._sounds.length; n++) i.push(t._sounds[n]._id);
                        return i
                    }
                    return [e]
                },
                _refreshBuffer: function(e) {
                    var i = this;
                    return e._node.bufferSource = t.ctx.createBufferSource(), e._node.bufferSource.buffer = r[i._src], e._panner ? e._node.bufferSource.connect(e._panner) : e._node.bufferSource.connect(e._node), e._node.bufferSource.loop = e._loop, e._loop && (e._node.bufferSource.loopStart = e._start || 0, e._node.bufferSource.loopEnd = e._stop || 0), e._node.bufferSource.playbackRate.setValueAtTime(e._rate, t.ctx.currentTime), i
                },
                _cleanBuffer: function(e) {
                    var i = this,
                        n = t._navigator && t._navigator.vendor.indexOf("Apple") >= 0;
                    if (t._scratchBuffer && e.bufferSource && (e.bufferSource.onended = null, e.bufferSource.disconnect(0), n)) try {
                        e.bufferSource.buffer = t._scratchBuffer
                    } catch (e) {}
                    return e.bufferSource = null, i
                },
                _clearSound: function(e) {
                    /MSIE |Trident\//.test(t._navigator && t._navigator.userAgent) || (e.src = "data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")
                }
            };
            var n = function(e) {
                this._parent = e, this.init()
            };
            n.prototype = {
                init: function() {
                    var e = this,
                        i = e._parent;
                    return e._muted = i._muted, e._loop = i._loop, e._volume = i._volume, e._rate = i._rate, e._seek = 0, e._paused = !0, e._ended = !0, e._sprite = "__default", e._id = ++t._counter, i._sounds.push(e), e.create(), e
                },
                create: function() {
                    var e = this,
                        i = e._parent,
                        n = t._muted || e._muted || e._parent._muted ? 0 : e._volume;
                    return i._webAudio ? (e._node = void 0 === t.ctx.createGain ? t.ctx.createGainNode() : t.ctx.createGain(), e._node.gain.setValueAtTime(n, t.ctx.currentTime), e._node.paused = !0, e._node.connect(t.masterGain)) : (e._node = t._obtainHtml5Audio(), e._errorFn = e._errorListener.bind(e), e._node.addEventListener("error", e._errorFn, !1), e._loadFn = e._loadListener.bind(e), e._node.addEventListener(t._canPlayEvent, e._loadFn, !1), e._node.src = i._src, e._node.preload = "auto", e._node.volume = n * t.volume(), e._node.load()), e
                },
                reset: function() {
                    var e = this,
                        i = e._parent;
                    return e._muted = i._muted, e._loop = i._loop, e._volume = i._volume, e._rate = i._rate, e._seek = 0, e._rateSeek = 0, e._paused = !0, e._ended = !0, e._sprite = "__default", e._id = ++t._counter, e
                },
                _errorListener: function() {
                    var e = this;
                    e._parent._emit("loaderror", e._id, e._node.error ? e._node.error.code : 0), e._node.removeEventListener("error", e._errorFn, !1)
                },
                _loadListener: function() {
                    var e = this,
                        i = e._parent;
                    i._duration = Math.ceil(10 * e._node.duration) / 10, 0 === Object.keys(i._sprite).length && (i._sprite = {
                        __default: [0, 1e3 * i._duration]
                    }), "loaded" !== i._state && (i._state = "loaded", i._emit("load"), i._loadQueue()), e._node.removeEventListener(t._canPlayEvent, e._loadFn, !1)
                }
            };
            var r = {},
                o = function(e) {
                    var t = e._src;
                    if (r[t]) return e._duration = r[t].duration, void l(e);
                    if (/^data:[^;]+;base64,/.test(t)) {
                        for (var i = atob(t.split(",")[1]), n = new Uint8Array(i.length), o = 0; o < i.length; ++o) n[o] = i.charCodeAt(o);
                        s(n.buffer, e)
                    } else {
                        var u = new XMLHttpRequest;
                        u.open("GET", t, !0), u.withCredentials = e._xhrWithCredentials, u.responseType = "arraybuffer", u.onload = function() {
                            var t = (u.status + "")[0];
                            if ("0" !== t && "2" !== t && "3" !== t) return void e._emit("loaderror", null, "Failed loading audio file with status: " + u.status + ".");
                            s(u.response, e)
                        }, u.onerror = function() {
                            e._webAudio && (e._html5 = !0, e._webAudio = !1, e._sounds = [], delete r[t], e.load())
                        }, a(u)
                    }
                },
                a = function(e) {
                    try {
                        e.send()
                    } catch (t) {
                        e.onerror()
                    }
                },
                s = function(e, i) {
                    var n = function() {
                            i._emit("loaderror", null, "Decoding audio data failed.")
                        },
                        o = function(e) {
                            e && i._sounds.length > 0 ? (r[i._src] = e, l(i, e)) : n()
                        };
                    "undefined" != typeof Promise && 1 === t.ctx.decodeAudioData.length ? t.ctx.decodeAudioData(e).then(o).catch(n) : t.ctx.decodeAudioData(e, o, n)
                },
                l = function(e, t) {
                    t && !e._duration && (e._duration = t.duration), 0 === Object.keys(e._sprite).length && (e._sprite = {
                        __default: [0, 1e3 * e._duration]
                    }), "loaded" !== e._state && (e._state = "loaded", e._emit("load"), e._loadQueue())
                },
                u = function() {
                    if (t.usingWebAudio) {
                        try {
                            "undefined" != typeof AudioContext ? t.ctx = new AudioContext : "undefined" != typeof webkitAudioContext ? t.ctx = new webkitAudioContext : t.usingWebAudio = !1
                        } catch (e) {
                            t.usingWebAudio = !1
                        }
                        t.ctx || (t.usingWebAudio = !1);
                        var e = /iP(hone|od|ad)/.test(t._navigator && t._navigator.platform),
                            i = t._navigator && t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),
                            n = i ? parseInt(i[1], 10) : null;
                        if (e && n && n < 9) {
                            var r = /safari/.test(t._navigator && t._navigator.userAgent.toLowerCase());
                            (t._navigator && t._navigator.standalone && !r || t._navigator && !t._navigator.standalone && !r) && (t.usingWebAudio = !1)
                        }
                        t.usingWebAudio && (t.masterGain = void 0 === t.ctx.createGain ? t.ctx.createGainNode() : t.ctx.createGain(), t.masterGain.gain.setValueAtTime(t._muted ? 0 : 1, t.ctx.currentTime), t.masterGain.connect(t.ctx.destination)), t._setup()
                    }
                };
            "function" == typeof define && define.amd && define("com/howlerjs/howler", [], function() {
                return {
                    Howler: t,
                    Howl: i
                }
            }), "undefined" != typeof exports && (exports.Howler = t, exports.Howl = i), "undefined" != typeof window ? (window.HowlerGlobal = e, window.Howler = t, window.Howl = i, window.Sound = n) : "undefined" != typeof global && (global.HowlerGlobal = e, global.Howler = t, global.Howl = i, global.Sound = n)
        }(),
        function() {
            "use strict";
            HowlerGlobal.prototype._pos = [0, 0, 0], HowlerGlobal.prototype._orientation = [0, 0, -1, 0, 1, 0], HowlerGlobal.prototype.stereo = function(e) {
                var t = this;
                if (!t.ctx || !t.ctx.listener) return t;
                for (var i = t._howls.length - 1; i >= 0; i--) t._howls[i].stereo(e);
                return t
            }, HowlerGlobal.prototype.pos = function(e, t, i) {
                var n = this;
                return n.ctx && n.ctx.listener ? (t = "number" != typeof t ? n._pos[1] : t, i = "number" != typeof i ? n._pos[2] : i, "number" != typeof e ? n._pos : (n._pos = [e, t, i], void 0 !== n.ctx.listener.positionX ? (n.ctx.listener.positionX.setTargetAtTime(n._pos[0], Howler.ctx.currentTime, .1), n.ctx.listener.positionY.setTargetAtTime(n._pos[1], Howler.ctx.currentTime, .1), n.ctx.listener.positionZ.setTargetAtTime(n._pos[2], Howler.ctx.currentTime, .1)) : n.ctx.listener.setPosition(n._pos[0], n._pos[1], n._pos[2]), n)) : n
            }, HowlerGlobal.prototype.orientation = function(e, t, i, n, r, o) {
                var a = this;
                if (!a.ctx || !a.ctx.listener) return a;
                var s = a._orientation;
                return t = "number" != typeof t ? s[1] : t, i = "number" != typeof i ? s[2] : i, n = "number" != typeof n ? s[3] : n, r = "number" != typeof r ? s[4] : r, o = "number" != typeof o ? s[5] : o, "number" != typeof e ? s : (a._orientation = [e, t, i, n, r, o], void 0 !== a.ctx.listener.forwardX ? (a.ctx.listener.forwardX.setTargetAtTime(e, Howler.ctx.currentTime, .1), a.ctx.listener.forwardY.setTargetAtTime(t, Howler.ctx.currentTime, .1), a.ctx.listener.forwardZ.setTargetAtTime(i, Howler.ctx.currentTime, .1), a.ctx.listener.upX.setTargetAtTime(e, Howler.ctx.currentTime, .1), a.ctx.listener.upY.setTargetAtTime(t, Howler.ctx.currentTime, .1), a.ctx.listener.upZ.setTargetAtTime(i, Howler.ctx.currentTime, .1)) : a.ctx.listener.setOrientation(e, t, i, n, r, o), a)
            }, Howl.prototype.init = function(e) {
                return function(t) {
                    var i = this;
                    return i._orientation = t.orientation || [1, 0, 0], i._stereo = t.stereo || null, i._pos = t.pos || null, i._pannerAttr = {
                        coneInnerAngle: void 0 !== t.coneInnerAngle ? t.coneInnerAngle : 360,
                        coneOuterAngle: void 0 !== t.coneOuterAngle ? t.coneOuterAngle : 360,
                        coneOuterGain: void 0 !== t.coneOuterGain ? t.coneOuterGain : 0,
                        distanceModel: void 0 !== t.distanceModel ? t.distanceModel : "inverse",
                        maxDistance: void 0 !== t.maxDistance ? t.maxDistance : 1e4,
                        panningModel: void 0 !== t.panningModel ? t.panningModel : "HRTF",
                        refDistance: void 0 !== t.refDistance ? t.refDistance : 1,
                        rolloffFactor: void 0 !== t.rolloffFactor ? t.rolloffFactor : 1
                    }, i._onstereo = t.onstereo ? [{
                        fn: t.onstereo
                    }] : [], i._onpos = t.onpos ? [{
                        fn: t.onpos
                    }] : [], i._onorientation = t.onorientation ? [{
                        fn: t.onorientation
                    }] : [], e.call(this, t)
                }
            }(Howl.prototype.init), Howl.prototype.stereo = function(t, i) {
                var n = this;
                if (!n._webAudio) return n;
                if ("loaded" !== n._state) return n._queue.push({
                    event: "stereo",
                    action: function() {
                        n.stereo(t, i)
                    }
                }), n;
                var r = void 0 === Howler.ctx.createStereoPanner ? "spatial" : "stereo";
                if (void 0 === i) {
                    if ("number" != typeof t) return n._stereo;
                    n._stereo = t, n._pos = [t, 0, 0]
                }
                for (var o = n._getSoundIds(i), a = 0; a < o.length; a++) {
                    var s = n._soundById(o[a]);
                    if (s) {
                        if ("number" != typeof t) return s._stereo;
                        s._stereo = t, s._pos = [t, 0, 0], s._node && (s._pannerAttr.panningModel = "equalpower", s._panner && s._panner.pan || e(s, r), "spatial" === r ? void 0 !== s._panner.positionX ? (s._panner.positionX.setValueAtTime(t, Howler.ctx.currentTime), s._panner.positionY.setValueAtTime(0, Howler.ctx.currentTime), s._panner.positionZ.setValueAtTime(0, Howler.ctx.currentTime)) : s._panner.setPosition(t, 0, 0) : s._panner.pan.setValueAtTime(t, Howler.ctx.currentTime)), n._emit("stereo", s._id)
                    }
                }
                return n
            }, Howl.prototype.pos = function(t, i, n, r) {
                var o = this;
                if (!o._webAudio) return o;
                if ("loaded" !== o._state) return o._queue.push({
                    event: "pos",
                    action: function() {
                        o.pos(t, i, n, r)
                    }
                }), o;
                if (i = "number" != typeof i ? 0 : i, n = "number" != typeof n ? -.5 : n, void 0 === r) {
                    if ("number" != typeof t) return o._pos;
                    o._pos = [t, i, n]
                }
                for (var a = o._getSoundIds(r), s = 0; s < a.length; s++) {
                    var l = o._soundById(a[s]);
                    if (l) {
                        if ("number" != typeof t) return l._pos;
                        l._pos = [t, i, n], l._node && (l._panner && !l._panner.pan || e(l, "spatial"), void 0 !== l._panner.positionX ? (l._panner.positionX.setValueAtTime(t, Howler.ctx.currentTime), l._panner.positionY.setValueAtTime(i, Howler.ctx.currentTime), l._panner.positionZ.setValueAtTime(n, Howler.ctx.currentTime)) : l._panner.setPosition(t, i, n)), o._emit("pos", l._id)
                    }
                }
                return o
            }, Howl.prototype.orientation = function(t, i, n, r) {
                var o = this;
                if (!o._webAudio) return o;
                if ("loaded" !== o._state) return o._queue.push({
                    event: "orientation",
                    action: function() {
                        o.orientation(t, i, n, r)
                    }
                }), o;
                if (i = "number" != typeof i ? o._orientation[1] : i, n = "number" != typeof n ? o._orientation[2] : n, void 0 === r) {
                    if ("number" != typeof t) return o._orientation;
                    o._orientation = [t, i, n]
                }
                for (var a = o._getSoundIds(r), s = 0; s < a.length; s++) {
                    var l = o._soundById(a[s]);
                    if (l) {
                        if ("number" != typeof t) return l._orientation;
                        l._orientation = [t, i, n], l._node && (l._panner || (l._pos || (l._pos = o._pos || [0, 0, -.5]), e(l, "spatial")), void 0 !== l._panner.orientationX ? (l._panner.orientationX.setValueAtTime(t, Howler.ctx.currentTime), l._panner.orientationY.setValueAtTime(i, Howler.ctx.currentTime), l._panner.orientationZ.setValueAtTime(n, Howler.ctx.currentTime)) : l._panner.setOrientation(t, i, n)), o._emit("orientation", l._id)
                    }
                }
                return o
            }, Howl.prototype.pannerAttr = function() {
                var t, i, n, r = this,
                    o = arguments;
                if (!r._webAudio) return r;
                if (0 === o.length) return r._pannerAttr;
                if (1 === o.length) {
                    if ("object" != typeof o[0]) return n = r._soundById(parseInt(o[0], 10)), n ? n._pannerAttr : r._pannerAttr;
                    t = o[0], void 0 === i && (t.pannerAttr || (t.pannerAttr = {
                        coneInnerAngle: t.coneInnerAngle,
                        coneOuterAngle: t.coneOuterAngle,
                        coneOuterGain: t.coneOuterGain,
                        distanceModel: t.distanceModel,
                        maxDistance: t.maxDistance,
                        refDistance: t.refDistance,
                        rolloffFactor: t.rolloffFactor,
                        panningModel: t.panningModel
                    }), r._pannerAttr = {
                        coneInnerAngle: void 0 !== t.pannerAttr.coneInnerAngle ? t.pannerAttr.coneInnerAngle : r._coneInnerAngle,
                        coneOuterAngle: void 0 !== t.pannerAttr.coneOuterAngle ? t.pannerAttr.coneOuterAngle : r._coneOuterAngle,
                        coneOuterGain: void 0 !== t.pannerAttr.coneOuterGain ? t.pannerAttr.coneOuterGain : r._coneOuterGain,
                        distanceModel: void 0 !== t.pannerAttr.distanceModel ? t.pannerAttr.distanceModel : r._distanceModel,
                        maxDistance: void 0 !== t.pannerAttr.maxDistance ? t.pannerAttr.maxDistance : r._maxDistance,
                        refDistance: void 0 !== t.pannerAttr.refDistance ? t.pannerAttr.refDistance : r._refDistance,
                        rolloffFactor: void 0 !== t.pannerAttr.rolloffFactor ? t.pannerAttr.rolloffFactor : r._rolloffFactor,
                        panningModel: void 0 !== t.pannerAttr.panningModel ? t.pannerAttr.panningModel : r._panningModel
                    })
                } else 2 === o.length && (t = o[0], i = parseInt(o[1], 10));
                for (var a = r._getSoundIds(i), s = 0; s < a.length; s++)
                    if (n = r._soundById(a[s])) {
                        var l = n._pannerAttr;
                        l = {
                            coneInnerAngle: void 0 !== t.coneInnerAngle ? t.coneInnerAngle : l.coneInnerAngle,
                            coneOuterAngle: void 0 !== t.coneOuterAngle ? t.coneOuterAngle : l.coneOuterAngle,
                            coneOuterGain: void 0 !== t.coneOuterGain ? t.coneOuterGain : l.coneOuterGain,
                            distanceModel: void 0 !== t.distanceModel ? t.distanceModel : l.distanceModel,
                            maxDistance: void 0 !== t.maxDistance ? t.maxDistance : l.maxDistance,
                            refDistance: void 0 !== t.refDistance ? t.refDistance : l.refDistance,
                            rolloffFactor: void 0 !== t.rolloffFactor ? t.rolloffFactor : l.rolloffFactor,
                            panningModel: void 0 !== t.panningModel ? t.panningModel : l.panningModel
                        };
                        var u = n._panner;
                        u ? (u.coneInnerAngle = l.coneInnerAngle, u.coneOuterAngle = l.coneOuterAngle, u.coneOuterGain = l.coneOuterGain, u.distanceModel = l.distanceModel, u.maxDistance = l.maxDistance, u.refDistance = l.refDistance, u.rolloffFactor = l.rolloffFactor, u.panningModel = l.panningModel) : (n._pos || (n._pos = r._pos || [0, 0, -.5]), e(n, "spatial"))
                    }
                return r
            }, Sound.prototype.init = function(e) {
                return function() {
                    var t = this,
                        i = t._parent;
                    t._orientation = i._orientation, t._stereo = i._stereo, t._pos = i._pos, t._pannerAttr = i._pannerAttr, e.call(this), t._stereo ? i.stereo(t._stereo) : t._pos && i.pos(t._pos[0], t._pos[1], t._pos[2], t._id)
                }
            }(Sound.prototype.init), Sound.prototype.reset = function(e) {
                return function() {
                    var t = this,
                        i = t._parent;
                    return t._orientation = i._orientation, t._stereo = i._stereo, t._pos = i._pos, t._pannerAttr = i._pannerAttr, t._stereo ? i.stereo(t._stereo) : t._pos ? i.pos(t._pos[0], t._pos[1], t._pos[2], t._id) : t._panner && (t._panner.disconnect(0), t._panner = void 0, i._refreshBuffer(t)), e.call(this)
                }
            }(Sound.prototype.reset);
            var e = function(e, t) {
                t = t || "spatial", "spatial" === t ? (e._panner = Howler.ctx.createPanner(), e._panner.coneInnerAngle = e._pannerAttr.coneInnerAngle, e._panner.coneOuterAngle = e._pannerAttr.coneOuterAngle, e._panner.coneOuterGain = e._pannerAttr.coneOuterGain, e._panner.distanceModel = e._pannerAttr.distanceModel, e._panner.maxDistance = e._pannerAttr.maxDistance, e._panner.refDistance = e._pannerAttr.refDistance, e._panner.rolloffFactor = e._pannerAttr.rolloffFactor, e._panner.panningModel = e._pannerAttr.panningModel, void 0 !== e._panner.positionX ? (e._panner.positionX.setValueAtTime(e._pos[0], Howler.ctx.currentTime), e._panner.positionY.setValueAtTime(e._pos[1], Howler.ctx.currentTime), e._panner.positionZ.setValueAtTime(e._pos[2], Howler.ctx.currentTime)) : e._panner.setPosition(e._pos[0], e._pos[1], e._pos[2]), void 0 !== e._panner.orientationX ? (e._panner.orientationX.setValueAtTime(e._orientation[0], Howler.ctx.currentTime), e._panner.orientationY.setValueAtTime(e._orientation[1], Howler.ctx.currentTime), e._panner.orientationZ.setValueAtTime(e._orientation[2], Howler.ctx.currentTime)) : e._panner.setOrientation(e._orientation[0], e._orientation[1], e._orientation[2])) : (e._panner = Howler.ctx.createStereoPanner(), e._panner.pan.setValueAtTime(e._stereo, Howler.ctx.currentTime)), e._panner.connect(e._node), e._paused || e._parent.pause(e._id, !0).play(e._id, !0)
            }
        }(), define("skbJet/component/howlerAudioPlayer/howlerAudioSpritePlayer", ["skbJet/component/utils/Interface", "skbJet/component/channelAudioPlayer/IChannelAudioPlayer", "skbJet/component/channelAudioPlayer/channelAudioPlayerHelper", "com/howlerjs/howler"], function(e, t, i) {
            function n(e) {
                window.Howler.mute(e);
                for (var t in l) l[t] && l[t].mute(e)
            }

            function r() {
                for (var e in l) l[e] && l[e].pause()
            }

            function o() {
                for (var e in l) l[e] && l[e].resume()
            }

            function a(e) {
                for (var t in l) {
                    var i = l[t];
                    if (i) {
                        var r = i._howl ? i._howl._sprite : null;
                        if (r) {
                            for (var o in r) {
                                n(!0), i.play(o), setTimeout(function() {
                                    i.stop(), e && n(!1)
                                }, 100);
                                break
                            }
                            break
                        }
                    }
                }
            }

            function s() {
                for (var e in l) l[e] && l[e].stop()
            }
            var l = [],
                u = !1;
            /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream && (window.Howler.autoSuspend = !1);
            var c = {
                gameAudioControlChanged: i.gameAudioControlChanged,
                consoleAudioControlChanged: i.consoleAudioControlChanged,
                play: function(e, t, i) {
                    e && (t || (t = 0), i || (i = !1), l[t] && (l[t].play(e, i), l[t].volume(1)))
                },
                currentPlaying: function(e) {
                    return l[e] ? l[e].currentPlaying() : null
                },
                stopChannel: function(e) {
                    l[e] && l[e].stop()
                },
                stopAllChannel: s,
                stopAll: s,
                pauseChannel: function(e) {
                    l[e] && l[e].pause()
                },
                pauseAll: r,
                resumeChannel: function(e) {
                    l[e] && l[e].resume()
                },
                resumeAll: o,
                muteAll: n,
                _addChannel: function(e, t) {
                    l[t] = e
                },
                volume: function(e, t) {
                    l[e] && l[e].volume(t)
                },
                fadeOut: function(e, t, i) {
                    l[e] && l[e].fadeOut(t, i)
                },
                playAndFadeIn: function(e, t, i, n, r) {
                    t && (e || (e = 0), l[e] && l[e].playAndFadeIn(t, i, n, r))
                },
                cancelFade: function(e) {
                    l[e] && l[e].cancelFade()
                },
                enableAudioDialog: function(e) {
                    i.enableAudioDialog(e)
                },
                log: function(e) {
                    u = !1 !== e
                }
            };
            return t.implementedBy(c), i.setChannelAudioPlayer(c), i.setPlayerAudioChoiceCallBack(a), c
        }), define("game/data/audioRef", [], function() {
            return {
                BASEGAME_MUSIC_LOOP: "basegame_loop_remastered~1~1",
                FREESPINS_INTRO_LOOP: "bonus_loop_intro~1~1",
                FREESPINS_MUSIC_LOOP: "bonus_loop_KL8-3~1~1",
                SOLAR_DISC_LAND: "basegame_solar_disc_landing_gong~2~1",
                SOLAR_DISC_TURN: "basegame_solar_disc_turn~2~1",
                FREE_SPINS_AWARDED: "cool_bonus_reached_sound~2~1",
                FREE_SPINS_CONGRATS: "freegame_congrats_screen_animation~2~1",
                FREESPINS_BELL: "Bell~3~0.5",
                SOLAR_DISC_PASSING_0: "solar_disc_passing_by~3~1",
                SOLAR_DISC_PASSING_1: "solar_disc_passing_by_Var_01~7~1",
                SOLAR_DISC_PASSING_2: "solar_disc_passing_by_Var_02~8~1",
                SOLAR_DISC_PASSING_3: "solar_disc_passing_by_Var_03~9~1",
                SOLAR_DISC_PASSING_4: "solar_disc_passing_by_Var_04~10~1",
                SOLAR_DISC_PASSING_5: "solar_disc_passing_by_Var_05~11~1",
                SOLAR_DISC_BURST: "solar_disc_wild_sun_explosion~4~1",
                BONUS_ADD: "solar_disk_ree1_bonus_symbol_ADD~4~1",
                BONUS_ARRIVED: "solar_disc_reel1_bonus_symbol~4~1",
                BIG_WIN_COINS: "coinflight_loopable~5~0.6",
                SOLAR_DISC_TENSION: "solar_disc_customized_tensionspin~5~1",
                SOLAR_DISC_TURN_GOLD: "solar_disc_turn_gold_slow~5~1",
                SOLAR_DISC_FLASH: "solar_disc_flash~6~1",
                BUTTON_PUSH: "buttonPush~6~1",
                SPIN_BUTTON_PUSH: "spinButton(rock)~6~1",
                MAX_BET: "button-max~6~1",
                REEL_STOP: "reelStop~6~0.3",
                ROLLUP_LOW: "rollupLow~6~1",
                ROLLUP_BASIC: "rollupBasic~6~1",
                ROLLUP_BASIC_END: "rollupBasicEnd~6~0.25",
                ROLLUP_BIGWIN: "rollupBigWin~6~1",
                ROLLUP_BIGWIN_END: "rollupBigWinEnd~6~1",
                ROLLUP_LESS_THAN_STAKE: "noRollupDing~6~1",
                BUTTON_STAKE_UP: "button-up~6~1",
                BUTTON_STAKE_DOWN: "button-down~6~0.8",
                RG_PRESENTATION_WIN: "LowWinDing~6~1"
            }
        }), define("game/data/gameEvents", ["skbJet/component/gameMsgBus/GameMsgBus", "game/utils/miscUtils"], function(e) {
            return {
                publish: function(t, i) {
                    void 0 === i && (i = {}), i.type = t, e.publish(t, i)
                },
                PLATFORM_TO_PLATFORM: "toPlatform",
                PLATFORM_GAME_INIT: "platformMsg/ClientService/Game.Init",
                PLATFORM_SYSTEM_INIT: "platformMsg/Kernel/System.Init",
                PLATFORM_UPDATE_BALANCE: "platformMsg/ClientService/Account.Balances",
                PLATFORM_CONSOLE_BET_UPDATE: "platformMsg/ConsoleService/Game.Control",
                PLATFORM_REQUEST: "toPlatformRequest",
                PLATFORM_STOP_AUTO_SPIN: "platformMsg/ClientService/Game.StopAutoSpin",
                RESOURCES_LOAD_PROGRESS: "resourceLoader.loadProgress",
                AUDIO_SELECTED_WHEN_GAME_LAUNCHED: "audioPlayer.playerSelectedWhenGameLaunch",
                PLAY_SOUND: "playSound",
                ORIENTATION_CHANGED: "orientationChanged",
                HELP_FILES_ENABLE: "helpFiles.enableConsole",
                MAX_WIN_ACHIEVED: "maxWinAchieved",
                MAX_WIN_CLOSE: "maxWinClose",
                MAX_WIN_COMPLETE: "maxWinComplete",
                ON_BEFORE_SHOW_STAGE: "onBeforeShowStage",
                ON_BEFORE_REQUEST: "onBeforeRequest",
                ON_RESOLVE_STAGE: "onResolveStage",
                ON_START_ROLLUP: "onStartRollup",
                ON_BEGIN_NEW_GAME: "onBeginNewGame",
                ON_EXIT_STAGE: "onExitStage",
                ON_ABORT_NEXT_STAGE: "onAbortNextStage",
                ON_RESET_NEXT_STAGE: "onResetNextStage",
                ON_ENTER_NEXT_STAGE: "onEnterNextStage",
                ON_START_GAME_INITIAL: "onStartGameInitial",
                ON_START_PROGRESS_STAGE: "onStartGameInProgressStage",
                ON_START_PROGRESS_NEXT_STAGE: "onStartGameInProgressNextStage",
                ON_MAKE_REQUEST: "onMakeRequest",
                ON_END_GAME: "onEndGame",
                ON_IN_PROGRESS_STAGE: "onInProgressStage",
                AUTOPLAY_END: "AutoSpinController.autoSpinEnd",
                AUTOPLAY_START: "AutoSpinController.autoSpinStart",
                AUTOPLAY_PROMPT_CLOSED: "AutoSpin.promptClosed",
                AUTOPLAY_PROMPT_OPEN: "AutoSpin.promptOpen",
                SHOW_FREE_SPINS: "showFreeSpins",
                ENTER_FREE_SPINS: "enterFreeSpins",
                SHOW_FREE_SPINS_CONGRATS: "showFreeSpinsCongrats",
                EXIT_FREE_SPINS: "exitFreeSpins",
                EXIT_FREE_SPINS_SHOW_WINLINES: "exotFreeSpinsShowWinlines",
                FREE_SPINS_DO_FLY_IN: "doFlyIn",
                FREE_SPINS_EXIT_FLY_IN: "exitFlyIn",
                SHOW_BASE_GAME: "showBaseGame",
                BET_INCREMENT: "betIncrement",
                BET_DECREMENT: "betDecrement",
                HIDE_STATIC_WINLINE_SYMBOLS: "hideStaticWinlineSymbols",
                FADE_NO_WIN_SYMBOLS: "fadeNonWinSymbols",
                RESET_NO_WIN_SYMBOLS: "resetNonWinSymbols",
                HIDE_STATIC_SD_SYMBOLS: "hideStaticSDSymbols",
                SHOW_STATIC_SYMBOLS: "showStaticWinlineSymbols",
                SET_REEL_WILDS: "setReelWilds",
                SD_ANIM_TO_WILD_COMPLETE: "solarDiscAnimToWildComplete",
                SD_ANIM_OUT_COMPLETE: "solarDiscAnimOutComplete",
                UPDATE_FOOTER: "updateFooter",
                ENABLE_AUTOPLAY: "enableAutoplay",
                DISABLE_AUTOPLAY: "disableAutoplay",
                START_ROLLUP: "startRollup",
                START_BIG_WIN_ROLLUP: "startBigWinRollup",
                REEL_STOPPED: "reelStoppped",
                SOLAR_DISC_PASSING: "solarDiscPassing",
                SOLAR_DISC_LANDED: "solarDiscLanded",
                SKIP_WIN: "skipWin",
                SKIP_HIDE: "skipHide",
                RECOVERY_SET_ANTICIPATION: "recoverySetAnticipation",
                RECOVERY_SHOW_PLAY: "recoveryShowPlay",
                SHOW_WINLINES: "showWinlines",
                PATTERN_PAY: "patternPay",
                WINLINES_CLEARED: "winlinesCleared",
                PORTRAIT_LOGO_FLASH: "portraitLogoFlash",
                SHOW_LOGO_WILD_SYMBOL: "showLogoWildSymbol",
                SHOW_MAX_WIN_PLAYBUTTON: "showMaxWinPlayButton",
                PLAY_FROM_FREE_SPINS_RECOVERY: "playFromFreeSpinsRecovery",
                HIDE_PRESS_BUTTON_MESSAGE: "hidePressButtonMessage"
            }
        }), define("game/commonUI/slot/betData", [], function() {
            return {
                _betPerPattern: 0,
                _patternsBet: 0,
                _betInfo: null,
                _patternInfo: null,
                get betPerPattern() {
                    return this._betPerPattern
                },
                get patternsBet() {
                    return this._patternsBet
                },
                get betInfo() {
                    return this._betInfo
                },
                get patternInfo() {
                    return this._patternInfo
                },
                get totalBet() {
                    return this._betPerPattern * this._patternsBet
                }
            }
        }), define("game/data/paytableModel", ["require", "game/data/setupData", "game/utils/miscUtils"], function(e) {
            "use strict";
            var t = e("game/data/setupData");
            e("game/utils/miscUtils");
            return {
                init: function(e) {
                    this.data = e, this.maxWinNum = e.PaytableResponse.AwardCapInfo.CurrencyCap.AwardCap, this.stage = e.GameLogicResponse.OutcomeDetail.Stage, this.stage === t.FREE_SPINS && e.GameLogicResponse.OutcomeDetail.NextStage === t.BASE_GAME && (this.stage = t.BASE_GAME), this.betValue, this.betValues, this.patternInfo, this.patternsBet, this.betPerPattern, this.autoSpinSupported = "false" !== e.PaytableResponse.AutoSpinInfo["@enable"].toLowerCase(), this.getTotalBet = function(e) {
                        return this.patternsBet * this.betPerPattern * e
                    }
                }
            }
        }), define("game/data/winDataModel", ["require", "game/utils/miscUtils", "skbJet/component/currencyHelper/currencyHelper", "game/commonUI/slot/betData", "game/data/paytableModel", "game/data/setupData"], function(e) {
            "use strict";
            var t = e("game/utils/miscUtils"),
                i = e("skbJet/component/currencyHelper/currencyHelper"),
                n = e("game/commonUI/slot/betData"),
                r = e("game/data/paytableModel"),
                o = e("game/data/setupData");
            return {
                NO_WIN: "nowin",
                WIN: "win",
                BIG_WIN: "bigWin",
                HUGE_WIN: "hugeWin",
                MASSIVE_WIN: "massiveWin",
                MEGA_WIN: "megaWin",
                MAX_WIN: "maxWin",
                init: function(e) {
                    this.data = e, this.denomAmount = Number(e.serverConfig.denomamount), this.totalPrizeBaseGame = 0, this.totalPrizeFreeSpinSingleSpin = 0, this.totalPrizeFreeSpinCumulative = 0, this.totalPrizeAll = 0, this.totalBet, this.perWinlineData = [], this.winType = this.NO_WIN, this.stage, this.nextStage, this.freeSpinCount, this.freeSpinsRemaining, this.freeSpinsTotal, this.freeSpinsOriginSpinData, this.isBaseGamePatternPay = !1, this.isFreeSpinsPatternPay = !1, this.sdRevealCount = 0;
                    var a = e.gameConfig.rgPresentation;
                    this.rgPresentationEnabled = void 0 !== a && ("boolean" == typeof a ? a : "true" === a.toLowerCase()), this.rgPresentationEnabledOnCurrentSpin = !1, this.parsePrizeData = function(e, t) {
                        var i = 0,
                            r = 0,
                            o = 0,
                            a = 0,
                            s = e.response.PrizeOutcome,
                            l = [];
                        this.freeSpinCount = e.response.FreeSpinOutcome.Count, this.freeSpinsRemaining = e.response.FreeSpinOutcome.Countdown, this.freeSpinsTotal = e.response.FreeSpinOutcome.TotalAwarded, this.isBaseGamePatternPay = this.isFreeSpinsPatternPay = !1;
                        for (var u = 0; u < s.length; u++) {
                            var c = s[u],
                                h = c["@name"];
                            "BaseGame.Lines" === h && (i = Number(c["@totalPay"]), this.isBaseGamePatternPay = c.Prize && "PatternPay" === c.Prize["@name"]), "FreeSpin.Lines" === h && (r = Number(c["@totalPay"]), this.isFreeSpinsPatternPay = c.Prize && "PatternPay" === c.Prize["@name"]), "FreeSpin.Total" === h && (o = Number(c["@totalPay"])), "Game.Total" === h && (a = Number(c["@totalPay"]));
                            if (h === (t ? "FreeSpin.Lines" : "BaseGame.Lines"))
                                if (c.Prize && c.Prize.length > 0)
                                    for (var p = c.Prize, f = 0; f < p.length; f++) l.push(this.getLineData(p[f]));
                                else c.Prize && l.push(this.getLineData(c.Prize))
                        }
                        this.totalPrizeBaseGame = this.keepDecimal(i), this.totalPrizeFreeSpinSingleSpin = this.keepDecimal(r), this.totalPrizeFreeSpinCumulative = this.keepDecimal(o), this.totalPrizeAll = this.keepDecimal(a), this.perWinlineData = l, this.totalBet = n.totalBet, this.stage = e.response.OutcomeDetail.Stage, this.nextStage = e.response.OutcomeDetail.NextStage, this.stage, this.nextStage, this.detectWinType(e), this.bonusAndSolarDiscInfo = this.parseBonusAndSolarDiscInfo(e, t), this.freeSpinsEntryData = this.parseFreeSpinsEntryData(), this.numOfFreeSpins = e.response.FreeSpinOutcome.TotalAwarded, this.rgPresentationEnabledOnCurrentSpin = this.rgPresentationEnabled && (t ? r : i) <= this.totalBet
                    }, this.recoveryGetBaseGamePerWinlineData = function(e) {
                        for (var t = e.response.PrizeOutcome, i = [], n = 0; n < t.length; n++) {
                            var r = t[n];
                            if ("BaseGame.Lines" === r["@name"])
                                if (r.Prize && r.Prize.length > 0)
                                    for (var o = r.Prize, a = 0; a < o.length; a++) i.push(this.getLineData(o[a]));
                                else r.Prize && i.push(this.getLineData(r.Prize))
                        }
                        return i
                    }, this.getPrizeData = function() {
                        return {
                            totalPrizeBaseGame: this.totalPrizeBaseGame,
                            totalPrizeFreeSpinSingleSpin: this.totalPrizeFreeSpinSingleSpin,
                            totalPrizeFreeSpinCumulative: this.totalPrizeFreeSpinCumulative,
                            totalPrizeAll: this.totalPrizeAll,
                            perWinlineData: this.perWinlineData
                        }
                    }, this.parseBonusAndSolarDiscInfo = function(e, i) {
                        var n = e.response.HighlightOutcome,
                            r = t.getElementFromName(n, "BaseGame.ScatterBonus"),
                            o = {
                                hasBonus: !1
                            };
                        r && r.Highlight && r.Highlight.Cell && (o.hasBonus = !0, o.bonusCellID = r.Highlight.Cell["@name"], o.bonusCellNum = t.cellFromLocationID(r.Highlight.Cell["@name"]));
                        var a, s = e.response.SymbolListOutcome;
                        if (s.Symbol) a = s.Symbol;
                        else {
                            var l = t.getElementFromName(s, i ? "FreeSpin.ConvertedReels" : "BaseGame.ConvertedReels");
                            l && l.Symbol && (a = l.Symbol)
                        }
                        var u = {
                                hasSolarDiscs: !1,
                                solarDiscs: []
                            },
                            c = [];
                        if (s && a) {
                            u.hasSolarDiscs = !0;
                            for (var h = 0; h < a.length; h++) {
                                var p, f = a[h],
                                    d = f["@moveFrom"].split("_")[0],
                                    _ = c.indexOf(d);
                                _ > -1 ? p = _ : (u.solarDiscs.push({
                                    cellID: null,
                                    cellNum: null,
                                    colNum: null,
                                    changeSymbol: null,
                                    changeSymbolCellIDs: [],
                                    changeSymbolCellNums: []
                                }), p = u.solarDiscs.length - 1, c.push(d));
                                var m = u.solarDiscs[p];
                                f["@name"].indexOf("r") > -1 ? (m.cellID = f["@cellName"], m.cellNum = t.cellFromLocationID(m.cellID), m.changeSymbol = f["@moveFrom"].split("_")[1], m.colNum = parseInt(f["@moveFrom"].split("_")[0].substring(1))) : (m.changeSymbolCellIDs.push(f["@cellName"]), m.changeSymbolCellNums.push(t.cellFromLocationID(f["@cellName"])))
                            }
                        }
                        return {
                            bonusInfo: o,
                            solarDiscInfo: u
                        }
                    }, this.getLineData = function(e) {
                        var t = {
                            lineNum: null,
                            linePrize: null,
                            symbolsInLine: null
                        };
                        return t.lineNum = parseInt(e["@name"].split(" ")[1]), t.linePrize = parseInt(e["@pay"]) * parseInt(e["@betMultiplier"]), t.symbolsInLine = parseInt(e["@symbolCount"]), t
                    }, this.detectWinType = function(e, t, r) {
                        if (void 0 === t && (t = !1), void 0 === r && (r = 0),
                            e.response && "true" === e.response.AwardCapOutcome.AwardCapExceeded) this.winType = this.MAX_WIN;
                        else {
                            var o = i.fromStakeUnits(n.totalBet),
                                a = t ? r : this.getCurBasePay(e);
                            this.setWinLevel(a, o)
                        }
                        return this.winType
                    }, this.setWinLevel = function(e, t) {
                        e / t >= o.BIG_WIN_THRESHOLDS[3] ? this.winType = this.MEGA_WIN : e / t >= o.BIG_WIN_THRESHOLDS[2] ? this.winType = this.MASSIVE_WIN : e / t >= o.BIG_WIN_THRESHOLDS[1] ? this.winType = this.HUGE_WIN : e / t >= o.BIG_WIN_THRESHOLDS[0] ? this.winType = this.BIG_WIN : this.winType = e > 0 ? this.WIN : this.NO_WIN
                    }, this.getCurBasePay = function(e) {
                        return "true" === e.response.AwardCapOutcome.AwardCapExceeded ? r.maxWinNum : r.stage === o.FREE_SPINS ? this.totalPrizeFreeSpinSingleSpin : this.totalPrizeBaseGame
                    }, this.parseFreeSpinsEntryData = function() {
                        var e = {
                                sdColumns: []
                            },
                            t = this.bonusAndSolarDiscInfo.solarDiscInfo;
                        if (this.bonusAndSolarDiscInfo.bonusInfo.hasBonus && t.hasSolarDiscs)
                            for (var i = 0; i < t.solarDiscs.length; i++) e.sdColumns.push(t.solarDiscs[i].colNum);
                        return e
                    }, this.keepDecimal = function(e) {
                        return Number(i.formatDecimal(e * this.denomAmount))
                    }, this.parseMidFreeSpinsRecoveryPrizeData = function(e) {
                        for (var t = e.response.PrizeOutcome, i = [], n = 0; n < t.length; n++) {
                            var r = t[n];
                            if ("BaseGame.Lines" === r["@name"])
                                if (r.Prize && r.Prize.length > 0)
                                    for (var o = r.Prize, a = 0; a < o.length; a++) i.push(this.getLineData(o[a]));
                                else r.Prize && i.push(this.getLineData(r.Prize))
                        }
                        return i
                    }, this.resetWinType = function() {
                        this.winType = this.NO_WIN
                    }
                }
            }
        }), define("game/setup/audioManager", ["require", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/howlerAudioPlayer/howlerAudioSpritePlayer", "game/data/audioRef", "game/data/gameEvents", "game/data/setupData", "game/data/winDataModel", "game/data/gameDataModel", "game/utils/miscUtils"], function(e) {
            "use strict";
            var t = e("skbJet/component/gameMsgBus/GameMsgBus"),
                i = e("skbJet/component/howlerAudioPlayer/howlerAudioSpritePlayer"),
                n = e("game/data/audioRef"),
                r = e("game/data/gameEvents"),
                o = e("game/data/setupData"),
                a = e("game/data/winDataModel"),
                s = e("game/data/gameDataModel"),
                l = (e("game/utils/miscUtils"), function() {
                    function e(e) {
                        5 === e.reelNum && v && (h(n.SOLAR_DISC_TENSION, 0, 1e3), p(), v = !1)
                    }

                    function l(e) {
                        var t = e.soundName,
                            r = void 0 !== e.loop && e.loop,
                            o = m !== n.BASEGAME_MUSIC_LOOP;
                        switch (t) {
                            case n.ROLLUP_BASIC:
                                o || c(m, .5), u(t, r);
                                break;
                            case n.ROLLUP_BIGWIN_END:
                                c(m), d(n.BIG_WIN_COINS), d(n.FREESPINS_BELL), d(n.ROLLUP_BIGWIN), clearTimeout(g), u(t, r);
                                break;
                            case n.ROLLUP_BASIC_END:
                                o || c(m), u(t, r);
                                break;
                            case n.BONUS_ARRIVED:
                                f(), u(t, r), u(n.SOLAR_DISC_TENSION, !0, 1e3), v = !0;
                                break;
                            case n.FREESPINS_BELL:
                                c(m, 0), u(t, r), e.isBigWin && !e.bellOnly && (g = setTimeout(function() {
                                    u(n.ROLLUP_BIGWIN, !0)
                                }, 2800));
                                break;
                            case n.FREESPINS_INTRO_LOOP:
                                m = n.FREESPINS_INTRO_LOOP, setTimeout(function() {
                                    p()
                                }, 3e3);
                                break;
                            case n.FREE_SPINS_AWARDED:
                                u(t, r, 3e3);
                                break;
                            case n.FREESPINS_MUSIC_LOOP:
                                m = n.FREESPINS_MUSIC_LOOP, p();
                                break;
                            case n.BASEGAME_MUSIC_LOOP:
                                i.currentPlaying("bonus_loop_KL8-3") && h(n.FREESPINS_MUSIC_LOOP, 0, 1e3), m = n.BASEGAME_MUSIC_LOOP, p(1e3);
                                break;
                            case n.SOLAR_DISC_PASSING_0:
                            case n.SOLAR_DISC_PASSING_1:
                            case n.SOLAR_DISC_PASSING_2:
                            case n.SOLAR_DISC_PASSING_3:
                            case n.SOLAR_DISC_PASSING_4:
                            case n.SOLAR_DISC_PASSING_5:
                                if (m === n.BASEGAME_MUSIC_LOOP || e.fsIntro) {
                                    var s = y.indexOf(t.split("~")[0]);
                                    b[s] || (u(t, r), b[s] = !0, setTimeout(function() {
                                        b[s] = !1
                                    }, 750))
                                }
                                break;
                            case n.REEL_STOP:
                                var l = a.bonusAndSolarDiscInfo.solarDiscInfo;
                                if (l.hasSolarDiscs) {
                                    for (var _ = l.solarDiscs, x = [], S = 0; S < _.length; S++) x.push(_[S].colNum);
                                    var T = x.indexOf(e.column);
                                    T > -1 && _[T].colNum === e.column ? (u(n["SOLAR_DISC_PASSING_" + e.column], !1), h(n["SOLAR_DISC_PASSING_" + e.column], 0, 1e3)) : u(t, r)
                                } else u(t, r);
                                break;
                            default:
                                u(t, r)
                        }
                    }

                    function u(e, t, n) {
                        void 0 === n && (n = 0);
                        var r = e.split("~");
                        setTimeout(function() {
                            i.play(r[0], r[1], t), i.volume(r[1], r[2])
                        }, n)
                    }

                    function c(e, t) {
                        void 0 === t && (t = -1);
                        var n = e.split("~");
                        i.volume(n[1], t > -1 ? t : n[2])
                    }

                    function h(e, t, n) {
                        var r = e.split("~")[1];
                        setTimeout(function() {
                            i.fadeOut(r, n)
                        }, t)
                    }

                    function p(e) {
                        o.MUSIC_ON && (void 0 === e && (e = 0), setTimeout(function() {
                            u(m, 1, !0)
                        }, e))
                    }

                    function f() {
                        h(m, 0, 500)
                    }

                    function d(e) {
                        var t = e.split("~")[1];
                        i.stopChannel(t)
                    }
                    var _, m, g, v = !1,
                        y = ["solar_disc_passing_by", "solar_disc_passing_by_Var_01", "solar_disc_passing_by_Var_02", "solar_disc_passing_by_Var_03", "solar_disc_passing_by_Var_04", "solar_disc_passing_by_Var_05"],
                        b = [!1, !1, !1, !1, !1, !1];
                    this.init = function() {
                        _ = this, o.SOUND_ON && (m = s.stageAtLoad === o.FREE_SPINS ? n.FREESPINS_MUSIC_LOOP : n.BASEGAME_MUSIC_LOOP, p(), t.subscribe(r.PLAY_SOUND, l), t.subscribe(r.REEL_STOPPED, e))
                    }
                });
            return l.prototype.constructor = l, l
        }), define("skbJet/componentManchester/webfontLoader/FontSubLoader", ["skbJet/component/resourceLoader/Util", "skbJet/component/resourceLoader/AbstractSubLoader"], function(e, t) {
            function i(e) {
                e = e || {}, e.fileExtFilterList = ["json"], e.checkInterval = e.checkInterval || 100, e.timeout = e.timeout || 1e4, e.testString = e.testString || "abcdefghijklmnopqrstuvwxyz 1234567890_-", this._initOptions("fonts", e), this._testCanvas = document.createElement("canvas"), this._testCtx = this._testCanvas.getContext("2d")
            }
            return i.prototype = new t, i.prototype._doLoadFile = function(t, i, n) {
                var r = {
                        woff: "woff",
                        woff2: "woff2",
                        ttf: "truetype"
                    },
                    o = ["woff2", "woff", "ttf"],
                    a = this._testCtx,
                    s = this.options;
                e.httpGetJson(t, function(l) {
                    function u() {
                        m += 1, a.font = f + l.family + ", sans-serif", a.measureText(s.testString).width !== d ? i() : m > s.timeout / s.checkInterval ? n() : setTimeout(u, s.checkInterval)
                    }
                    var c = e.getParentFolder(t);
                    "string" == typeof l.files && (l.files = [l.files]), l.files.sort(function(t, i) {
                        return o.indexOf(e.getFileExt(t, !0)) > o.indexOf(e.getFileExt(i, !0))
                    });
                    var h = l.files.map(function(t) {
                            var i = "url(" + c + t + ") ",
                                n = e.getFileExt(t, !0);
                            return i += 'format("' + r[n] + '")'
                        }),
                        p = "@font-face {";
                    p += 'font-family: "' + l.family + '";', p += "src: " + h.join(", ") + ";", p += "font-weight: " + (l.weight || "normal") + ";", p += "font-style: " + (l.style || "normal") + "; }";
                    var f = (l.style || "normal") + " " + (l.weight || "normal") + " 30px ";
                    a.font = f + "sans-serif";
                    var d = a.measureText(s.testString).width,
                        _ = document.createElement("style");
                    document.head.appendChild(_), _.sheet.insertRule(p, 0);
                    var m = 0;
                    u()
                }, n)
            }, i
        }), define("skbJet/component/howlerAudioPlayer/HowlerChannel", ["com/howlerjs/howler", "skbJet/component/utils/PauseTimer"], function(e, t) {
            function i() {}

            function n(e, t) {
                e._loaded || (e._loaded = !0, t())
            }

            function r(e) {
                e._fadeInterval && (t.clearInterval(e._fadeInterval), e._fadeInterval = null)
            }
            return i.prototype._muteFlag = !1, i.prototype._curSound = null, i.prototype._howl = null, i.prototype._loaded = !1, i.prototype._currentVolume = 1, i.prototype._fadeOutEndPause = !1, i.prototype.load = function(e, t, i) {
                this._howl = new window.Howl({
                    src: e.urls,
                    sprite: e.sprite
                });
                var r = this;
                this._howl.once("load", function() {
                    n(r, t)
                }), setTimeout(function() {
                    n(r, t)
                }, 14e3), this._howl.once("loaderror", i)
            }, i.prototype.currentPlaying = function() {
                return this._curSound ? this._curSound.name : null
            }, i.prototype._onVolumeUpdated = function() {
                this._curSound && this._curSound.id && this._howl.volume(this._howl._volume, this._curSound.id)
            }, i.prototype.play = function(e, t) {
                var i = this;
                this.stop(), this._curSound = {
                    name: null,
                    id: null
                };
                for (var n = this._howl._sounds || [], r = 0; r < n.length; r++) "suspended" !== n[r]._node.context.state && "interrupted" !== n[r]._node.context.state || n[r]._node.context.resume();
                this._curSound.id = this._howl.play(e), this._howl.loop(!!t, this._curSound.id), t || this._howl.once("end", function() {
                    i._curSound = null
                }, i._curSound.id), this._curSound.name = e
            }, i.prototype.stop = function() {
                this._howl.stop(), this._fadeOutEndPause = !1, this._curSound = null
            }, i.prototype.pause = function() {
                this._howl.pause()
            }, i.prototype.resume = function() {
                this._fadeOutEndPause || this._curSound && (this._howl.play(this._curSound.id), this._howl.mute(this._muteFlag, this._curSound.id), this._onVolumeUpdated())
            }, i.prototype.volume = function(e) {
                this._howl._volume = e, this._currentVolume = e, this._curSound && this._curSound.id && this._howl.volume(e, this._curSound.id)
            }, i.prototype.fadeOut = function(e, i) {
                i = i || {}, e = e || 1500;
                var n = this._howl._volume / 20,
                    o = this;
                r(this), o._fadeInterval = t.setInterval(function() {
                    o._howl._volume - n <= 0 ? (o._howl._volume = 0, o._onVolumeUpdated(), o.pause(), o._fadeOutEndPause = !0, t.clearInterval(o._fadeInterval), i.completeCallback && i.completeCallback()) : (o._howl._volume -= n, o._onVolumeUpdated())
                }, e / 20)
            }, i.prototype.playAndFadeIn = function(e, i, n, o) {
                o = o || {};
                var a = this._currentVolume;
                i = i || !1, n = n || 2e3;
                var s = this;
                this.play(e, i), this._howl._volume = 0, s._onVolumeUpdated();
                var l = a / 20;
                r(this), s._fadeInterval = t.setInterval(function() {
                    s._howl._volume + l >= a ? (s._howl._volume = a, s._onVolumeUpdated(), t.clearInterval(s._fadeInterval), o.completeCallback && o.completeCallback()) : (s._howl._volume += l, s._onVolumeUpdated())
                }, n / 20)
            }, i.prototype.cancelFade = function() {
                r(this), this._howl._volume = this._currentVolume, this._onVolumeUpdated(), this._fadeOutEndPause = !1, this.resume()
            }, i.prototype.mute = function(e) {
                this._muteFlag = e, this._howl.mute(e)
            }, i
        }), define("skbJet/component/howlerAudioPlayer/Html5Channel", ["skbJet/component/utils/PauseTimer"], function(e) {
            function t() {}

            function i(e) {
                try {
                    e.loop ? (clearTimeout(e._endTimerId), e.audioTag.currentTime = e.spriteMap[e._currentPlaying][0] / 1e3, e._endTimerId = setTimeout(function() {
                        i(e)
                    }, e.spriteMap[e._currentPlaying][1])) : e.stop()
                } catch (e) {
                    return
                }
            }

            function n(t) {
                t._fadeInterval && (e.clearInterval(t._fadeInterval), t._fadeInterval = null)
            }
            var r = [];
            return t.STATUS = {
                Loading: "Loading",
                Playing: "Playing",
                Paused: "Paused",
                Stopped: "Stopped"
            }, t.prototype._currentVolume = 1, t.prototype._fadeOutEndPause = !1, t.prototype.load = function(e, i) {
                this.spriteMap = e.sprite, this.audioTag = new Audio, this.audioTag.muted = !0, this.audioTag.volume = 0, this.status = t.STATUS.Loading;
                var n = this;
                n.audioTag.oncanplaythrough = function() {
                    n.audioTag.onplay = function() {
                        n.audioTag.onplay = null, n.audioTag.pause(), n.status = t.STATUS.Stopped, r.push(n)
                    }, n.audioTag.play()
                };
                for (var o = null, a = document.createElement("audio"), s = 0; s < e.urls.length; s++) {
                    var l = e.urls[s];
                    if ((l = l.match(/\/[\w,\d]+\.([\w,\d]+)\?*/)) && (l = l[1], "m4a" === l && (l = "mp4"), "" !== a.canPlayType("audio/" + l))) {
                        o = e.urls[s];
                        break
                    }
                }
                n.audioTag.src = o, n.audioTag.load(), setTimeout(i, 500)
            }, t.prototype.play = function(e, n) {
                if (this.status !== t.STATUS.Loading) try {
                    if (!this.spriteMap[e]) return;
                    var r = this;
                    this.audioTag.currentTime = this.spriteMap[e][0] / 1e3, this._endTimerId && clearTimeout(this._endTimerId), this.status !== t.STATUS.Stopped && this.status !== t.STATUS.Paused || this.audioTag.play(), this.status = t.STATUS.Playing, this._currentPlaying = e, this.loop = !!n, this._endTimerId = setTimeout(function() {
                        i(r)
                    }, this.spriteMap[e][1])
                } catch (e) {
                    return
                }
            }, t.prototype.pause = function() {
                this.status === t.STATUS.Playing && (this.audioTag.pause(), clearTimeout(this._endTimerId), this._endTimerId = null, this.status = t.STATUS.Paused)
            }, t.prototype.resume = function() {
                if (!this._fadeOutEndPause && this.status === t.STATUS.Paused) {
                    this.audioTag.play(), this.status = t.STATUS.Playing;
                    var e = this,
                        n = e.spriteMap[e._currentPlaying][1] - (1e3 * e.audioTag.currentTime - e.spriteMap[e._currentPlaying][0]);
                    e._endTimerId = setTimeout(function() {
                        i(e)
                    }, n)
                }
            }, t.prototype.stop = function() {
                this.audioTag.pause(), this._fadeOutEndPause = !1, clearTimeout(this._endTimerId), this._endTimerId = null, this.status = t.STATUS.Stopped, this._currentPlaying = null, this.loop = !1
            }, t.prototype.currentPlaying = function() {
                return this._currentPlaying
            }, t.prototype.mute = function(e) {
                this.audioTag.muted = e
            }, t.prototype.volume = function(e) {
                this.audioTag.volume = e, this._currentVolume = e
            }, t.prototype.fadeOut = function(t, i) {
                i = i || {}, t = t || 1500;
                var r = this;
                0 === r.audioTag.volume && (r.audioTag.volume = r._currentVolume);
                var o = r.audioTag.volume / 20;
                n(r), r._fadeInterval = e.setInterval(function() {
                    r.audioTag.volume - o <= 0 ? (r.audioTag.volume = 0, r.pause(), r._fadeOutEndPause = !0, e.clearInterval(r._fadeInterval), i.completeCallback && i.completeCallback()) : r.audioTag.volume -= o
                }, t / 20)
            }, t.prototype.playAndFadeIn = function(t, i, r, o) {
                o = o || {}, r = r || 2e3;
                var a = this,
                    s = a._currentVolume;
                i = i || !1, a.play(t, i), a.audioTag.volume = 0;
                var l = s / 20;
                n(a), a._fadeInterval = e.setInterval(function() {
                    a.audioTag.volume + l >= s ? (a.audioTag.volume = s, e.clearInterval(a._fadeInterval), o.completeCallback && o.completeCallback()) : a.audioTag.volume += l
                }, r / 20)
            }, t.prototype.cancelFade = function() {
                n(this), this.audioTag.volume = this._currentVolume, this._fadeOutEndPause = !1, this.resume()
            }, t
        }), define("skbJet/component/howlerAudioPlayer/HowlerAudioSubLoader", ["skbJet/component/resourceLoader/Util", "skbJet/component/resourceLoader/AbstractSubLoader", "skbJet/component/resourceLoader/resourceLib", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/howlerAudioPlayer/HowlerChannel", "skbJet/component/howlerAudioPlayer/Html5Channel", "skbJet/component/howlerAudioPlayer/howlerAudioSpritePlayer"], function(e, t, i, n, r, o, a) {
            function s(e) {
                e = e || {}, e.fileExtFilterList = ["json"], this._initOptions("sounds", e)
            }
            return s.prototype = new t, s.prototype._doLoadFile = function(t, i, n) {
                var s = this.options.queryStr;
                e.httpGetJson(t, function(l) {
                    var u = null;
                    u = window.AudioContext || window.webkitAudioContext ? new r : new o;
                    for (var c = e.getFileNameWithoutExt(t), h = e.getParentFolder(t), p = 0; p < l.urls.length; p++) l.urls[p] = h + l.urls[p] + s;
                    u.load(l, i, n);
                    var f = c.match(/\d+$/);
                    f && f[0] && a._addChannel(u, parseInt(f[0]))
                }, n)
            }, s
        }), define("game/loadController", ["require", "game/data/gameEvents", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/resourceLoader/ResourceLoader", "skbJet/componentManchester/webfontLoader/FontSubLoader", "skbJet/component/howlerAudioPlayer/HowlerAudioSubLoader", "skbJet/component/gameMsgBus/GameMsgBus"], function(e) {
            function t(e) {
                h.publish("toPlatform", {
                    channel: "Kernel",
                    topic: "LoadProgress",
                    data: {
                        id: "game",
                        items: e.total + 1,
                        current: e.current,
                        complete: !1
                    }
                }), e.complete && (a.init(null, null, null), a.showScene("_GameScene"), a.lib._GameScene.pixiContainer.alpha = 0, h.publish("toPlatform", {
                    channel: "Kernel",
                    topic: "LoadProgress",
                    data: {
                        id: "game",
                        items: e.total + 1,
                        current: e.total + 1,
                        complete: !0
                    }
                }))
            }
            var i, n, r, o = e("game/data/gameEvents"),
                a = e("skbJet/component/gladPixiRenderer/gladPixiRenderer"),
                s = e("skbJet/component/pixiResourceLoader/pixiResourceLoader"),
                l = e("skbJet/component/resourceLoader/ResourceLoader"),
                u = e("skbJet/componentManchester/webfontLoader/FontSubLoader"),
                c = e("skbJet/component/howlerAudioPlayer/HowlerAudioSubLoader"),
                h = e("skbJet/component/gameMsgBus/GameMsgBus");
            return function() {
                h.subscribe(o.RESOURCES_LOAD_PROGRESS, t), i = window.location.search.match(/&?assetPack=([^&]+)&?/)[1], n = window.location.search.match(/&?language=([^&]+)&?/)[1], r = window.location.search.match(/&?skincode=([^&]+)&?/)[1], s.load("assetPacks/" + i, n, r), l.getDefault().addSubLoader("fonts", new u), l.getDefault().addSubLoader("sounds", new c({
                    type: "sounds"
                })), l.getDefault().addHeartBeat(t)
            }(), {
                assetPack: i,
                langCode: n,
                skinCode: r
            }
        }), define("game/setup/gameSizeController", ["require", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "game/data/gameEvents", "game/data/setupData"], function(e) {
            function t() {
                var e = Number(window.innerWidth),
                    t = Number(window.innerHeight);
                document.documentElement.style.width = e + "px", document.documentElement.style.height = t + "px", document.body.style.width = e + "px", document.body.style.height = t + "px", l.style.width = e + "px", l.style.height = t + "px";
                var i = o.animMap._landscape2portrait,
                    r = [o.lib._gameLayer.pixiContainer, o.lib._bigWin.pixiContainer, o.lib._messagePanelLayer.pixiContainer];
                if (e < t && n !== s.PORTRAIT) {
                    n = s.PORTRAIT, a.publish(a.ORIENTATION_CHANGED, {
                        orientation: n
                    }), o.setSize(u[0], u[1]), i.updateStyleToTime(i.maxTime);
                    for (var h = 0; h < r.length; h++) r[h].scaleX = r[h].scaleY = .758, r[h].x = -140, r[h].y = 300
                } else if (e >= t && n !== s.LANDSCAPE) {
                    n = s.LANDSCAPE, a.publish(a.ORIENTATION_CHANGED, {
                        orientation: n
                    }), o.setSize(c[0], c[1]), i.updateStyleToTime(0);
                    for (var h = 0; h < r.length; h++) r[h].scaleX = r[h].scaleY = 1, r[h].x = r[h].y = 0
                }
                o.fitSize(e, t)
            }

            function i() {
                for (var e = [], i = o.animMap._landscape2portraitTemplate._spritesNameList, n = 0; n < i.length; n++) {
                    var r = i[n].match(/^_portrait_(.*)$/);
                    r ? e.push("_" + r[1]) : e.push(i[n])
                }
                o.animMap._landscape2portraitTemplate.clone(e, "_landscape2portrait"), l.width = 2 * window._gladData._width, l.height = 2 * window._gladData._height, window.addEventListener("resize", t), t()
            }
            var n, r = e("skbJet/component/gameMsgBus/GameMsgBus"),
                o = e("skbJet/component/gladPixiRenderer/gladPixiRenderer"),
                a = e("game/data/gameEvents"),
                s = e("game/data/setupData"),
                l = document.getElementById("game"),
                u = [810, 1228],
                c = [1440, 810];
            return r.subscribe("onBeforeShowStage", i), {}
        });
    var _gsScope = "undefined" != typeof module && module.exports && "undefined" != typeof global ? global : this || window;
    (_gsScope._gsQueue || (_gsScope._gsQueue = [])).push(function() {
            "use strict";
            _gsScope._gsDefine("TweenMax", ["core.Animation", "core.SimpleTimeline", "TweenLite"], function(e, t, i) {
                    var n = function(e) {
                            var t, i = [],
                                n = e.length;
                            for (t = 0; t !== n; i.push(e[t++]));
                            return i
                        },
                        r = function(e, t, i) {
                            var n, r, o = e.cycle;
                            for (n in o) r = o[n], e[n] = "function" == typeof r ? r(i, t[i]) : r[i % r.length];
                            delete e.cycle
                        },
                        o = function(e, t, n) {
                            i.call(this, e, t, n), this._cycle = 0, this._yoyo = !0 === this.vars.yoyo || !!this.vars.yoyoEase, this._repeat = this.vars.repeat || 0, this._repeatDelay = this.vars.repeatDelay || 0, this._dirty = !0, this.render = o.prototype.render
                        },
                        a = i._internals,
                        s = a.isSelector,
                        l = a.isArray,
                        u = o.prototype = i.to({}, .1, {}),
                        c = [];
                    o.version = "1.20.1", u.constructor = o, u.kill()._gc = !1, o.killTweensOf = o.killDelayedCallsTo = i.killTweensOf, o.getTweensOf = i.getTweensOf, o.lagSmoothing = i.lagSmoothing, o.ticker = i.ticker, o.render = i.render, u.invalidate = function() {
                        return this._yoyo = !0 === this.vars.yoyo || !!this.vars.yoyoEase, this._repeat = this.vars.repeat || 0, this._repeatDelay = this.vars.repeatDelay || 0, this._yoyoEase = null, this._uncache(!0), i.prototype.invalidate.call(this)
                    }, u.updateTo = function(e, t) {
                        var n, r = this.ratio,
                            o = this.vars.immediateRender || e.immediateRender;
                        t && this._startTime < this._timeline._time && (this._startTime = this._timeline._time, this._uncache(!1), this._gc ? this._enabled(!0, !1) : this._timeline.insert(this, this._startTime - this._delay));
                        for (n in e) this.vars[n] = e[n];
                        if (this._initted || o)
                            if (t) this._initted = !1, o && this.render(0, !0, !0);
                            else if (this._gc && this._enabled(!0, !1), this._notifyPluginsOfEnabled && this._firstPT && i._onPluginEvent("_onDisable", this), this._time / this._duration > .998) {
                            var a = this._totalTime;
                            this.render(0, !0, !1), this._initted = !1, this.render(a, !0, !1)
                        } else if (this._initted = !1, this._init(), this._time > 0 || o)
                            for (var s, l = 1 / (1 - r), u = this._firstPT; u;) s = u.s + u.c, u.c *= l, u.s = s - u.c, u = u._next;
                        return this
                    }, u.render = function(e, t, n) {
                        this._initted || 0 === this._duration && this.vars.repeat && this.invalidate();
                        var r, o, s, l, u, c, h, p, f, d = this._dirty ? this.totalDuration() : this._totalDuration,
                            _ = this._time,
                            m = this._totalTime,
                            g = this._cycle,
                            v = this._duration,
                            y = this._rawPrevTime;
                        if (e >= d - 1e-7 && e >= 0 ? (this._totalTime = d, this._cycle = this._repeat, this._yoyo && 0 != (1 & this._cycle) ? (this._time = 0, this.ratio = this._ease._calcEnd ? this._ease.getRatio(0) : 0) : (this._time = v, this.ratio = this._ease._calcEnd ? this._ease.getRatio(1) : 1), this._reversed || (r = !0, o = "onComplete", n = n || this._timeline.autoRemoveChildren), 0 === v && (this._initted || !this.vars.lazy || n) && (this._startTime === this._timeline._duration && (e = 0), (y < 0 || e <= 0 && e >= -1e-7 || 1e-10 === y && "isPause" !== this.data) && y !== e && (n = !0, y > 1e-10 && (o = "onReverseComplete")), this._rawPrevTime = p = !t || e || y === e ? e : 1e-10)) : e < 1e-7 ? (this._totalTime = this._time = this._cycle = 0, this.ratio = this._ease._calcEnd ? this._ease.getRatio(0) : 0, (0 !== m || 0 === v && y > 0) && (o = "onReverseComplete", r = this._reversed), e < 0 && (this._active = !1, 0 === v && (this._initted || !this.vars.lazy || n) && (y >= 0 && (n = !0), this._rawPrevTime = p = !t || e || y === e ? e : 1e-10)), this._initted || (n = !0)) : (this._totalTime = this._time = e, 0 !== this._repeat && (l = v + this._repeatDelay, this._cycle = this._totalTime / l >> 0, 0 !== this._cycle && this._cycle === this._totalTime / l && m <= e && this._cycle--, this._time = this._totalTime - this._cycle * l, this._yoyo && 0 != (1 & this._cycle) && (this._time = v - this._time, (f = this._yoyoEase || this.vars.yoyoEase) && (this._yoyoEase || (!0 !== f || this._initted ? this._yoyoEase = f = !0 === f ? this._ease : f instanceof Ease ? f : Ease.map[f] : (f = this.vars.ease, this._yoyoEase = f = f ? f instanceof Ease ? f : "function" == typeof f ? new Ease(f, this.vars.easeParams) : Ease.map[f] || i.defaultEase : i.defaultEase)), this.ratio = f ? 1 - f.getRatio((v - this._time) / v) : 0)), this._time > v ? this._time = v : this._time < 0 && (this._time = 0)), this._easeType && !f ? (u = this._time / v, c = this._easeType, h = this._easePower, (1 === c || 3 === c && u >= .5) && (u = 1 - u), 3 === c && (u *= 2), 1 === h ? u *= u : 2 === h ? u *= u * u : 3 === h ? u *= u * u * u : 4 === h && (u *= u * u * u * u), 1 === c ? this.ratio = 1 - u : 2 === c ? this.ratio = u : this._time / v < .5 ? this.ratio = u / 2 : this.ratio = 1 - u / 2) : f || (this.ratio = this._ease.getRatio(this._time / v))), _ === this._time && !n && g === this._cycle) return void(m !== this._totalTime && this._onUpdate && (t || this._callback("onUpdate")));
                        if (!this._initted) {
                            if (this._init(), !this._initted || this._gc) return;
                            if (!n && this._firstPT && (!1 !== this.vars.lazy && this._duration || this.vars.lazy && !this._duration)) return this._time = _, this._totalTime = m, this._rawPrevTime = y, this._cycle = g, a.lazyTweens.push(this), void(this._lazy = [e, t]);
                            !this._time || r || f ? r && this._ease._calcEnd && !f && (this.ratio = this._ease.getRatio(0 === this._time ? 0 : 1)) : this.ratio = this._ease.getRatio(this._time / v)
                        }
                        for (!1 !== this._lazy && (this._lazy = !1), this._active || !this._paused && this._time !== _ && e >= 0 && (this._active = !0), 0 === m && (2 === this._initted && e > 0 && this._init(), this._startAt && (e >= 0 ? this._startAt.render(e, t, n) : o || (o = "_dummyGS")), this.vars.onStart && (0 === this._totalTime && 0 !== v || t || this._callback("onStart"))), s = this._firstPT; s;) s.f ? s.t[s.p](s.c * this.ratio + s.s) : s.t[s.p] = s.c * this.ratio + s.s, s = s._next;
                        this._onUpdate && (e < 0 && this._startAt && this._startTime && this._startAt.render(e, t, n), t || (this._totalTime !== m || o) && this._callback("onUpdate")), this._cycle !== g && (t || this._gc || this.vars.onRepeat && this._callback("onRepeat")), o && (this._gc && !n || (e < 0 && this._startAt && !this._onUpdate && this._startTime && this._startAt.render(e, t, n), r && (this._timeline.autoRemoveChildren && this._enabled(!1, !1), this._active = !1), !t && this.vars[o] && this._callback(o), 0 === v && 1e-10 === this._rawPrevTime && 1e-10 !== p && (this._rawPrevTime = 0)))
                    }, o.to = function(e, t, i) {
                        return new o(e, t, i)
                    }, o.from = function(e, t, i) {
                        return i.runBackwards = !0, i.immediateRender = 0 != i.immediateRender, new o(e, t, i)
                    }, o.fromTo = function(e, t, i, n) {
                        return n.startAt = i, n.immediateRender = 0 != n.immediateRender && 0 != i.immediateRender, new o(e, t, n)
                    }, o.staggerTo = o.allTo = function(e, t, a, u, h, p, f) {
                        u = u || 0;
                        var d, _, m, g, v = 0,
                            y = [],
                            b = function() {
                                a.onComplete && a.onComplete.apply(a.onCompleteScope || this, arguments), h.apply(f || a.callbackScope || this, p || c)
                            },
                            x = a.cycle,
                            S = a.startAt && a.startAt.cycle;
                        for (l(e) || ("string" == typeof e && (e = i.selector(e) || e), s(e) && (e = n(e))), e = e || [], u < 0 && (e = n(e), e.reverse(), u *= -1), d = e.length - 1, m = 0; m <= d; m++) {
                            _ = {};
                            for (g in a) _[g] = a[g];
                            if (x && (r(_, e, m), null != _.duration && (t = _.duration, delete _.duration)), S) {
                                S = _.startAt = {};
                                for (g in a.startAt) S[g] = a.startAt[g];
                                r(_.startAt, e, m)
                            }
                            _.delay = v + (_.delay || 0), m === d && h && (_.onComplete = b), y[m] = new o(e[m], t, _), v += u
                        }
                        return y
                    }, o.staggerFrom = o.allFrom = function(e, t, i, n, r, a, s) {
                        return i.runBackwards = !0, i.immediateRender = 0 != i.immediateRender, o.staggerTo(e, t, i, n, r, a, s)
                    }, o.staggerFromTo = o.allFromTo = function(e, t, i, n, r, a, s, l) {
                        return n.startAt = i, n.immediateRender = 0 != n.immediateRender && 0 != i.immediateRender, o.staggerTo(e, t, n, r, a, s, l)
                    }, o.delayedCall = function(e, t, i, n, r) {
                        return new o(t, 0, {
                            delay: e,
                            onComplete: t,
                            onCompleteParams: i,
                            callbackScope: n,
                            onReverseComplete: t,
                            onReverseCompleteParams: i,
                            immediateRender: !1,
                            useFrames: r,
                            overwrite: 0
                        })
                    }, o.set = function(e, t) {
                        return new o(e, 0, t)
                    }, o.isTweening = function(e) {
                        return i.getTweensOf(e, !0).length > 0
                    };
                    var h = function(e, t) {
                            for (var n = [], r = 0, o = e._first; o;) o instanceof i ? n[r++] = o : (t && (n[r++] = o), n = n.concat(h(o, t)), r = n.length), o = o._next;
                            return n
                        },
                        p = o.getAllTweens = function(t) {
                            return h(e._rootTimeline, t).concat(h(e._rootFramesTimeline, t))
                        };
                    o.killAll = function(e, i, n, r) {
                        null == i && (i = !0), null == n && (n = !0);
                        var o, a, s, l = p(0 != r),
                            u = l.length,
                            c = i && n && r;
                        for (s = 0; s < u; s++) a = l[s], (c || a instanceof t || (o = a.target === a.vars.onComplete) && n || i && !o) && (e ? a.totalTime(a._reversed ? 0 : a.totalDuration()) : a._enabled(!1, !1))
                    }, o.killChildTweensOf = function(e, t) {
                        if (null != e) {
                            var r, u, c, h, p, f = a.tweenLookup;
                            if ("string" == typeof e && (e = i.selector(e) || e), s(e) && (e = n(e)), l(e))
                                for (h = e.length; --h > -1;) o.killChildTweensOf(e[h], t);
                            else {
                                r = [];
                                for (c in f)
                                    for (u = f[c].target.parentNode; u;) u === e && (r = r.concat(f[c].tweens)), u = u.parentNode;
                                for (p = r.length, h = 0; h < p; h++) t && r[h].totalTime(r[h].totalDuration()), r[h]._enabled(!1, !1)
                            }
                        }
                    };
                    var f = function(e, i, n, r) {
                        i = !1 !== i, n = !1 !== n, r = !1 !== r;
                        for (var o, a, s = p(r), l = i && n && r, u = s.length; --u > -1;) a = s[u], (l || a instanceof t || (o = a.target === a.vars.onComplete) && n || i && !o) && a.paused(e)
                    };
                    return o.pauseAll = function(e, t, i) {
                        f(!0, e, t, i)
                    }, o.resumeAll = function(e, t, i) {
                        f(!1, e, t, i)
                    }, o.globalTimeScale = function(t) {
                        var n = e._rootTimeline,
                            r = i.ticker.time;
                        return arguments.length ? (t = t || 1e-10, n._startTime = r - (r - n._startTime) * n._timeScale / t, n = e._rootFramesTimeline, r = i.ticker.frame, n._startTime = r - (r - n._startTime) * n._timeScale / t, n._timeScale = e._rootTimeline._timeScale = t, t) : n._timeScale
                    }, u.progress = function(e, t) {
                        return arguments.length ? this.totalTime(this.duration() * (this._yoyo && 0 != (1 & this._cycle) ? 1 - e : e) + this._cycle * (this._duration + this._repeatDelay), t) : this._time / this.duration()
                    }, u.totalProgress = function(e, t) {
                        return arguments.length ? this.totalTime(this.totalDuration() * e, t) : this._totalTime / this.totalDuration()
                    }, u.time = function(e, t) {
                        return arguments.length ? (this._dirty && this.totalDuration(), e > this._duration && (e = this._duration), this._yoyo && 0 != (1 & this._cycle) ? e = this._duration - e + this._cycle * (this._duration + this._repeatDelay) : 0 !== this._repeat && (e += this._cycle * (this._duration + this._repeatDelay)), this.totalTime(e, t)) : this._time
                    }, u.duration = function(t) {
                        return arguments.length ? e.prototype.duration.call(this, t) : this._duration
                    }, u.totalDuration = function(e) {
                        return arguments.length ? -1 === this._repeat ? this : this.duration((e - this._repeat * this._repeatDelay) / (this._repeat + 1)) : (this._dirty && (this._totalDuration = -1 === this._repeat ? 999999999999 : this._duration * (this._repeat + 1) + this._repeatDelay * this._repeat, this._dirty = !1), this._totalDuration)
                    }, u.repeat = function(e) {
                        return arguments.length ? (this._repeat = e, this._uncache(!0)) : this._repeat
                    }, u.repeatDelay = function(e) {
                        return arguments.length ? (this._repeatDelay = e, this._uncache(!0)) : this._repeatDelay
                    }, u.yoyo = function(e) {
                        return arguments.length ? (this._yoyo = e, this) : this._yoyo
                    }, o
                }, !0), _gsScope._gsDefine("TimelineLite", ["core.Animation", "core.SimpleTimeline", "TweenLite"], function(e, t, i) {
                    var n = function(e) {
                            t.call(this, e), this._labels = {}, this.autoRemoveChildren = !0 === this.vars.autoRemoveChildren, this.smoothChildTiming = !0 === this.vars.smoothChildTiming, this._sortChildren = !0, this._onUpdate = this.vars.onUpdate;
                            var i, n, r = this.vars;
                            for (n in r) i = r[n], s(i) && -1 !== i.join("").indexOf("{self}") && (r[n] = this._swapSelfInParams(i));
                            s(r.tweens) && this.add(r.tweens, 0, r.align, r.stagger)
                        },
                        r = i._internals,
                        o = n._internals = {},
                        a = r.isSelector,
                        s = r.isArray,
                        l = r.lazyTweens,
                        u = r.lazyRender,
                        c = _gsScope._gsDefine.globals,
                        h = function(e) {
                            var t, i = {};
                            for (t in e) i[t] = e[t];
                            return i
                        },
                        p = function(e, t, i) {
                            var n, r, o = e.cycle;
                            for (n in o) r = o[n], e[n] = "function" == typeof r ? r(i, t[i]) : r[i % r.length];
                            delete e.cycle
                        },
                        f = o.pauseCallback = function() {},
                        d = function(e) {
                            var t, i = [],
                                n = e.length;
                            for (t = 0; t !== n; i.push(e[t++]));
                            return i
                        },
                        _ = n.prototype = new t;
                    return n.version = "1.20.1", _.constructor = n, _.kill()._gc = _._forcingPlayhead = _._hasPause = !1, _.to = function(e, t, n, r) {
                        var o = n.repeat && c.TweenMax || i;
                        return t ? this.add(new o(e, t, n), r) : this.set(e, n, r)
                    }, _.from = function(e, t, n, r) {
                        return this.add((n.repeat && c.TweenMax || i).from(e, t, n), r)
                    }, _.fromTo = function(e, t, n, r, o) {
                        var a = r.repeat && c.TweenMax || i;
                        return t ? this.add(a.fromTo(e, t, n, r), o) : this.set(e, r, o)
                    }, _.staggerTo = function(e, t, r, o, s, l, u, c) {
                        var f, _, m = new n({
                                onComplete: l,
                                onCompleteParams: u,
                                callbackScope: c,
                                smoothChildTiming: this.smoothChildTiming
                            }),
                            g = r.cycle;
                        for ("string" == typeof e && (e = i.selector(e) || e), e = e || [], a(e) && (e = d(e)), o = o || 0, o < 0 && (e = d(e), e.reverse(), o *= -1), _ = 0; _ < e.length; _++) f = h(r), f.startAt && (f.startAt = h(f.startAt), f.startAt.cycle && p(f.startAt, e, _)), g && (p(f, e, _), null != f.duration && (t = f.duration, delete f.duration)), m.to(e[_], t, f, _ * o);
                        return this.add(m, s)
                    }, _.staggerFrom = function(e, t, i, n, r, o, a, s) {
                        return i.immediateRender = 0 != i.immediateRender, i.runBackwards = !0, this.staggerTo(e, t, i, n, r, o, a, s)
                    }, _.staggerFromTo = function(e, t, i, n, r, o, a, s, l) {
                        return n.startAt = i, n.immediateRender = 0 != n.immediateRender && 0 != i.immediateRender, this.staggerTo(e, t, n, r, o, a, s, l)
                    }, _.call = function(e, t, n, r) {
                        return this.add(i.delayedCall(0, e, t, n), r)
                    }, _.set = function(e, t, n) {
                        return n = this._parseTimeOrLabel(n, 0, !0), null == t.immediateRender && (t.immediateRender = n === this._time && !this._paused), this.add(new i(e, 0, t), n)
                    }, n.exportRoot = function(e, t) {
                        e = e || {}, null == e.smoothChildTiming && (e.smoothChildTiming = !0);
                        var r, o, a = new n(e),
                            s = a._timeline;
                        for (null == t && (t = !0), s._remove(a, !0), a._startTime = 0, a._rawPrevTime = a._time = a._totalTime = s._time, r = s._first; r;) o = r._next, t && r instanceof i && r.target === r.vars.onComplete || a.add(r, r._startTime - r._delay), r = o;
                        return s.add(a, 0), a
                    }, _.add = function(r, o, a, l) {
                        var u, c, h, p, f, d;
                        if ("number" != typeof o && (o = this._parseTimeOrLabel(o, 0, !0, r)), !(r instanceof e)) {
                            if (r instanceof Array || r && r.push && s(r)) {
                                for (a = a || "normal", l = l || 0, u = o, c = r.length, h = 0; h < c; h++) s(p = r[h]) && (p = new n({
                                    tweens: p
                                })), this.add(p, u), "string" != typeof p && "function" != typeof p && ("sequence" === a ? u = p._startTime + p.totalDuration() / p._timeScale : "start" === a && (p._startTime -= p.delay())), u += l;
                                return this._uncache(!0)
                            }
                            if ("string" == typeof r) return this.addLabel(r, o);
                            if ("function" != typeof r) throw "Cannot add " + r + " into the timeline; it is not a tween, timeline, function, or string.";
                            r = i.delayedCall(0, r)
                        }
                        if (t.prototype.add.call(this, r, o), r._time && r.render((this.rawTime() - r._startTime) * r._timeScale, !1, !1), (this._gc || this._time === this._duration) && !this._paused && this._duration < this.duration())
                            for (f = this, d = f.rawTime() > r._startTime; f._timeline;) d && f._timeline.smoothChildTiming ? f.totalTime(f._totalTime, !0) : f._gc && f._enabled(!0, !1), f = f._timeline;
                        return this
                    }, _.remove = function(t) {
                        if (t instanceof e) {
                            this._remove(t, !1);
                            var i = t._timeline = t.vars.useFrames ? e._rootFramesTimeline : e._rootTimeline;
                            return t._startTime = (t._paused ? t._pauseTime : i._time) - (t._reversed ? t.totalDuration() - t._totalTime : t._totalTime) / t._timeScale, this
                        }
                        if (t instanceof Array || t && t.push && s(t)) {
                            for (var n = t.length; --n > -1;) this.remove(t[n]);
                            return this
                        }
                        return "string" == typeof t ? this.removeLabel(t) : this.kill(null, t)
                    }, _._remove = function(e, i) {
                        return t.prototype._remove.call(this, e, i), this._last ? this._time > this.duration() && (this._time = this._duration, this._totalTime = this._totalDuration) : this._time = this._totalTime = this._duration = this._totalDuration = 0, this
                    }, _.append = function(e, t) {
                        return this.add(e, this._parseTimeOrLabel(null, t, !0, e))
                    }, _.insert = _.insertMultiple = function(e, t, i, n) {
                        return this.add(e, t || 0, i, n)
                    }, _.appendMultiple = function(e, t, i, n) {
                        return this.add(e, this._parseTimeOrLabel(null, t, !0, e), i, n)
                    }, _.addLabel = function(e, t) {
                        return this._labels[e] = this._parseTimeOrLabel(t), this
                    }, _.addPause = function(e, t, n, r) {
                        var o = i.delayedCall(0, f, n, r || this);
                        return o.vars.onComplete = o.vars.onReverseComplete = t, o.data = "isPause", this._hasPause = !0, this.add(o, e)
                    }, _.removeLabel = function(e) {
                        return delete this._labels[e], this
                    }, _.getLabelTime = function(e) {
                        return null != this._labels[e] ? this._labels[e] : -1
                    }, _._parseTimeOrLabel = function(t, i, n, r) {
                        var o, a;
                        if (r instanceof e && r.timeline === this) this.remove(r);
                        else if (r && (r instanceof Array || r.push && s(r)))
                            for (a = r.length; --a > -1;) r[a] instanceof e && r[a].timeline === this && this.remove(r[a]);
                        if (o = this.duration() > 99999999999 ? this.recent().endTime(!1) : this._duration, "string" == typeof i) return this._parseTimeOrLabel(i, n && "number" == typeof t && null == this._labels[i] ? t - o : 0, n);
                        if (i = i || 0, "string" != typeof t || !isNaN(t) && null == this._labels[t]) null == t && (t = o);
                        else {
                            if (-1 === (a = t.indexOf("="))) return null == this._labels[t] ? n ? this._labels[t] = o + i : i : this._labels[t] + i;
                            i = parseInt(t.charAt(a - 1) + "1", 10) * Number(t.substr(a + 1)), t = a > 1 ? this._parseTimeOrLabel(t.substr(0, a - 1), 0, n) : o
                        }
                        return Number(t) + i
                    }, _.seek = function(e, t) {
                        return this.totalTime("number" == typeof e ? e : this._parseTimeOrLabel(e), !1 !== t)
                    }, _.stop = function() {
                        return this.paused(!0)
                    }, _.gotoAndPlay = function(e, t) {
                        return this.play(e, t)
                    }, _.gotoAndStop = function(e, t) {
                        return this.pause(e, t)
                    }, _.render = function(e, t, i) {
                        this._gc && this._enabled(!0, !1);
                        var n, r, o, a, s, c, h, p = this._dirty ? this.totalDuration() : this._totalDuration,
                            f = this._time,
                            d = this._startTime,
                            _ = this._timeScale,
                            m = this._paused;
                        if (e >= p - 1e-7 && e >= 0) this._totalTime = this._time = p, this._reversed || this._hasPausedChild() || (r = !0, a = "onComplete", s = !!this._timeline.autoRemoveChildren, 0 === this._duration && (e <= 0 && e >= -1e-7 || this._rawPrevTime < 0 || 1e-10 === this._rawPrevTime) && this._rawPrevTime !== e && this._first && (s = !0, this._rawPrevTime > 1e-10 && (a = "onReverseComplete"))), this._rawPrevTime = this._duration || !t || e || this._rawPrevTime === e ? e : 1e-10, e = p + 1e-4;
                        else if (e < 1e-7)
                            if (this._totalTime = this._time = 0, (0 !== f || 0 === this._duration && 1e-10 !== this._rawPrevTime && (this._rawPrevTime > 0 || e < 0 && this._rawPrevTime >= 0)) && (a = "onReverseComplete", r = this._reversed), e < 0) this._active = !1, this._timeline.autoRemoveChildren && this._reversed ? (s = r = !0, a = "onReverseComplete") : this._rawPrevTime >= 0 && this._first && (s = !0), this._rawPrevTime = e;
                            else {
                                if (this._rawPrevTime = this._duration || !t || e || this._rawPrevTime === e ? e : 1e-10, 0 === e && r)
                                    for (n = this._first; n && 0 === n._startTime;) n._duration || (r = !1), n = n._next;
                                e = 0, this._initted || (s = !0)
                            }
                        else {
                            if (this._hasPause && !this._forcingPlayhead && !t) {
                                if (e >= f)
                                    for (n = this._first; n && n._startTime <= e && !c;) n._duration || "isPause" !== n.data || n.ratio || 0 === n._startTime && 0 === this._rawPrevTime || (c = n), n = n._next;
                                else
                                    for (n = this._last; n && n._startTime >= e && !c;) n._duration || "isPause" === n.data && n._rawPrevTime > 0 && (c = n), n = n._prev;
                                c && (this._time = e = c._startTime, this._totalTime = e + this._cycle * (this._totalDuration + this._repeatDelay))
                            }
                            this._totalTime = this._time = this._rawPrevTime = e
                        }
                        if (this._time !== f && this._first || i || s || c) {
                            if (this._initted || (this._initted = !0), this._active || !this._paused && this._time !== f && e > 0 && (this._active = !0), 0 === f && this.vars.onStart && (0 === this._time && this._duration || t || this._callback("onStart")), (h = this._time) >= f)
                                for (n = this._first; n && (o = n._next, h === this._time && (!this._paused || m));)(n._active || n._startTime <= h && !n._paused && !n._gc) && (c === n && this.pause(), n._reversed ? n.render((n._dirty ? n.totalDuration() : n._totalDuration) - (e - n._startTime) * n._timeScale, t, i) : n.render((e - n._startTime) * n._timeScale, t, i)), n = o;
                            else
                                for (n = this._last; n && (o = n._prev, h === this._time && (!this._paused || m));) {
                                    if (n._active || n._startTime <= f && !n._paused && !n._gc) {
                                        if (c === n) {
                                            for (c = n._prev; c && c.endTime() > this._time;) c.render(c._reversed ? c.totalDuration() - (e - c._startTime) * c._timeScale : (e - c._startTime) * c._timeScale, t, i), c = c._prev;
                                            c = null, this.pause()
                                        }
                                        n._reversed ? n.render((n._dirty ? n.totalDuration() : n._totalDuration) - (e - n._startTime) * n._timeScale, t, i) : n.render((e - n._startTime) * n._timeScale, t, i)
                                    }
                                    n = o
                                }
                            this._onUpdate && (t || (l.length && u(), this._callback("onUpdate"))), a && (this._gc || d !== this._startTime && _ === this._timeScale || (0 === this._time || p >= this.totalDuration()) && (r && (l.length && u(), this._timeline.autoRemoveChildren && this._enabled(!1, !1), this._active = !1), !t && this.vars[a] && this._callback(a)))
                        }
                    }, _._hasPausedChild = function() {
                        for (var e = this._first; e;) {
                            if (e._paused || e instanceof n && e._hasPausedChild()) return !0;
                            e = e._next
                        }
                        return !1
                    }, _.getChildren = function(e, t, n, r) {
                        r = r || -9999999999;
                        for (var o = [], a = this._first, s = 0; a;) a._startTime < r || (a instanceof i ? !1 !== t && (o[s++] = a) : (!1 !== n && (o[s++] = a), !1 !== e && (o = o.concat(a.getChildren(!0, t, n)), s = o.length))), a = a._next;
                        return o
                    }, _.getTweensOf = function(e, t) {
                        var n, r, o = this._gc,
                            a = [],
                            s = 0;
                        for (o && this._enabled(!0, !0), n = i.getTweensOf(e), r = n.length; --r > -1;)(n[r].timeline === this || t && this._contains(n[r])) && (a[s++] = n[r]);
                        return o && this._enabled(!1, !0), a
                    }, _.recent = function() {
                        return this._recent
                    }, _._contains = function(e) {
                        for (var t = e.timeline; t;) {
                            if (t === this) return !0;
                            t = t.timeline
                        }
                        return !1
                    }, _.shiftChildren = function(e, t, i) {
                        i = i || 0;
                        for (var n, r = this._first, o = this._labels; r;) r._startTime >= i && (r._startTime += e), r = r._next;
                        if (t)
                            for (n in o) o[n] >= i && (o[n] += e);
                        return this._uncache(!0)
                    }, _._kill = function(e, t) {
                        if (!e && !t) return this._enabled(!1, !1);
                        for (var i = t ? this.getTweensOf(t) : this.getChildren(!0, !0, !1), n = i.length, r = !1; --n > -1;) i[n]._kill(e, t) && (r = !0);
                        return r
                    }, _.clear = function(e) {
                        var t = this.getChildren(!1, !0, !0),
                            i = t.length;
                        for (this._time = this._totalTime = 0; --i > -1;) t[i]._enabled(!1, !1);
                        return !1 !== e && (this._labels = {}), this._uncache(!0)
                    }, _.invalidate = function() {
                        for (var t = this._first; t;) t.invalidate(), t = t._next;
                        return e.prototype.invalidate.call(this)
                    }, _._enabled = function(e, i) {
                        if (e === this._gc)
                            for (var n = this._first; n;) n._enabled(e, !0), n = n._next;
                        return t.prototype._enabled.call(this, e, i)
                    }, _.totalTime = function(t, i, n) {
                        this._forcingPlayhead = !0;
                        var r = e.prototype.totalTime.apply(this, arguments);
                        return this._forcingPlayhead = !1, r
                    }, _.duration = function(e) {
                        return arguments.length ? (0 !== this.duration() && 0 !== e && this.timeScale(this._duration / e), this) : (this._dirty && this.totalDuration(), this._duration)
                    }, _.totalDuration = function(e) {
                        if (!arguments.length) {
                            if (this._dirty) {
                                for (var t, i, n = 0, r = this._last, o = 999999999999; r;) t = r._prev, r._dirty && r.totalDuration(), r._startTime > o && this._sortChildren && !r._paused ? this.add(r, r._startTime - r._delay) : o = r._startTime, r._startTime < 0 && !r._paused && (n -= r._startTime, this._timeline.smoothChildTiming && (this._startTime += r._startTime / this._timeScale), this.shiftChildren(-r._startTime, !1, -9999999999), o = 0), i = r._startTime + r._totalDuration / r._timeScale, i > n && (n = i), r = t;
                                this._duration = this._totalDuration = n, this._dirty = !1
                            }
                            return this._totalDuration
                        }
                        return e && this.totalDuration() ? this.timeScale(this._totalDuration / e) : this
                    }, _.paused = function(t) {
                        if (!t)
                            for (var i = this._first, n = this._time; i;) i._startTime === n && "isPause" === i.data && (i._rawPrevTime = 0), i = i._next;
                        return e.prototype.paused.apply(this, arguments)
                    }, _.usesFrames = function() {
                        for (var t = this._timeline; t._timeline;) t = t._timeline;
                        return t === e._rootFramesTimeline
                    }, _.rawTime = function(e) {
                        return e && (this._paused || this._repeat && this.time() > 0 && this.totalProgress() < 1) ? this._totalTime % (this._duration + this._repeatDelay) : this._paused ? this._totalTime : (this._timeline.rawTime(e) - this._startTime) * this._timeScale
                    }, n
                }, !0), _gsScope._gsDefine("TimelineMax", ["TimelineLite", "TweenLite", "easing.Ease"], function(e, t, i) {
                    var n = function(t) {
                            e.call(this, t), this._repeat = this.vars.repeat || 0, this._repeatDelay = this.vars.repeatDelay || 0, this._cycle = 0, this._yoyo = !0 === this.vars.yoyo, this._dirty = !0
                        },
                        r = t._internals,
                        o = r.lazyTweens,
                        a = r.lazyRender,
                        s = _gsScope._gsDefine.globals,
                        l = new i(null, null, 1, 0),
                        u = n.prototype = new e;
                    return u.constructor = n, u.kill()._gc = !1, n.version = "1.20.1", u.invalidate = function() {
                        return this._yoyo = !0 === this.vars.yoyo, this._repeat = this.vars.repeat || 0, this._repeatDelay = this.vars.repeatDelay || 0, this._uncache(!0), e.prototype.invalidate.call(this)
                    }, u.addCallback = function(e, i, n, r) {
                        return this.add(t.delayedCall(0, e, n, r), i)
                    }, u.removeCallback = function(e, t) {
                        if (e)
                            if (null == t) this._kill(null, e);
                            else
                                for (var i = this.getTweensOf(e, !1), n = i.length, r = this._parseTimeOrLabel(t); --n > -1;) i[n]._startTime === r && i[n]._enabled(!1, !1);
                        return this
                    }, u.removePause = function(t) {
                        return this.removeCallback(e._internals.pauseCallback, t)
                    }, u.tweenTo = function(e, i) {
                        i = i || {};
                        var n, r, o, a = {
                                ease: l,
                                useFrames: this.usesFrames(),
                                immediateRender: !1
                            },
                            u = i.repeat && s.TweenMax || t;
                        for (r in i) a[r] = i[r];
                        return a.time = this._parseTimeOrLabel(e), n = Math.abs(Number(a.time) - this._time) / this._timeScale || .001, o = new u(this, n, a), a.onStart = function() {
                            o.target.paused(!0), o.vars.time !== o.target.time() && n === o.duration() && o.duration(Math.abs(o.vars.time - o.target.time()) / o.target._timeScale), i.onStart && i.onStart.apply(i.onStartScope || i.callbackScope || o, i.onStartParams || [])
                        }, o
                    }, u.tweenFromTo = function(e, t, i) {
                        i = i || {}, e = this._parseTimeOrLabel(e), i.startAt = {
                            onComplete: this.seek,
                            onCompleteParams: [e],
                            callbackScope: this
                        }, i.immediateRender = !1 !== i.immediateRender;
                        var n = this.tweenTo(t, i);
                        return n.duration(Math.abs(n.vars.time - e) / this._timeScale || .001)
                    }, u.render = function(e, t, i) {
                        this._gc && this._enabled(!0, !1);
                        var n, r, s, l, u, c, h, p, f = this._dirty ? this.totalDuration() : this._totalDuration,
                            d = this._duration,
                            _ = this._time,
                            m = this._totalTime,
                            g = this._startTime,
                            v = this._timeScale,
                            y = this._rawPrevTime,
                            b = this._paused,
                            x = this._cycle;
                        if (e >= f - 1e-7 && e >= 0) this._locked || (this._totalTime = f, this._cycle = this._repeat), this._reversed || this._hasPausedChild() || (r = !0, l = "onComplete", u = !!this._timeline.autoRemoveChildren, 0 === this._duration && (e <= 0 && e >= -1e-7 || y < 0 || 1e-10 === y) && y !== e && this._first && (u = !0, y > 1e-10 && (l = "onReverseComplete"))), this._rawPrevTime = this._duration || !t || e || this._rawPrevTime === e ? e : 1e-10, this._yoyo && 0 != (1 & this._cycle) ? this._time = e = 0 : (this._time = d, e = d + 1e-4);
                        else if (e < 1e-7)
                            if (this._locked || (this._totalTime = this._cycle = 0), this._time = 0, (0 !== _ || 0 === d && 1e-10 !== y && (y > 0 || e < 0 && y >= 0) && !this._locked) && (l = "onReverseComplete", r = this._reversed), e < 0) this._active = !1, this._timeline.autoRemoveChildren && this._reversed ? (u = r = !0, l = "onReverseComplete") : y >= 0 && this._first && (u = !0), this._rawPrevTime = e;
                            else {
                                if (this._rawPrevTime = d || !t || e || this._rawPrevTime === e ? e : 1e-10, 0 === e && r)
                                    for (n = this._first; n && 0 === n._startTime;) n._duration || (r = !1), n = n._next;
                                e = 0, this._initted || (u = !0)
                            }
                        else if (0 === d && y < 0 && (u = !0), this._time = this._rawPrevTime = e, this._locked || (this._totalTime = e, 0 !== this._repeat && (c = d + this._repeatDelay, this._cycle = this._totalTime / c >> 0, 0 !== this._cycle && this._cycle === this._totalTime / c && m <= e && this._cycle--, this._time = this._totalTime - this._cycle * c, this._yoyo && 0 != (1 & this._cycle) && (this._time = d - this._time), this._time > d ? (this._time = d, e = d + 1e-4) : this._time < 0 ? this._time = e = 0 : e = this._time)), this._hasPause && !this._forcingPlayhead && !t) {
                            if ((e = this._time) >= _ || this._repeat && x !== this._cycle)
                                for (n = this._first; n && n._startTime <= e && !h;) n._duration || "isPause" !== n.data || n.ratio || 0 === n._startTime && 0 === this._rawPrevTime || (h = n), n = n._next;
                            else
                                for (n = this._last; n && n._startTime >= e && !h;) n._duration || "isPause" === n.data && n._rawPrevTime > 0 && (h = n), n = n._prev;
                            h && h._startTime < d && (this._time = e = h._startTime, this._totalTime = e + this._cycle * (this._totalDuration + this._repeatDelay))
                        }
                        if (this._cycle !== x && !this._locked) {
                            var S = this._yoyo && 0 != (1 & x),
                                T = S === (this._yoyo && 0 != (1 & this._cycle)),
                                w = this._totalTime,
                                E = this._cycle,
                                P = this._rawPrevTime,
                                R = this._time;
                            if (this._totalTime = x * d, this._cycle < x ? S = !S : this._totalTime += d, this._time = _, this._rawPrevTime = 0 === d ? y - 1e-4 : y, this._cycle = x, this._locked = !0, _ = S ? 0 : d, this.render(_, t, 0 === d), t || this._gc || this.vars.onRepeat && (this._cycle = E, this._locked = !1, this._callback("onRepeat")), _ !== this._time) return;
                            if (T && (this._cycle = x, this._locked = !0, _ = S ? d + 1e-4 : -1e-4, this.render(_, !0, !1)), this._locked = !1, this._paused && !b) return;
                            this._time = R, this._totalTime = w, this._cycle = E, this._rawPrevTime = P
                        }
                        if (!(this._time !== _ && this._first || i || u || h)) return void(m !== this._totalTime && this._onUpdate && (t || this._callback("onUpdate")));
                        if (this._initted || (this._initted = !0), this._active || !this._paused && this._totalTime !== m && e > 0 && (this._active = !0), 0 === m && this.vars.onStart && (0 === this._totalTime && this._totalDuration || t || this._callback("onStart")), (p = this._time) >= _)
                            for (n = this._first; n && (s = n._next, p === this._time && (!this._paused || b));)(n._active || n._startTime <= this._time && !n._paused && !n._gc) && (h === n && this.pause(), n._reversed ? n.render((n._dirty ? n.totalDuration() : n._totalDuration) - (e - n._startTime) * n._timeScale, t, i) : n.render((e - n._startTime) * n._timeScale, t, i)), n = s;
                        else
                            for (n = this._last; n && (s = n._prev, p === this._time && (!this._paused || b));) {
                                if (n._active || n._startTime <= _ && !n._paused && !n._gc) {
                                    if (h === n) {
                                        for (h = n._prev; h && h.endTime() > this._time;) h.render(h._reversed ? h.totalDuration() - (e - h._startTime) * h._timeScale : (e - h._startTime) * h._timeScale, t, i), h = h._prev;
                                        h = null, this.pause()
                                    }
                                    n._reversed ? n.render((n._dirty ? n.totalDuration() : n._totalDuration) - (e - n._startTime) * n._timeScale, t, i) : n.render((e - n._startTime) * n._timeScale, t, i)
                                }
                                n = s
                            }
                        this._onUpdate && (t || (o.length && a(), this._callback("onUpdate"))), l && (this._locked || this._gc || g !== this._startTime && v === this._timeScale || (0 === this._time || f >= this.totalDuration()) && (r && (o.length && a(), this._timeline.autoRemoveChildren && this._enabled(!1, !1), this._active = !1), !t && this.vars[l] && this._callback(l)))
                    }, u.getActive = function(e, t, i) {
                        null == e && (e = !0), null == t && (t = !0), null == i && (i = !1);
                        var n, r, o = [],
                            a = this.getChildren(e, t, i),
                            s = 0,
                            l = a.length;
                        for (n = 0; n < l; n++) r = a[n], r.isActive() && (o[s++] = r);
                        return o
                    }, u.getLabelAfter = function(e) {
                        e || 0 !== e && (e = this._time);
                        var t, i = this.getLabelsArray(),
                            n = i.length;
                        for (t = 0; t < n; t++)
                            if (i[t].time > e) return i[t].name;
                        return null
                    }, u.getLabelBefore = function(e) {
                        null == e && (e = this._time);
                        for (var t = this.getLabelsArray(), i = t.length; --i > -1;)
                            if (t[i].time < e) return t[i].name;
                        return null
                    }, u.getLabelsArray = function() {
                        var e, t = [],
                            i = 0;
                        for (e in this._labels) t[i++] = {
                            time: this._labels[e],
                            name: e
                        };
                        return t.sort(function(e, t) {
                            return e.time - t.time
                        }), t
                    }, u.invalidate = function() {
                        return this._locked = !1, e.prototype.invalidate.call(this)
                    }, u.progress = function(e, t) {
                        return arguments.length ? this.totalTime(this.duration() * (this._yoyo && 0 != (1 & this._cycle) ? 1 - e : e) + this._cycle * (this._duration + this._repeatDelay), t) : this._time / this.duration() || 0
                    }, u.totalProgress = function(e, t) {
                        return arguments.length ? this.totalTime(this.totalDuration() * e, t) : this._totalTime / this.totalDuration() || 0
                    }, u.totalDuration = function(t) {
                        return arguments.length ? -1 !== this._repeat && t ? this.timeScale(this.totalDuration() / t) : this : (this._dirty && (e.prototype.totalDuration.call(this), this._totalDuration = -1 === this._repeat ? 999999999999 : this._duration * (this._repeat + 1) + this._repeatDelay * this._repeat), this._totalDuration)
                    }, u.time = function(e, t) {
                        return arguments.length ? (this._dirty && this.totalDuration(), e > this._duration && (e = this._duration), this._yoyo && 0 != (1 & this._cycle) ? e = this._duration - e + this._cycle * (this._duration + this._repeatDelay) : 0 !== this._repeat && (e += this._cycle * (this._duration + this._repeatDelay)), this.totalTime(e, t)) : this._time
                    }, u.repeat = function(e) {
                        return arguments.length ? (this._repeat = e, this._uncache(!0)) : this._repeat
                    }, u.repeatDelay = function(e) {
                        return arguments.length ? (this._repeatDelay = e, this._uncache(!0)) : this._repeatDelay
                    }, u.yoyo = function(e) {
                        return arguments.length ? (this._yoyo = e, this) : this._yoyo
                    }, u.currentLabel = function(e) {
                        return arguments.length ? this.seek(e, !0) : this.getLabelBefore(this._time + 1e-8)
                    }, n
                }, !0),
                function() {
                    var e = 180 / Math.PI,
                        t = [],
                        i = [],
                        n = [],
                        r = {},
                        o = _gsScope._gsDefine.globals,
                        a = function(e, t, i, n) {
                            i === n && (i = n - (n - t) / 1e6), e === t && (t = e + (i - e) / 1e6), this.a = e, this.b = t, this.c = i, this.d = n, this.da = n - e, this.ca = i - e, this.ba = t - e
                        },
                        s = function(e, t, i, n) {
                            var r = {
                                    a: e
                                },
                                o = {},
                                a = {},
                                s = {
                                    c: n
                                },
                                l = (e + t) / 2,
                                u = (t + i) / 2,
                                c = (i + n) / 2,
                                h = (l + u) / 2,
                                p = (u + c) / 2,
                                f = (p - h) / 8;
                            return r.b = l + (e - l) / 4, o.b = h + f, r.c = o.a = (r.b + o.b) / 2, o.c = a.a = (h + p) / 2, a.b = p - f, s.b = c + (n - c) / 4, a.c = s.a = (a.b + s.b) / 2, [r, o, a, s]
                        },
                        l = function(e, r, o, a, l) {
                            var u, c, h, p, f, d, _, m, g, v, y, b, x, S = e.length - 1,
                                T = 0,
                                w = e[0].a;
                            for (u = 0; u < S; u++) f = e[T], c = f.a, h = f.d, p = e[T + 1].d, l ? (y = t[u], b = i[u], x = (b + y) * r * .25 / (a ? .5 : n[u] || .5), d = h - (h - c) * (a ? .5 * r : 0 !== y ? x / y : 0), _ = h + (p - h) * (a ? .5 * r : 0 !== b ? x / b : 0), m = h - (d + ((_ - d) * (3 * y / (y + b) + .5) / 4 || 0))) : (d = h - (h - c) * r * .5, _ = h + (p - h) * r * .5, m = h - (d + _) / 2), d += m, _ += m, f.c = g = d, f.b = 0 !== u ? w : w = f.a + .6 * (f.c - f.a), f.da = h - c, f.ca = g - c, f.ba = w - c, o ? (v = s(c, w, g, h), e.splice(T, 1, v[0], v[1], v[2], v[3]), T += 4) : T++, w = _;
                            f = e[T], f.b = w, f.c = w + .4 * (f.d - w), f.da = f.d - f.a, f.ca = f.c - f.a, f.ba = w - f.a, o && (v = s(f.a, w, f.c, f.d), e.splice(T, 1, v[0], v[1], v[2], v[3]))
                        },
                        u = function(e, n, r, o) {
                            var s, l, u, c, h, p, f = [];
                            if (o)
                                for (e = [o].concat(e), l = e.length; --l > -1;) "string" == typeof(p = e[l][n]) && "=" === p.charAt(1) && (e[l][n] = o[n] + Number(p.charAt(0) + p.substr(2)));
                            if ((s = e.length - 2) < 0) return f[0] = new a(e[0][n], 0, 0, e[0][n]), f;
                            for (l = 0; l < s; l++) u = e[l][n], c = e[l + 1][n], f[l] = new a(u, 0, 0, c), r && (h = e[l + 2][n], t[l] = (t[l] || 0) + (c - u) * (c - u), i[l] = (i[l] || 0) + (h - c) * (h - c));
                            return f[l] = new a(e[l][n], 0, 0, e[l + 1][n]), f
                        },
                        c = function(e, o, a, s, c, h) {
                            var p, f, d, _, m, g, v, y, b = {},
                                x = [],
                                S = h || e[0];
                            c = "string" == typeof c ? "," + c + "," : ",x,y,z,left,top,right,bottom,marginTop,marginLeft,marginRight,marginBottom,paddingLeft,paddingTop,paddingRight,paddingBottom,backgroundPosition,backgroundPosition_y,", null == o && (o = 1);
                            for (f in e[0]) x.push(f);
                            if (e.length > 1) {
                                for (y = e[e.length - 1], v = !0, p = x.length; --p > -1;)
                                    if (f = x[p], Math.abs(S[f] - y[f]) > .05) {
                                        v = !1;
                                        break
                                    }
                                v && (e = e.concat(), h && e.unshift(h), e.push(e[1]), h = e[e.length - 3])
                            }
                            for (t.length = i.length = n.length = 0, p = x.length; --p > -1;) f = x[p], r[f] = -1 !== c.indexOf("," + f + ","), b[f] = u(e, f, r[f], h);
                            for (p = t.length; --p > -1;) t[p] = Math.sqrt(t[p]), i[p] = Math.sqrt(i[p]);
                            if (!s) {
                                for (p = x.length; --p > -1;)
                                    if (r[f])
                                        for (d = b[x[p]], g = d.length - 1, _ = 0; _ < g; _++) m = d[_ + 1].da / i[_] + d[_].da / t[_] || 0, n[_] = (n[_] || 0) + m * m;
                                for (p = n.length; --p > -1;) n[p] = Math.sqrt(n[p])
                            }
                            for (p = x.length, _ = a ? 4 : 1; --p > -1;) f = x[p], d = b[f], l(d, o, a, s, r[f]), v && (d.splice(0, _), d.splice(d.length - _, _));
                            return b
                        },
                        h = function(e, t, i) {
                            t = t || "soft";
                            var n, r, o, s, l, u, c, h, p, f, d, _ = {},
                                m = "cubic" === t ? 3 : 2,
                                g = "soft" === t,
                                v = [];
                            if (g && i && (e = [i].concat(e)), null == e || e.length < m + 1) throw "invalid Bezier data";
                            for (p in e[0]) v.push(p);
                            for (u = v.length; --u > -1;) {
                                for (p = v[u], _[p] = l = [], f = 0, h = e.length, c = 0; c < h; c++) n = null == i ? e[c][p] : "string" == typeof(d = e[c][p]) && "=" === d.charAt(1) ? i[p] + Number(d.charAt(0) + d.substr(2)) : Number(d), g && c > 1 && c < h - 1 && (l[f++] = (n + l[f - 2]) / 2), l[f++] = n;
                                for (h = f - m + 1, f = 0, c = 0; c < h; c += m) n = l[c], r = l[c + 1], o = l[c + 2], s = 2 === m ? 0 : l[c + 3], l[f++] = d = 3 === m ? new a(n, r, o, s) : new a(n, (2 * r + n) / 3, (2 * r + o) / 3, o);
                                l.length = f
                            }
                            return _
                        },
                        p = function(e, t, i) {
                            for (var n, r, o, a, s, l, u, c, h, p, f, d = 1 / i, _ = e.length; --_ > -1;)
                                for (p = e[_], o = p.a, a = p.d - o, s = p.c - o, l = p.b - o, n = r = 0, c = 1; c <= i; c++) u = d * c, h = 1 - u, n = r - (r = (u * u * a + 3 * h * (u * s + h * l)) * u), f = _ * i + c - 1, t[f] = (t[f] || 0) + n * n
                        },
                        f = function(e, t) {
                            t = t >> 0 || 6;
                            var i, n, r, o, a = [],
                                s = [],
                                l = 0,
                                u = 0,
                                c = t - 1,
                                h = [],
                                f = [];
                            for (i in e) p(e[i], a, t);
                            for (r = a.length, n = 0; n < r; n++) l += Math.sqrt(a[n]), o = n % t, f[o] = l, o === c && (u += l, o = n / t >> 0, h[o] = f, s[o] = u, l = 0, f = []);
                            return {
                                length: u,
                                lengths: s,
                                segments: h
                            }
                        },
                        d = _gsScope._gsDefine.plugin({
                            propName: "bezier",
                            priority: -1,
                            version: "1.3.8",
                            API: 2,
                            global: !0,
                            init: function(e, t, i) {
                                this._target = e, t instanceof Array && (t = {
                                    values: t
                                }), this._func = {}, this._mod = {}, this._props = [], this._timeRes = null == t.timeResolution ? 6 : parseInt(t.timeResolution, 10);
                                var n, r, o, a, s, l = t.values || [],
                                    u = {},
                                    p = l[0],
                                    d = t.autoRotate || i.vars.orientToBezier;
                                this._autoRotate = d ? d instanceof Array ? d : [
                                    ["x", "y", "rotation", !0 === d ? 0 : Number(d) || 0]
                                ] : null;
                                for (n in p) this._props.push(n);
                                for (o = this._props.length; --o > -1;) n = this._props[o], this._overwriteProps.push(n), r = this._func[n] = "function" == typeof e[n], u[n] = r ? e[n.indexOf("set") || "function" != typeof e["get" + n.substr(3)] ? n : "get" + n.substr(3)]() : parseFloat(e[n]), s || u[n] !== l[0][n] && (s = u);
                                if (this._beziers = "cubic" !== t.type && "quadratic" !== t.type && "soft" !== t.type ? c(l, isNaN(t.curviness) ? 1 : t.curviness, !1, "thruBasic" === t.type, t.correlate, s) : h(l, t.type, u), this._segCount = this._beziers[n].length, this._timeRes) {
                                    var _ = f(this._beziers, this._timeRes);
                                    this._length = _.length, this._lengths = _.lengths, this._segments = _.segments, this._l1 = this._li = this._s1 = this._si = 0, this._l2 = this._lengths[0], this._curSeg = this._segments[0], this._s2 = this._curSeg[0], this._prec = 1 / this._curSeg.length
                                }
                                if (d = this._autoRotate)
                                    for (this._initialRotations = [], d[0] instanceof Array || (this._autoRotate = d = [d]), o = d.length; --o > -1;) {
                                        for (a = 0; a < 3; a++) n = d[o][a], this._func[n] = "function" == typeof e[n] && e[n.indexOf("set") || "function" != typeof e["get" + n.substr(3)] ? n : "get" + n.substr(3)];
                                        n = d[o][2], this._initialRotations[o] = (this._func[n] ? this._func[n].call(this._target) : this._target[n]) || 0, this._overwriteProps.push(n)
                                    }
                                return this._startRatio = i.vars.runBackwards ? 1 : 0, !0
                            },
                            set: function(t) {
                                var i, n, r, o, a, s, l, u, c, h, p = this._segCount,
                                    f = this._func,
                                    d = this._target,
                                    _ = t !== this._startRatio;
                                if (this._timeRes) {
                                    if (c = this._lengths, h = this._curSeg, t *= this._length, r = this._li, t > this._l2 && r < p - 1) {
                                        for (u = p - 1; r < u && (this._l2 = c[++r]) <= t;);
                                        this._l1 = c[r - 1], this._li = r, this._curSeg = h = this._segments[r], this._s2 = h[this._s1 = this._si = 0]
                                    } else if (t < this._l1 && r > 0) {
                                        for (; r > 0 && (this._l1 = c[--r]) >= t;);
                                        0 === r && t < this._l1 ? this._l1 = 0 : r++, this._l2 = c[r], this._li = r, this._curSeg = h = this._segments[r], this._s1 = h[(this._si = h.length - 1) - 1] || 0, this._s2 = h[this._si]
                                    }
                                    if (i = r, t -= this._l1, r = this._si, t > this._s2 && r < h.length - 1) {
                                        for (u = h.length - 1; r < u && (this._s2 = h[++r]) <= t;);
                                        this._s1 = h[r - 1], this._si = r
                                    } else if (t < this._s1 && r > 0) {
                                        for (; r > 0 && (this._s1 = h[--r]) >= t;);
                                        0 === r && t < this._s1 ? this._s1 = 0 : r++, this._s2 = h[r], this._si = r
                                    }
                                    s = (r + (t - this._s1) / (this._s2 - this._s1)) * this._prec || 0
                                } else i = t < 0 ? 0 : t >= 1 ? p - 1 : p * t >> 0, s = (t - i * (1 / p)) * p;
                                for (n = 1 - s, r = this._props.length; --r > -1;) o = this._props[r], a = this._beziers[o][i], l = (s * s * a.da + 3 * n * (s * a.ca + n * a.ba)) * s + a.a, this._mod[o] && (l = this._mod[o](l, d)), f[o] ? d[o](l) : d[o] = l;
                                if (this._autoRotate) {
                                    var m, g, v, y, b, x, S, T = this._autoRotate;
                                    for (r = T.length; --r > -1;) o = T[r][2], x = T[r][3] || 0, S = !0 === T[r][4] ? 1 : e, a = this._beziers[T[r][0]], m = this._beziers[T[r][1]], a && m && (a = a[i], m = m[i], g = a.a + (a.b - a.a) * s, y = a.b + (a.c - a.b) * s, g += (y - g) * s, y += (a.c + (a.d - a.c) * s - y) * s, v = m.a + (m.b - m.a) * s, b = m.b + (m.c - m.b) * s, v += (b - v) * s, b += (m.c + (m.d - m.c) * s - b) * s, l = _ ? Math.atan2(b - v, y - g) * S + x : this._initialRotations[r], this._mod[o] && (l = this._mod[o](l, d)), f[o] ? d[o](l) : d[o] = l)
                                }
                            }
                        }),
                        _ = d.prototype;
                    d.bezierThrough = c, d.cubicToQuadratic = s, d._autoCSS = !0, d.quadraticToCubic = function(e, t, i) {
                        return new a(e, (2 * t + e) / 3, (2 * t + i) / 3, i)
                    }, d._cssRegister = function() {
                        var e = o.CSSPlugin;
                        if (e) {
                            var t = e._internals,
                                i = t._parseToProxy,
                                n = t._setPluginRatio,
                                r = t.CSSPropTween;
                            t._registerComplexSpecialProp("bezier", {
                                parser: function(e, t, o, a, s, l) {
                                    t instanceof Array && (t = {
                                        values: t
                                    }), l = new d;
                                    var u, c, h, p = t.values,
                                        f = p.length - 1,
                                        _ = [],
                                        m = {};
                                    if (f < 0) return s;
                                    for (u = 0; u <= f; u++) h = i(e, p[u], a, s, l, f !== u), _[u] = h.end;
                                    for (c in t) m[c] = t[c];
                                    return m.values = _, s = new r(e, "bezier", 0, 0, h.pt, 2), s.data = h, s.plugin = l, s.setRatio = n, 0 === m.autoRotate && (m.autoRotate = !0), !m.autoRotate || m.autoRotate instanceof Array || (u = !0 === m.autoRotate ? 0 : Number(m.autoRotate), m.autoRotate = null != h.end.left ? [
                                        ["left", "top", "rotation", u, !1]
                                    ] : null != h.end.x && [
                                        ["x", "y", "rotation", u, !1]
                                    ]), m.autoRotate && (a._transform || a._enableTransforms(!1), h.autoRotate = a._target._gsTransform, h.proxy.rotation = h.autoRotate.rotation || 0, a._overwriteProps.push("rotation")), l._onInitTween(h.proxy, m, a._tween), s
                                }
                            })
                        }
                    }, _._mod = function(e) {
                        for (var t, i = this._overwriteProps, n = i.length; --n > -1;)(t = e[i[n]]) && "function" == typeof t && (this._mod[i[n]] = t)
                    }, _._kill = function(e) {
                        var t, i, n = this._props;
                        for (t in this._beziers)
                            if (t in e)
                                for (delete this._beziers[t], delete this._func[t], i = n.length; --i > -1;) n[i] === t && n.splice(i, 1);
                        if (n = this._autoRotate)
                            for (i = n.length; --i > -1;) e[n[i][2]] && n.splice(i, 1);
                        return this._super._kill.call(this, e)
                    }
                }(), _gsScope._gsDefine("plugins.CSSPlugin", ["plugins.TweenPlugin", "TweenLite"], function(e, t) {
                    var i, n, r, o, a = function() {
                            e.call(this, "css"), this._overwriteProps.length = 0, this.setRatio = a.prototype.setRatio
                        },
                        s = _gsScope._gsDefine.globals,
                        l = {},
                        u = a.prototype = new e("css");
                    u.constructor = a, a.version = "1.20.0", a.API = 2, a.defaultTransformPerspective = 0, a.defaultSkewType = "compensated", a.defaultSmoothOrigin = !0, u = "px", a.suffixMap = {
                        top: u,
                        right: u,
                        bottom: u,
                        left: u,
                        width: u,
                        height: u,
                        fontSize: u,
                        padding: u,
                        margin: u,
                        perspective: u,
                        lineHeight: ""
                    };
                    var c, h, p, f, d, _, m, g, v = /(?:\-|\.|\b)(\d|\.|e\-)+/g,
                        y = /(?:\d|\-\d|\.\d|\-\.\d|\+=\d|\-=\d|\+=.\d|\-=\.\d)+/g,
                        b = /(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b)/gi,
                        x = /(?![+-]?\d*\.?\d+|[+-]|e[+-]\d+)[^0-9]/g,
                        S = /(?:\d|\-|\+|=|#|\.)*/g,
                        T = /opacity *= *([^)]*)/i,
                        w = /opacity:([^;]*)/i,
                        E = /alpha\(opacity *=.+?\)/i,
                        P = /^(rgb|hsl)/,
                        R = /([A-Z])/g,
                        O = /-([a-z])/gi,
                        A = /(^(?:url\(\"|url\())|(?:(\"\))$|\)$)/gi,
                        I = function(e, t) {
                            return t.toUpperCase()
                        },
                        C = /(?:Left|Right|Width)/i,
                        M = /(M11|M12|M21|M22)=[\d\-\.e]+/gi,
                        D = /progid\:DXImageTransform\.Microsoft\.Matrix\(.+?\)/i,
                        N = /,(?=[^\)]*(?:\(|$))/gi,
                        L = /[\s,\(]/i,
                        k = Math.PI / 180,
                        F = 180 / Math.PI,
                        B = {},
                        G = {
                            style: {}
                        },
                        U = _gsScope.document || {
                            createElement: function() {
                                return G
                            }
                        },
                        j = function(e, t) {
                            return U.createElementNS ? U.createElementNS(t || "http://www.w3.org/1999/xhtml", e) : U.createElement(e)
                        },
                        W = j("div"),
                        H = j("img"),
                        X = a._internals = {
                            _specialProps: l
                        },
                        z = (_gsScope.navigator || {}).userAgent || "",
                        Y = function() {
                            var e = z.indexOf("Android"),
                                t = j("a");
                            return p = -1 !== z.indexOf("Safari") && -1 === z.indexOf("Chrome") && (-1 === e || parseFloat(z.substr(e + 8, 2)) > 3), d = p && parseFloat(z.substr(z.indexOf("Version/") + 8, 2)) < 6, f = -1 !== z.indexOf("Firefox"), (/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(z) || /Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(z)) && (_ = parseFloat(RegExp.$1)), !!t && (t.style.cssText = "top:1px;opacity:.55;", /^0.55/.test(t.style.opacity))
                        }(),
                        V = function(e) {
                            return T.test("string" == typeof e ? e : (e.currentStyle ? e.currentStyle.filter : e.style.filter) || "") ? parseFloat(RegExp.$1) / 100 : 1
                        },
                        q = function(e) {
                            _gsScope.console
                        },
                        J = "",
                        K = "",
                        $ = function(e, t) {
                            t = t || W;
                            var i, n, r = t.style;
                            if (void 0 !== r[e]) return e;
                            for (e = e.charAt(0).toUpperCase() + e.substr(1), i = ["O", "Moz", "ms", "Ms", "Webkit"], n = 5; --n > -1 && void 0 === r[i[n] + e];);
                            return n >= 0 ? (K = 3 === n ? "ms" : i[n], J = "-" + K.toLowerCase() + "-", K + e) : null
                        },
                        Q = U.defaultView ? U.defaultView.getComputedStyle : function() {},
                        Z = a.getStyle = function(e, t, i, n, r) {
                            var o;
                            return Y || "opacity" !== t ? (!n && e.style[t] ? o = e.style[t] : (i = i || Q(e)) ? o = i[t] || i.getPropertyValue(t) || i.getPropertyValue(t.replace(R, "-$1").toLowerCase()) : e.currentStyle && (o = e.currentStyle[t]), null == r || o && "none" !== o && "auto" !== o && "auto auto" !== o ? o : r) : V(e)
                        },
                        ee = X.convertToPixels = function(e, i, n, r, o) {
                            if ("px" === r || !r && "lineHeight" !== i) return n;
                            if ("auto" === r || !n) return 0;
                            var s, l, u, c = C.test(i),
                                h = e,
                                p = W.style,
                                f = n < 0,
                                d = 1 === n;
                            if (f && (n = -n), d && (n *= 100), "lineHeight" !== i || r)
                                if ("%" === r && -1 !== i.indexOf("border")) s = n / 100 * (c ? e.clientWidth : e.clientHeight);
                                else {
                                    if (p.cssText = "border:0 solid red;position:" + Z(e, "position") + ";line-height:0;", "%" !== r && h.appendChild && "v" !== r.charAt(0) && "rem" !== r) p[c ? "borderLeftWidth" : "borderTopWidth"] = n + r;
                                    else {
                                        if (h = e.parentNode || U.body, -1 !== Z(h, "display").indexOf("flex") && (p.position = "absolute"), l = h._gsCache, u = t.ticker.frame, l && c && l.time === u) return l.width * n / 100;
                                        p[c ? "width" : "height"] = n + r
                                    }
                                    h.appendChild(W), s = parseFloat(W[c ? "offsetWidth" : "offsetHeight"]), h.removeChild(W), c && "%" === r && !1 !== a.cacheWidths && (l = h._gsCache = h._gsCache || {}, l.time = u, l.width = s / n * 100), 0 !== s || o || (s = ee(e, i, n, r, !0))
                                }
                            else l = Q(e).lineHeight, e.style.lineHeight = n, s = parseFloat(Q(e).lineHeight), e.style.lineHeight = l;
                            return d && (s /= 100), f ? -s : s
                        },
                        te = X.calculateOffset = function(e, t, i) {
                            if ("absolute" !== Z(e, "position", i)) return 0;
                            var n = "left" === t ? "Left" : "Top",
                                r = Z(e, "margin" + n, i);
                            return e["offset" + n] - (ee(e, t, parseFloat(r), r.replace(S, "")) || 0)
                        },
                        ie = function(e, t) {
                            var i, n, r, o = {};
                            if (t = t || Q(e, null))
                                if (i = t.length)
                                    for (; --i > -1;) r = t[i], -1 !== r.indexOf("-transform") && Ae !== r || (o[r.replace(O, I)] = t.getPropertyValue(r));
                                else
                                    for (i in t) - 1 !== i.indexOf("Transform") && Oe !== i || (o[i] = t[i]);
                            else if (t = e.currentStyle || e.style)
                                for (i in t) "string" == typeof i && void 0 === o[i] && (o[i.replace(O, I)] = t[i]);
                            return Y || (o.opacity = V(e)), n = He(e, t, !1), o.rotation = n.rotation, o.skewX = n.skewX, o.scaleX = n.scaleX, o.scaleY = n.scaleY, o.x = n.x, o.y = n.y, Ce && (o.z = n.z, o.rotationX = n.rotationX, o.rotationY = n.rotationY, o.scaleZ = n.scaleZ), o.filters && delete o.filters, o
                        },
                        ne = function(e, t, i, n, r) {
                            var o, a, s, l = {},
                                u = e.style;
                            for (a in i) "cssText" !== a && "length" !== a && isNaN(a) && (t[a] !== (o = i[a]) || r && r[a]) && -1 === a.indexOf("Origin") && ("number" != typeof o && "string" != typeof o || (l[a] = "auto" !== o || "left" !== a && "top" !== a ? "" !== o && "auto" !== o && "none" !== o || "string" != typeof t[a] || "" === t[a].replace(x, "") ? o : 0 : te(e, a), void 0 !== u[a] && (s = new ve(u, a, u[a], s))));
                            if (n)
                                for (a in n) "className" !== a && (l[a] = n[a]);
                            return {
                                difs: l,
                                firstMPT: s
                            }
                        },
                        re = {
                            width: ["Left", "Right"],
                            height: ["Top", "Bottom"]
                        },
                        oe = ["marginLeft", "marginRight", "marginTop", "marginBottom"],
                        ae = function(e, t, i) {
                            if ("svg" === (e.nodeName + "").toLowerCase()) return (i || Q(e))[t] || 0;
                            if (e.getCTM && Ue(e)) return e.getBBox()[t] || 0;
                            var n = parseFloat("width" === t ? e.offsetWidth : e.offsetHeight),
                                r = re[t],
                                o = r.length;
                            for (i = i || Q(e, null); --o > -1;) n -= parseFloat(Z(e, "padding" + r[o], i, !0)) || 0, n -= parseFloat(Z(e, "border" + r[o] + "Width", i, !0)) || 0;
                            return n
                        },
                        se = function(e, t) {
                            if ("contain" === e || "auto" === e || "auto auto" === e) return e + " ";
                            null != e && "" !== e || (e = "0 0");
                            var i, n = e.split(" "),
                                r = -1 !== e.indexOf("left") ? "0%" : -1 !== e.indexOf("right") ? "100%" : n[0],
                                o = -1 !== e.indexOf("top") ? "0%" : -1 !== e.indexOf("bottom") ? "100%" : n[1];
                            if (n.length > 3 && !t) {
                                for (n = e.split(", ").join(",").split(","), e = [], i = 0; i < n.length; i++) e.push(se(n[i]));
                                return e.join(",")
                            }
                            return null == o ? o = "center" === r ? "50%" : "0" : "center" === o && (o = "50%"), ("center" === r || isNaN(parseFloat(r)) && -1 === (r + "").indexOf("=")) && (r = "50%"), e = r + " " + o + (n.length > 2 ? " " + n[2] : ""), t && (t.oxp = -1 !== r.indexOf("%"), t.oyp = -1 !== o.indexOf("%"), t.oxr = "=" === r.charAt(1), t.oyr = "=" === o.charAt(1), t.ox = parseFloat(r.replace(x, "")), t.oy = parseFloat(o.replace(x, "")), t.v = e), t || e
                        },
                        le = function(e, t) {
                            return "function" == typeof e && (e = e(g, m)), "string" == typeof e && "=" === e.charAt(1) ? parseInt(e.charAt(0) + "1", 10) * parseFloat(e.substr(2)) : parseFloat(e) - parseFloat(t) || 0
                        },
                        ue = function(e, t) {
                            return "function" == typeof e && (e = e(g, m)), null == e ? t : "string" == typeof e && "=" === e.charAt(1) ? parseInt(e.charAt(0) + "1", 10) * parseFloat(e.substr(2)) + t : parseFloat(e) || 0
                        },
                        ce = function(e, t, i, n) {
                            var r, o, a, s, l;
                            return "function" == typeof e && (e = e(g, m)), null == e ? s = t : "number" == typeof e ? s = e : (r = 360, o = e.split("_"), l = "=" === e.charAt(1), a = (l ? parseInt(e.charAt(0) + "1", 10) * parseFloat(o[0].substr(2)) : parseFloat(o[0])) * (-1 === e.indexOf("rad") ? 1 : F) - (l ? 0 : t), o.length && (n && (n[i] = t + a), -1 !== e.indexOf("short") && (a %= r) !== a % (r / 2) && (a = a < 0 ? a + r : a - r), -1 !== e.indexOf("_cw") && a < 0 ? a = (a + 9999999999 * r) % r - (a / r | 0) * r : -1 !== e.indexOf("ccw") && a > 0 && (a = (a - 9999999999 * r) % r - (a / r | 0) * r)), s = t + a), s < 1e-6 && s > -1e-6 && (s = 0), s
                        },
                        he = {
                            aqua: [0, 255, 255],
                            lime: [0, 255, 0],
                            silver: [192, 192, 192],
                            black: [0, 0, 0],
                            maroon: [128, 0, 0],
                            teal: [0, 128, 128],
                            blue: [0, 0, 255],
                            navy: [0, 0, 128],
                            white: [255, 255, 255],
                            fuchsia: [255, 0, 255],
                            olive: [128, 128, 0],
                            yellow: [255, 255, 0],
                            orange: [255, 165, 0],
                            gray: [128, 128, 128],
                            purple: [128, 0, 128],
                            green: [0, 128, 0],
                            red: [255, 0, 0],
                            pink: [255, 192, 203],
                            cyan: [0, 255, 255],
                            transparent: [255, 255, 255, 0]
                        },
                        pe = function(e, t, i) {
                            return e = e < 0 ? e + 1 : e > 1 ? e - 1 : e, 255 * (6 * e < 1 ? t + (i - t) * e * 6 : e < .5 ? i : 3 * e < 2 ? t + (i - t) * (2 / 3 - e) * 6 : t) + .5 | 0
                        },
                        fe = a.parseColor = function(e, t) {
                            var i, n, r, o, a, s, l, u, c, h, p;
                            if (e)
                                if ("number" == typeof e) i = [e >> 16, e >> 8 & 255, 255 & e];
                                else {
                                    if ("," === e.charAt(e.length - 1) && (e = e.substr(0, e.length - 1)), he[e]) i = he[e];
                                    else if ("#" === e.charAt(0)) 4 === e.length && (n = e.charAt(1), r = e.charAt(2), o = e.charAt(3), e = "#" + n + n + r + r + o + o), e = parseInt(e.substr(1), 16), i = [e >> 16, e >> 8 & 255, 255 & e];
                                    else if ("hsl" === e.substr(0, 3))
                                        if (i = p = e.match(v), t) {
                                            if (-1 !== e.indexOf("=")) return e.match(y)
                                        } else a = Number(i[0]) % 360 / 360, s = Number(i[1]) / 100, l = Number(i[2]) / 100, r = l <= .5 ? l * (s + 1) : l + s - l * s, n = 2 * l - r, i.length > 3 && (i[3] = Number(e[3])), i[0] = pe(a + 1 / 3, n, r), i[1] = pe(a, n, r), i[2] = pe(a - 1 / 3, n, r);
                                    else i = e.match(v) || he.transparent;
                                    i[0] = Number(i[0]), i[1] = Number(i[1]), i[2] = Number(i[2]), i.length > 3 && (i[3] = Number(i[3]))
                                }
                            else i = he.black;
                            return t && !p && (n = i[0] / 255, r = i[1] / 255, o = i[2] / 255, u = Math.max(n, r, o), c = Math.min(n, r, o), l = (u + c) / 2, u === c ? a = s = 0 : (h = u - c, s = l > .5 ? h / (2 - u - c) : h / (u + c), a = u === n ? (r - o) / h + (r < o ? 6 : 0) : u === r ? (o - n) / h + 2 : (n - r) / h + 4, a *= 60), i[0] = a + .5 | 0, i[1] = 100 * s + .5 | 0, i[2] = 100 * l + .5 | 0), i
                        },
                        de = function(e, t) {
                            var i, n, r, o = e.match(_e) || [],
                                a = 0,
                                s = "";
                            if (!o.length) return e;
                            for (i = 0; i < o.length; i++) n = o[i], r = e.substr(a, e.indexOf(n, a) - a), a += r.length + n.length, n = fe(n, t), 3 === n.length && n.push(1), s += r + (t ? "hsla(" + n[0] + "," + n[1] + "%," + n[2] + "%," + n[3] : "rgba(" + n.join(",")) + ")";
                            return s + e.substr(a)
                        },
                        _e = "(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#(?:[0-9a-f]{3}){1,2}\\b";
                    for (u in he) _e += "|" + u + "\\b";
                    _e = new RegExp(_e + ")", "gi"), a.colorStringFilter = function(e) {
                        var t, i = e[0] + " " + e[1];
                        _e.test(i) && (t = -1 !== i.indexOf("hsl(") || -1 !== i.indexOf("hsla("), e[0] = de(e[0], t), e[1] = de(e[1], t)), _e.lastIndex = 0
                    }, t.defaultStringFilter || (t.defaultStringFilter = a.colorStringFilter);
                    var me = function(e, t, i, n) {
                            if (null == e) return function(e) {
                                return e
                            };
                            var r, o = t ? (e.match(_e) || [""])[0] : "",
                                a = e.split(o).join("").match(b) || [],
                                s = e.substr(0, e.indexOf(a[0])),
                                l = ")" === e.charAt(e.length - 1) ? ")" : "",
                                u = -1 !== e.indexOf(" ") ? " " : ",",
                                c = a.length,
                                h = c > 0 ? a[0].replace(v, "") : "";
                            return c ? r = t ? function(e) {
                                var t, p, f, d;
                                if ("number" == typeof e) e += h;
                                else if (n && N.test(e)) {
                                    for (d = e.replace(N, "|").split("|"), f = 0; f < d.length; f++) d[f] = r(d[f]);
                                    return d.join(",")
                                }
                                if (t = (e.match(_e) || [o])[0], p = e.split(t).join("").match(b) || [], f = p.length, c > f--)
                                    for (; ++f < c;) p[f] = i ? p[(f - 1) / 2 | 0] : a[f];
                                return s + p.join(u) + u + t + l + (-1 !== e.indexOf("inset") ? " inset" : "")
                            } : function(e) {
                                var t, o, p;
                                if ("number" == typeof e) e += h;
                                else if (n && N.test(e)) {
                                    for (o = e.replace(N, "|").split("|"), p = 0; p < o.length; p++) o[p] = r(o[p]);
                                    return o.join(",")
                                }
                                if (t = e.match(b) || [], p = t.length, c > p--)
                                    for (; ++p < c;) t[p] = i ? t[(p - 1) / 2 | 0] : a[p];
                                return s + t.join(u) + l
                            } : function(e) {
                                return e
                            }
                        },
                        ge = function(e) {
                            return e = e.split(","),
                                function(t, i, n, r, o, a, s) {
                                    var l, u = (i + "").split(" ");
                                    for (s = {}, l = 0; l < 4; l++) s[e[l]] = u[l] = u[l] || u[(l - 1) / 2 >> 0];
                                    return r.parse(t, s, o, a)
                                }
                        },
                        ve = (X._setPluginRatio = function(e) {
                            this.plugin.setRatio(e);
                            for (var t, i, n, r, o, a = this.data, s = a.proxy, l = a.firstMPT; l;) t = s[l.v], l.r ? t = Math.round(t) : t < 1e-6 && t > -1e-6 && (t = 0), l.t[l.p] = t, l = l._next;
                            if (a.autoRotate && (a.autoRotate.rotation = a.mod ? a.mod(s.rotation, this.t) : s.rotation), 1 === e || 0 === e)
                                for (l = a.firstMPT,
                                    o = 1 === e ? "e" : "b"; l;) {
                                    if (i = l.t, i.type) {
                                        if (1 === i.type) {
                                            for (r = i.xs0 + i.s + i.xs1, n = 1; n < i.l; n++) r += i["xn" + n] + i["xs" + (n + 1)];
                                            i[o] = r
                                        }
                                    } else i[o] = i.s + i.xs0;
                                    l = l._next
                                }
                        }, function(e, t, i, n, r) {
                            this.t = e, this.p = t, this.v = i, this.r = r, n && (n._prev = this, this._next = n)
                        }),
                        ye = (X._parseToProxy = function(e, t, i, n, r, o) {
                            var a, s, l, u, c, h = n,
                                p = {},
                                f = {},
                                d = i._transform,
                                _ = B;
                            for (i._transform = null, B = t, n = c = i.parse(e, t, n, r), B = _, o && (i._transform = d, h && (h._prev = null, h._prev && (h._prev._next = null))); n && n !== h;) {
                                if (n.type <= 1 && (s = n.p, f[s] = n.s + n.c, p[s] = n.s, o || (u = new ve(n, "s", s, u, n.r), n.c = 0), 1 === n.type))
                                    for (a = n.l; --a > 0;) l = "xn" + a, s = n.p + "_" + l, f[s] = n.data[l], p[s] = n[l], o || (u = new ve(n, l, s, u, n.rxp[l]));
                                n = n._next
                            }
                            return {
                                proxy: p,
                                end: f,
                                firstMPT: u,
                                pt: c
                            }
                        }, X.CSSPropTween = function(e, t, n, r, a, s, l, u, c, h, p) {
                            this.t = e, this.p = t, this.s = n, this.c = r, this.n = l || t, e instanceof ye || o.push(this.n), this.r = u, this.type = s || 0, c && (this.pr = c, i = !0), this.b = void 0 === h ? n : h, this.e = void 0 === p ? n + r : p, a && (this._next = a, a._prev = this)
                        }),
                        be = function(e, t, i, n, r, o) {
                            var a = new ye(e, t, i, n - i, r, -1, o);
                            return a.b = i, a.e = a.xs0 = n, a
                        },
                        xe = a.parseComplex = function(e, t, i, n, r, o, s, l, u, h) {
                            i = i || o || "", "function" == typeof n && (n = n(g, m)), s = new ye(e, t, 0, 0, s, h ? 2 : 1, null, !1, l, i, n), n += "", r && _e.test(n + i) && (n = [i, n], a.colorStringFilter(n), i = n[0], n = n[1]);
                            var p, f, d, _, b, x, S, T, w, E, P, R, O, A = i.split(", ").join(",").split(" "),
                                I = n.split(", ").join(",").split(" "),
                                C = A.length,
                                M = !1 !== c;
                            for (-1 === n.indexOf(",") && -1 === i.indexOf(",") || (A = A.join(" ").replace(N, ", ").split(" "), I = I.join(" ").replace(N, ", ").split(" "), C = A.length), C !== I.length && (A = (o || "").split(" "), C = A.length), s.plugin = u, s.setRatio = h, _e.lastIndex = 0, p = 0; p < C; p++)
                                if (_ = A[p], b = I[p], (T = parseFloat(_)) || 0 === T) s.appendXtra("", T, le(b, T), b.replace(y, ""), M && -1 !== b.indexOf("px"), !0);
                                else if (r && _e.test(_)) R = b.indexOf(")") + 1, R = ")" + (R ? b.substr(R) : ""), O = -1 !== b.indexOf("hsl") && Y, E = b, _ = fe(_, O), b = fe(b, O), w = _.length + b.length > 6, w && !Y && 0 === b[3] ? (s["xs" + s.l] += s.l ? " transparent" : "transparent", s.e = s.e.split(I[p]).join("transparent")) : (Y || (w = !1), O ? s.appendXtra(E.substr(0, E.indexOf("hsl")) + (w ? "hsla(" : "hsl("), _[0], le(b[0], _[0]), ",", !1, !0).appendXtra("", _[1], le(b[1], _[1]), "%,", !1).appendXtra("", _[2], le(b[2], _[2]), w ? "%," : "%" + R, !1) : s.appendXtra(E.substr(0, E.indexOf("rgb")) + (w ? "rgba(" : "rgb("), _[0], b[0] - _[0], ",", !0, !0).appendXtra("", _[1], b[1] - _[1], ",", !0).appendXtra("", _[2], b[2] - _[2], w ? "," : R, !0), w && (_ = _.length < 4 ? 1 : _[3], s.appendXtra("", _, (b.length < 4 ? 1 : b[3]) - _, R, !1))), _e.lastIndex = 0;
                            else if (x = _.match(v)) {
                                if (!(S = b.match(y)) || S.length !== x.length) return s;
                                for (d = 0, f = 0; f < x.length; f++) P = x[f], E = _.indexOf(P, d), s.appendXtra(_.substr(d, E - d), Number(P), le(S[f], P), "", M && "px" === _.substr(E + P.length, 2), 0 === f), d = E + P.length;
                                s["xs" + s.l] += _.substr(d)
                            } else s["xs" + s.l] += s.l || s["xs" + s.l] ? " " + b : b;
                            if (-1 !== n.indexOf("=") && s.data) {
                                for (R = s.xs0 + s.data.s, p = 1; p < s.l; p++) R += s["xs" + p] + s.data["xn" + p];
                                s.e = R + s["xs" + p]
                            }
                            return s.l || (s.type = -1, s.xs0 = s.e), s.xfirst || s
                        },
                        Se = 9;
                    for (u = ye.prototype, u.l = u.pr = 0; --Se > 0;) u["xn" + Se] = 0, u["xs" + Se] = "";
                    u.xs0 = "", u._next = u._prev = u.xfirst = u.data = u.plugin = u.setRatio = u.rxp = null, u.appendXtra = function(e, t, i, n, r, o) {
                        var a = this,
                            s = a.l;
                        return a["xs" + s] += o && (s || a["xs" + s]) ? " " + e : e || "", i || 0 === s || a.plugin ? (a.l++, a.type = a.setRatio ? 2 : 1, a["xs" + a.l] = n || "", s > 0 ? (a.data["xn" + s] = t + i, a.rxp["xn" + s] = r, a["xn" + s] = t, a.plugin || (a.xfirst = new ye(a, "xn" + s, t, i, a.xfirst || a, 0, a.n, r, a.pr), a.xfirst.xs0 = 0), a) : (a.data = {
                            s: t + i
                        }, a.rxp = {}, a.s = t, a.c = i, a.r = r, a)) : (a["xs" + s] += t + (n || ""), a)
                    };
                    var Te = function(e, t) {
                            t = t || {}, this.p = t.prefix ? $(e) || e : e, l[e] = l[this.p] = this, this.format = t.formatter || me(t.defaultValue, t.color, t.collapsible, t.multi), t.parser && (this.parse = t.parser), this.clrs = t.color, this.multi = t.multi, this.keyword = t.keyword, this.dflt = t.defaultValue, this.pr = t.priority || 0
                        },
                        we = X._registerComplexSpecialProp = function(e, t, i) {
                            "object" != typeof t && (t = {
                                parser: i
                            });
                            var n, r = e.split(","),
                                o = t.defaultValue;
                            for (i = i || [o], n = 0; n < r.length; n++) t.prefix = 0 === n && t.prefix, t.defaultValue = i[n] || o, new Te(r[n], t)
                        },
                        Ee = X._registerPluginProp = function(e) {
                            if (!l[e]) {
                                var t = e.charAt(0).toUpperCase() + e.substr(1) + "Plugin";
                                we(e, {
                                    parser: function(e, i, n, r, o, a, u) {
                                        var c = s.com.greensock.plugins[t];
                                        return c ? (c._cssRegister(), l[n].parse(e, i, n, r, o, a, u)) : (q(), o)
                                    }
                                })
                            }
                        };
                    u = Te.prototype, u.parseComplex = function(e, t, i, n, r, o) {
                        var a, s, l, u, c, h, p = this.keyword;
                        if (this.multi && (N.test(i) || N.test(t) ? (s = t.replace(N, "|").split("|"), l = i.replace(N, "|").split("|")) : p && (s = [t], l = [i])), l) {
                            for (u = l.length > s.length ? l.length : s.length, a = 0; a < u; a++) t = s[a] = s[a] || this.dflt, i = l[a] = l[a] || this.dflt, p && (c = t.indexOf(p), h = i.indexOf(p), c !== h && (-1 === h ? s[a] = s[a].split(p).join("") : -1 === c && (s[a] += " " + p)));
                            t = s.join(", "), i = l.join(", ")
                        }
                        return xe(e, this.p, t, i, this.clrs, this.dflt, n, this.pr, r, o)
                    }, u.parse = function(e, t, i, n, o, a, s) {
                        return this.parseComplex(e.style, this.format(Z(e, this.p, r, !1, this.dflt)), this.format(t), o, a)
                    }, a.registerSpecialProp = function(e, t, i) {
                        we(e, {
                            parser: function(e, n, r, o, a, s, l) {
                                var u = new ye(e, r, 0, 0, a, 2, r, !1, i);
                                return u.plugin = s, u.setRatio = t(e, n, o._tween, r), u
                            },
                            priority: i
                        })
                    }, a.useSVGTransformAttr = !0;
                    var Pe, Re = "scaleX,scaleY,scaleZ,x,y,z,skewX,skewY,rotation,rotationX,rotationY,perspective,xPercent,yPercent".split(","),
                        Oe = $("transform"),
                        Ae = J + "transform",
                        Ie = $("transformOrigin"),
                        Ce = null !== $("perspective"),
                        Me = X.Transform = function() {
                            this.perspective = parseFloat(a.defaultTransformPerspective) || 0, this.force3D = !(!1 === a.defaultForce3D || !Ce) && (a.defaultForce3D || "auto")
                        },
                        De = _gsScope.SVGElement,
                        Ne = function(e, t, i) {
                            var n, r = U.createElementNS("http://www.w3.org/2000/svg", e),
                                o = /([a-z])([A-Z])/g;
                            for (n in i) r.setAttributeNS(null, n.replace(o, "$1-$2").toLowerCase(), i[n]);
                            return t.appendChild(r), r
                        },
                        Le = U.documentElement || {},
                        ke = function() {
                            var e, t, i, n = _ || /Android/i.test(z) && !_gsScope.chrome;
                            return U.createElementNS && !n && (e = Ne("svg", Le), t = Ne("rect", e, {
                                width: 100,
                                height: 50,
                                x: 100
                            }), i = t.getBoundingClientRect().width, t.style[Ie] = "50% 50%", t.style[Oe] = "scaleX(0.5)", n = i === t.getBoundingClientRect().width && !(f && Ce), Le.removeChild(e)), n
                        }(),
                        Fe = function(e, t, i, n, r, o) {
                            var s, l, u, c, h, p, f, d, _, m, g, v, y, b, x = e._gsTransform,
                                S = We(e, !0);
                            x && (y = x.xOrigin, b = x.yOrigin), (!n || (s = n.split(" ")).length < 2) && (f = e.getBBox(), 0 === f.x && 0 === f.y && f.width + f.height === 0 && (f = {
                                x: parseFloat(e.hasAttribute("x") ? e.getAttribute("x") : e.hasAttribute("cx") ? e.getAttribute("cx") : 0) || 0,
                                y: parseFloat(e.hasAttribute("y") ? e.getAttribute("y") : e.hasAttribute("cy") ? e.getAttribute("cy") : 0) || 0,
                                width: 0,
                                height: 0
                            }), t = se(t).split(" "), s = [(-1 !== t[0].indexOf("%") ? parseFloat(t[0]) / 100 * f.width : parseFloat(t[0])) + f.x, (-1 !== t[1].indexOf("%") ? parseFloat(t[1]) / 100 * f.height : parseFloat(t[1])) + f.y]), i.xOrigin = c = parseFloat(s[0]), i.yOrigin = h = parseFloat(s[1]), n && S !== je && (p = S[0], f = S[1], d = S[2], _ = S[3], m = S[4], g = S[5], (v = p * _ - f * d) && (l = c * (_ / v) + h * (-d / v) + (d * g - _ * m) / v, u = c * (-f / v) + h * (p / v) - (p * g - f * m) / v, c = i.xOrigin = s[0] = l, h = i.yOrigin = s[1] = u)), x && (o && (i.xOffset = x.xOffset, i.yOffset = x.yOffset, x = i), r || !1 !== r && !1 !== a.defaultSmoothOrigin ? (l = c - y, u = h - b, x.xOffset += l * S[0] + u * S[2] - l, x.yOffset += l * S[1] + u * S[3] - u) : x.xOffset = x.yOffset = 0), o || e.setAttribute("data-svg-origin", s.join(" "))
                        },
                        Be = function(e) {
                            var t, i = j("svg", this.ownerSVGElement.getAttribute("xmlns") || "http://www.w3.org/2000/svg"),
                                n = this.parentNode,
                                r = this.nextSibling,
                                o = this.style.cssText;
                            if (Le.appendChild(i), i.appendChild(this), this.style.display = "block", e) try {
                                t = this.getBBox(), this._originalGetBBox = this.getBBox, this.getBBox = Be
                            } catch (e) {} else this._originalGetBBox && (t = this._originalGetBBox());
                            return r ? n.insertBefore(this, r) : n.appendChild(this), Le.removeChild(i), this.style.cssText = o, t
                        },
                        Ge = function(e) {
                            try {
                                return e.getBBox()
                            } catch (t) {
                                return Be.call(e, !0)
                            }
                        },
                        Ue = function(e) {
                            return !(!(De && e.getCTM && Ge(e)) || e.parentNode && !e.ownerSVGElement)
                        },
                        je = [1, 0, 0, 1, 0, 0],
                        We = function(e, t) {
                            var i, n, r, o, a, s, l = e._gsTransform || new Me,
                                u = e.style;
                            if (Oe ? n = Z(e, Ae, null, !0) : e.currentStyle && (n = e.currentStyle.filter.match(M), n = n && 4 === n.length ? [n[0].substr(4), Number(n[2].substr(4)), Number(n[1].substr(4)), n[3].substr(4), l.x || 0, l.y || 0].join(",") : ""), i = !n || "none" === n || "matrix(1, 0, 0, 1, 0, 0)" === n, !Oe || !(s = "none" === Q(e).display) && e.parentNode || (s && (o = u.display, u.display = "block"), e.parentNode || (a = 1, Le.appendChild(e)), n = Z(e, Ae, null, !0), i = !n || "none" === n || "matrix(1, 0, 0, 1, 0, 0)" === n, o ? u.display = o : s && Ve(u, "display"), a && Le.removeChild(e)), (l.svg || e.getCTM && Ue(e)) && (i && -1 !== (u[Oe] + "").indexOf("matrix") && (n = u[Oe], i = 0), r = e.getAttribute("transform"), i && r && (-1 !== r.indexOf("matrix") ? (n = r, i = 0) : -1 !== r.indexOf("translate") && (n = "matrix(1,0,0,1," + r.match(/(?:\-|\b)[\d\-\.e]+\b/gi).join(",") + ")", i = 0))), i) return je;
                            for (r = (n || "").match(v) || [], Se = r.length; --Se > -1;) o = Number(r[Se]), r[Se] = (a = o - (o |= 0)) ? (1e5 * a + (a < 0 ? -.5 : .5) | 0) / 1e5 + o : o;
                            return t && r.length > 6 ? [r[0], r[1], r[4], r[5], r[12], r[13]] : r
                        },
                        He = X.getTransform = function(e, i, n, r) {
                            if (e._gsTransform && n && !r) return e._gsTransform;
                            var o, s, l, u, c, h, p = n ? e._gsTransform || new Me : new Me,
                                f = p.scaleX < 0,
                                d = Ce ? parseFloat(Z(e, Ie, i, !1, "0 0 0").split(" ")[2]) || p.zOrigin || 0 : 0,
                                _ = parseFloat(a.defaultTransformPerspective) || 0;
                            if (p.svg = !(!e.getCTM || !Ue(e)), p.svg && (Fe(e, Z(e, Ie, i, !1, "50% 50%") + "", p, e.getAttribute("data-svg-origin")), Pe = a.useSVGTransformAttr || ke), (o = We(e)) !== je) {
                                if (16 === o.length) {
                                    var m, g, v, y, b, x = o[0],
                                        S = o[1],
                                        T = o[2],
                                        w = o[3],
                                        E = o[4],
                                        P = o[5],
                                        R = o[6],
                                        O = o[7],
                                        A = o[8],
                                        I = o[9],
                                        C = o[10],
                                        M = o[12],
                                        D = o[13],
                                        N = o[14],
                                        L = o[11],
                                        k = Math.atan2(R, C);
                                    p.zOrigin && (N = -p.zOrigin, M = A * N - o[12], D = I * N - o[13], N = C * N + p.zOrigin - o[14]), p.rotationX = k * F, k && (y = Math.cos(-k), b = Math.sin(-k), m = E * y + A * b, g = P * y + I * b, v = R * y + C * b, A = E * -b + A * y, I = P * -b + I * y, C = R * -b + C * y, L = O * -b + L * y, E = m, P = g, R = v), k = Math.atan2(-T, C), p.rotationY = k * F, k && (y = Math.cos(-k), b = Math.sin(-k), m = x * y - A * b, g = S * y - I * b, v = T * y - C * b, I = S * b + I * y, C = T * b + C * y, L = w * b + L * y, x = m, S = g, T = v), k = Math.atan2(S, x), p.rotation = k * F, k && (y = Math.cos(k), b = Math.sin(k), m = x * y + S * b, g = E * y + P * b, v = A * y + I * b, S = S * y - x * b, P = P * y - E * b, I = I * y - A * b, x = m, E = g, A = v), p.rotationX && Math.abs(p.rotationX) + Math.abs(p.rotation) > 359.9 && (p.rotationX = p.rotation = 0, p.rotationY = 180 - p.rotationY), k = Math.atan2(E, P), p.scaleX = (1e5 * Math.sqrt(x * x + S * S + T * T) + .5 | 0) / 1e5, p.scaleY = (1e5 * Math.sqrt(P * P + R * R) + .5 | 0) / 1e5, p.scaleZ = (1e5 * Math.sqrt(A * A + I * I + C * C) + .5 | 0) / 1e5, x /= p.scaleX, E /= p.scaleY, S /= p.scaleX, P /= p.scaleY, Math.abs(k) > 2e-5 ? (p.skewX = k * F, E = 0, "simple" !== p.skewType && (p.scaleY *= 1 / Math.cos(k))) : p.skewX = 0, p.perspective = L ? 1 / (L < 0 ? -L : L) : 0, p.x = M, p.y = D, p.z = N, p.svg && (p.x -= p.xOrigin - (p.xOrigin * x - p.yOrigin * E), p.y -= p.yOrigin - (p.yOrigin * S - p.xOrigin * P))
                                } else if (!Ce || r || !o.length || p.x !== o[4] || p.y !== o[5] || !p.rotationX && !p.rotationY) {
                                    var B = o.length >= 6,
                                        G = B ? o[0] : 1,
                                        U = o[1] || 0,
                                        j = o[2] || 0,
                                        W = B ? o[3] : 1;
                                    p.x = o[4] || 0, p.y = o[5] || 0, l = Math.sqrt(G * G + U * U), u = Math.sqrt(W * W + j * j), c = G || U ? Math.atan2(U, G) * F : p.rotation || 0, h = j || W ? Math.atan2(j, W) * F + c : p.skewX || 0, p.scaleX = l, p.scaleY = u, p.rotation = c, p.skewX = h, Ce && (p.rotationX = p.rotationY = p.z = 0, p.perspective = _, p.scaleZ = 1), p.svg && (p.x -= p.xOrigin - (p.xOrigin * G + p.yOrigin * j), p.y -= p.yOrigin - (p.xOrigin * U + p.yOrigin * W))
                                }
                                Math.abs(p.skewX) > 90 && Math.abs(p.skewX) < 270 && (f ? (p.scaleX *= -1, p.skewX += p.rotation <= 0 ? 180 : -180, p.rotation += p.rotation <= 0 ? 180 : -180) : (p.scaleY *= -1, p.skewX += p.skewX <= 0 ? 180 : -180)), p.zOrigin = d;
                                for (s in p) p[s] < 2e-5 && p[s] > -2e-5 && (p[s] = 0)
                            }
                            return n && (e._gsTransform = p, p.svg && (Pe && e.style[Oe] ? t.delayedCall(.001, function() {
                                Ve(e.style, Oe)
                            }) : !Pe && e.getAttribute("transform") && t.delayedCall(.001, function() {
                                e.removeAttribute("transform")
                            }))), p
                        },
                        Xe = function(e) {
                            var t, i, n = this.data,
                                r = -n.rotation * k,
                                o = r + n.skewX * k,
                                a = (Math.cos(r) * n.scaleX * 1e5 | 0) / 1e5,
                                s = (Math.sin(r) * n.scaleX * 1e5 | 0) / 1e5,
                                l = (Math.sin(o) * -n.scaleY * 1e5 | 0) / 1e5,
                                u = (Math.cos(o) * n.scaleY * 1e5 | 0) / 1e5,
                                c = this.t.style,
                                h = this.t.currentStyle;
                            if (h) {
                                i = s, s = -l, l = -i, t = h.filter, c.filter = "";
                                var p, f, d = this.t.offsetWidth,
                                    m = this.t.offsetHeight,
                                    g = "absolute" !== h.position,
                                    v = "progid:DXImageTransform.Microsoft.Matrix(M11=" + a + ", M12=" + s + ", M21=" + l + ", M22=" + u,
                                    y = n.x + d * n.xPercent / 100,
                                    b = n.y + m * n.yPercent / 100;
                                if (null != n.ox && (p = (n.oxp ? d * n.ox * .01 : n.ox) - d / 2, f = (n.oyp ? m * n.oy * .01 : n.oy) - m / 2, y += p - (p * a + f * s), b += f - (p * l + f * u)), g ? (p = d / 2, f = m / 2, v += ", Dx=" + (p - (p * a + f * s) + y) + ", Dy=" + (f - (p * l + f * u) + b) + ")") : v += ", sizingMethod='auto expand')", -1 !== t.indexOf("DXImageTransform.Microsoft.Matrix(") ? c.filter = t.replace(D, v) : c.filter = v + " " + t, 0 !== e && 1 !== e || 1 === a && 0 === s && 0 === l && 1 === u && (g && -1 === v.indexOf("Dx=0, Dy=0") || T.test(t) && 100 !== parseFloat(RegExp.$1) || -1 === t.indexOf(t.indexOf("Alpha")) && c.removeAttribute("filter")), !g) {
                                    var x, w, E, P = _ < 8 ? 1 : -1;
                                    for (p = n.ieOffsetX || 0, f = n.ieOffsetY || 0, n.ieOffsetX = Math.round((d - ((a < 0 ? -a : a) * d + (s < 0 ? -s : s) * m)) / 2 + y), n.ieOffsetY = Math.round((m - ((u < 0 ? -u : u) * m + (l < 0 ? -l : l) * d)) / 2 + b), Se = 0; Se < 4; Se++) w = oe[Se], x = h[w], i = -1 !== x.indexOf("px") ? parseFloat(x) : ee(this.t, w, parseFloat(x), x.replace(S, "")) || 0, E = i !== n[w] ? Se < 2 ? -n.ieOffsetX : -n.ieOffsetY : Se < 2 ? p - n.ieOffsetX : f - n.ieOffsetY, c[w] = (n[w] = Math.round(i - E * (0 === Se || 2 === Se ? 1 : P))) + "px"
                                }
                            }
                        },
                        ze = X.set3DTransformRatio = X.setTransformRatio = function(e) {
                            var t, i, n, r, o, a, s, l, u, c, h, p, d, _, m, g, v, y, b, x, S, T, w, E = this.data,
                                P = this.t.style,
                                R = E.rotation,
                                O = E.rotationX,
                                A = E.rotationY,
                                I = E.scaleX,
                                C = E.scaleY,
                                M = E.scaleZ,
                                D = E.x,
                                N = E.y,
                                L = E.z,
                                F = E.svg,
                                B = E.perspective,
                                G = E.force3D,
                                U = E.skewY,
                                j = E.skewX;
                            if (U && (j += U, R += U), ((1 === e || 0 === e) && "auto" === G && (this.tween._totalTime === this.tween._totalDuration || !this.tween._totalTime) || !G) && !L && !B && !A && !O && 1 === M || Pe && F || !Ce) return void(R || j || F ? (R *= k, T = j * k, w = 1e5, i = Math.cos(R) * I, o = Math.sin(R) * I, n = Math.sin(R - T) * -C, a = Math.cos(R - T) * C, T && "simple" === E.skewType && (t = Math.tan(T - U * k), t = Math.sqrt(1 + t * t), n *= t, a *= t, U && (t = Math.tan(U * k), t = Math.sqrt(1 + t * t), i *= t, o *= t)), F && (D += E.xOrigin - (E.xOrigin * i + E.yOrigin * n) + E.xOffset, N += E.yOrigin - (E.xOrigin * o + E.yOrigin * a) + E.yOffset, Pe && (E.xPercent || E.yPercent) && (m = this.t.getBBox(), D += .01 * E.xPercent * m.width, N += .01 * E.yPercent * m.height), m = 1e-6, D < m && D > -m && (D = 0), N < m && N > -m && (N = 0)), b = (i * w | 0) / w + "," + (o * w | 0) / w + "," + (n * w | 0) / w + "," + (a * w | 0) / w + "," + D + "," + N + ")", F && Pe ? this.t.setAttribute("transform", "matrix(" + b) : P[Oe] = (E.xPercent || E.yPercent ? "translate(" + E.xPercent + "%," + E.yPercent + "%) matrix(" : "matrix(") + b) : P[Oe] = (E.xPercent || E.yPercent ? "translate(" + E.xPercent + "%," + E.yPercent + "%) matrix(" : "matrix(") + I + ",0,0," + C + "," + D + "," + N + ")");
                            if (f && (m = 1e-4, I < m && I > -m && (I = M = 2e-5), C < m && C > -m && (C = M = 2e-5), !B || E.z || E.rotationX || E.rotationY || (B = 0)), R || j) R *= k, g = i = Math.cos(R), v = o = Math.sin(R), j && (R -= j * k, g = Math.cos(R), v = Math.sin(R), "simple" === E.skewType && (t = Math.tan((j - U) * k), t = Math.sqrt(1 + t * t), g *= t, v *= t, E.skewY && (t = Math.tan(U * k), t = Math.sqrt(1 + t * t), i *= t, o *= t))), n = -v, a = g;
                            else {
                                if (!(A || O || 1 !== M || B || F)) return void(P[Oe] = (E.xPercent || E.yPercent ? "translate(" + E.xPercent + "%," + E.yPercent + "%) translate3d(" : "translate3d(") + D + "px," + N + "px," + L + "px)" + (1 !== I || 1 !== C ? " scale(" + I + "," + C + ")" : ""));
                                i = a = 1, n = o = 0
                            }
                            c = 1, r = s = l = u = h = p = 0, d = B ? -1 / B : 0, _ = E.zOrigin, m = 1e-6, x = ",", S = "0", R = A * k, R && (g = Math.cos(R), v = Math.sin(R), l = -v, h = d * -v, r = i * v, s = o * v, c = g, d *= g, i *= g, o *= g), R = O * k, R && (g = Math.cos(R), v = Math.sin(R), t = n * g + r * v, y = a * g + s * v, u = c * v, p = d * v, r = n * -v + r * g, s = a * -v + s * g, c *= g, d *= g, n = t, a = y), 1 !== M && (r *= M, s *= M, c *= M, d *= M), 1 !== C && (n *= C, a *= C, u *= C, p *= C), 1 !== I && (i *= I, o *= I, l *= I, h *= I), (_ || F) && (_ && (D += r * -_, N += s * -_, L += c * -_ + _), F && (D += E.xOrigin - (E.xOrigin * i + E.yOrigin * n) + E.xOffset, N += E.yOrigin - (E.xOrigin * o + E.yOrigin * a) + E.yOffset), D < m && D > -m && (D = S), N < m && N > -m && (N = S), L < m && L > -m && (L = 0)), b = E.xPercent || E.yPercent ? "translate(" + E.xPercent + "%," + E.yPercent + "%) matrix3d(" : "matrix3d(", b += (i < m && i > -m ? S : i) + x + (o < m && o > -m ? S : o) + x + (l < m && l > -m ? S : l), b += x + (h < m && h > -m ? S : h) + x + (n < m && n > -m ? S : n) + x + (a < m && a > -m ? S : a), O || A || 1 !== M ? (b += x + (u < m && u > -m ? S : u) + x + (p < m && p > -m ? S : p) + x + (r < m && r > -m ? S : r), b += x + (s < m && s > -m ? S : s) + x + (c < m && c > -m ? S : c) + x + (d < m && d > -m ? S : d) + x) : b += ",0,0,0,0,1,0,", b += D + x + N + x + L + x + (B ? 1 + -L / B : 1) + ")", P[Oe] = b
                        };
                    u = Me.prototype, u.x = u.y = u.z = u.skewX = u.skewY = u.rotation = u.rotationX = u.rotationY = u.zOrigin = u.xPercent = u.yPercent = u.xOffset = u.yOffset = 0, u.scaleX = u.scaleY = u.scaleZ = 1, we("transform,scale,scaleX,scaleY,scaleZ,x,y,z,rotation,rotationX,rotationY,rotationZ,skewX,skewY,shortRotation,shortRotationX,shortRotationY,shortRotationZ,transformOrigin,svgOrigin,transformPerspective,directionalRotation,parseTransform,force3D,skewType,xPercent,yPercent,smoothOrigin", {
                        parser: function(e, t, i, n, o, s, l) {
                            if (n._lastParsedTransform === l) return o;
                            n._lastParsedTransform = l;
                            var u, c = l.scale && "function" == typeof l.scale ? l.scale : 0;
                            "function" == typeof l[i] && (u = l[i], l[i] = t), c && (l.scale = c(g, e));
                            var h, p, f, d, _, v, y, b, x, S = e._gsTransform,
                                T = e.style,
                                w = Re.length,
                                E = l,
                                P = {},
                                R = He(e, r, !0, E.parseTransform),
                                O = E.transform && ("function" == typeof E.transform ? E.transform(g, m) : E.transform);
                            if (R.skewType = E.skewType || R.skewType || a.defaultSkewType, n._transform = R, O && "string" == typeof O && Oe) p = W.style, p[Oe] = O, p.display = "block", p.position = "absolute", U.body.appendChild(W), h = He(W, null, !1), "simple" === R.skewType && (h.scaleY *= Math.cos(h.skewX * k)), R.svg && (v = R.xOrigin, y = R.yOrigin, h.x -= R.xOffset, h.y -= R.yOffset, (E.transformOrigin || E.svgOrigin) && (O = {}, Fe(e, se(E.transformOrigin), O, E.svgOrigin, E.smoothOrigin, !0), v = O.xOrigin, y = O.yOrigin, h.x -= O.xOffset - R.xOffset, h.y -= O.yOffset - R.yOffset), (v || y) && (b = We(W, !0), h.x -= v - (v * b[0] + y * b[2]), h.y -= y - (v * b[1] + y * b[3]))), U.body.removeChild(W), h.perspective || (h.perspective = R.perspective), null != E.xPercent && (h.xPercent = ue(E.xPercent, R.xPercent)), null != E.yPercent && (h.yPercent = ue(E.yPercent, R.yPercent));
                            else if ("object" == typeof E) {
                                if (h = {
                                        scaleX: ue(null != E.scaleX ? E.scaleX : E.scale, R.scaleX),
                                        scaleY: ue(null != E.scaleY ? E.scaleY : E.scale, R.scaleY),
                                        scaleZ: ue(E.scaleZ, R.scaleZ),
                                        x: ue(E.x, R.x),
                                        y: ue(E.y, R.y),
                                        z: ue(E.z, R.z),
                                        xPercent: ue(E.xPercent, R.xPercent),
                                        yPercent: ue(E.yPercent, R.yPercent),
                                        perspective: ue(E.transformPerspective, R.perspective)
                                    }, null != (_ = E.directionalRotation))
                                    if ("object" == typeof _)
                                        for (p in _) E[p] = _[p];
                                    else E.rotation = _;
                                "string" == typeof E.x && -1 !== E.x.indexOf("%") && (h.x = 0, h.xPercent = ue(E.x, R.xPercent)), "string" == typeof E.y && -1 !== E.y.indexOf("%") && (h.y = 0, h.yPercent = ue(E.y, R.yPercent)), h.rotation = ce("rotation" in E ? E.rotation : "shortRotation" in E ? E.shortRotation + "_short" : "rotationZ" in E ? E.rotationZ : R.rotation, R.rotation, "rotation", P), Ce && (h.rotationX = ce("rotationX" in E ? E.rotationX : "shortRotationX" in E ? E.shortRotationX + "_short" : R.rotationX || 0, R.rotationX, "rotationX", P), h.rotationY = ce("rotationY" in E ? E.rotationY : "shortRotationY" in E ? E.shortRotationY + "_short" : R.rotationY || 0, R.rotationY, "rotationY", P)), h.skewX = ce(E.skewX, R.skewX), h.skewY = ce(E.skewY, R.skewY)
                            }
                            for (Ce && null != E.force3D && (R.force3D = E.force3D, d = !0), f = R.force3D || R.z || R.rotationX || R.rotationY || h.z || h.rotationX || h.rotationY || h.perspective, f || null == E.scale || (h.scaleZ = 1); --w > -1;) x = Re[w], ((O = h[x] - R[x]) > 1e-6 || O < -1e-6 || null != E[x] || null != B[x]) && (d = !0, o = new ye(R, x, R[x], O, o), x in P && (o.e = P[x]), o.xs0 = 0, o.plugin = s, n._overwriteProps.push(o.n));
                            return O = E.transformOrigin, R.svg && (O || E.svgOrigin) && (v = R.xOffset, y = R.yOffset, Fe(e, se(O), h, E.svgOrigin, E.smoothOrigin), o = be(R, "xOrigin", (S ? R : h).xOrigin, h.xOrigin, o, "transformOrigin"), o = be(R, "yOrigin", (S ? R : h).yOrigin, h.yOrigin, o, "transformOrigin"), v === R.xOffset && y === R.yOffset || (o = be(R, "xOffset", S ? v : R.xOffset, R.xOffset, o, "transformOrigin"), o = be(R, "yOffset", S ? y : R.yOffset, R.yOffset, o, "transformOrigin")), O = "0px 0px"), (O || Ce && f && R.zOrigin) && (Oe ? (d = !0, x = Ie, O = (O || Z(e, x, r, !1, "50% 50%")) + "", o = new ye(T, x, 0, 0, o, -1, "transformOrigin"), o.b = T[x], o.plugin = s, Ce ? (p = R.zOrigin, O = O.split(" "), R.zOrigin = (O.length > 2 && (0 === p || "0px" !== O[2]) ? parseFloat(O[2]) : p) || 0, o.xs0 = o.e = O[0] + " " + (O[1] || "50%") + " 0px", o = new ye(R, "zOrigin", 0, 0, o, -1, o.n), o.b = p, o.xs0 = o.e = R.zOrigin) : o.xs0 = o.e = O) : se(O + "", R)), d && (n._transformType = R.svg && Pe || !f && 3 !== this._transformType ? 2 : 3), u && (l[i] = u), c && (l.scale = c), o
                        },
                        prefix: !0
                    }), we("boxShadow", {
                        defaultValue: "0px 0px 0px 0px #999",
                        prefix: !0,
                        color: !0,
                        multi: !0,
                        keyword: "inset"
                    }), we("borderRadius", {
                        defaultValue: "0px",
                        parser: function(e, t, i, o, a, s) {
                            t = this.format(t);
                            var l, u, c, h, p, f, d, _, m, g, v, y, b, x, S, T, w = ["borderTopLeftRadius", "borderTopRightRadius", "borderBottomRightRadius", "borderBottomLeftRadius"],
                                E = e.style;
                            for (m = parseFloat(e.offsetWidth), g = parseFloat(e.offsetHeight), l = t.split(" "), u = 0; u < w.length; u++) this.p.indexOf("border") && (w[u] = $(w[u])), p = h = Z(e, w[u], r, !1, "0px"), -1 !== p.indexOf(" ") && (h = p.split(" "), p = h[0], h = h[1]), f = c = l[u], d = parseFloat(p), y = p.substr((d + "").length), b = "=" === f.charAt(1), b ? (_ = parseInt(f.charAt(0) + "1", 10), f = f.substr(2), _ *= parseFloat(f), v = f.substr((_ + "").length - (_ < 0 ? 1 : 0)) || "") : (_ = parseFloat(f), v = f.substr((_ + "").length)), "" === v && (v = n[i] || y), v !== y && (x = ee(e, "borderLeft", d, y), S = ee(e, "borderTop", d, y), "%" === v ? (p = x / m * 100 + "%", h = S / g * 100 + "%") : "em" === v ? (T = ee(e, "borderLeft", 1, "em"), p = x / T + "em", h = S / T + "em") : (p = x + "px", h = S + "px"), b && (f = parseFloat(p) + _ + v, c = parseFloat(h) + _ + v)), a = xe(E, w[u], p + " " + h, f + " " + c, !1, "0px", a);
                            return a
                        },
                        prefix: !0,
                        formatter: me("0px 0px 0px 0px", !1, !0)
                    }), we("borderBottomLeftRadius,borderBottomRightRadius,borderTopLeftRadius,borderTopRightRadius", {
                        defaultValue: "0px",
                        parser: function(e, t, i, n, o, a) {
                            return xe(e.style, i, this.format(Z(e, i, r, !1, "0px 0px")), this.format(t), !1, "0px", o)
                        },
                        prefix: !0,
                        formatter: me("0px 0px", !1, !0)
                    }), we("backgroundPosition", {
                        defaultValue: "0 0",
                        parser: function(e, t, i, n, o, a) {
                            var s, l, u, c, h, p, f = "background-position",
                                d = r || Q(e, null),
                                m = this.format((d ? _ ? d.getPropertyValue(f + "-x") + " " + d.getPropertyValue(f + "-y") : d.getPropertyValue(f) : e.currentStyle.backgroundPositionX + " " + e.currentStyle.backgroundPositionY) || "0 0"),
                                g = this.format(t);
                            if (-1 !== m.indexOf("%") != (-1 !== g.indexOf("%")) && g.split(",").length < 2 && (p = Z(e, "backgroundImage").replace(A, "")) && "none" !== p) {
                                for (s = m.split(" "), l = g.split(" "), H.setAttribute("src", p), u = 2; --u > -1;) m = s[u], (c = -1 !== m.indexOf("%")) !== (-1 !== l[u].indexOf("%")) && (h = 0 === u ? e.offsetWidth - H.width : e.offsetHeight - H.height, s[u] = c ? parseFloat(m) / 100 * h + "px" : parseFloat(m) / h * 100 + "%");
                                m = s.join(" ")
                            }
                            return this.parseComplex(e.style, m, g, o, a)
                        },
                        formatter: se
                    }), we("backgroundSize", {
                        defaultValue: "0 0",
                        formatter: function(e) {
                            return e += "", se(-1 === e.indexOf(" ") ? e + " " + e : e)
                        }
                    }), we("perspective", {
                        defaultValue: "0px",
                        prefix: !0
                    }), we("perspectiveOrigin", {
                        defaultValue: "50% 50%",
                        prefix: !0
                    }), we("transformStyle", {
                        prefix: !0
                    }), we("backfaceVisibility", {
                        prefix: !0
                    }), we("userSelect", {
                        prefix: !0
                    }), we("margin", {
                        parser: ge("marginTop,marginRight,marginBottom,marginLeft")
                    }), we("padding", {
                        parser: ge("paddingTop,paddingRight,paddingBottom,paddingLeft")
                    }), we("clip", {
                        defaultValue: "rect(0px,0px,0px,0px)",
                        parser: function(e, t, i, n, o, a) {
                            var s, l, u;
                            return _ < 9 ? (l = e.currentStyle, u = _ < 8 ? " " : ",", s = "rect(" + l.clipTop + u + l.clipRight + u + l.clipBottom + u + l.clipLeft + ")", t = this.format(t).split(",").join(u)) : (s = this.format(Z(e, this.p, r, !1, this.dflt)), t = this.format(t)), this.parseComplex(e.style, s, t, o, a)
                        }
                    }), we("textShadow", {
                        defaultValue: "0px 0px 0px #999",
                        color: !0,
                        multi: !0
                    }), we("autoRound,strictUnits", {
                        parser: function(e, t, i, n, r) {
                            return r
                        }
                    }), we("border", {
                        defaultValue: "0px solid #000",
                        parser: function(e, t, i, n, o, a) {
                            var s = Z(e, "borderTopWidth", r, !1, "0px"),
                                l = this.format(t).split(" "),
                                u = l[0].replace(S, "");
                            return "px" !== u && (s = parseFloat(s) / ee(e, "borderTopWidth", 1, u) + u), this.parseComplex(e.style, this.format(s + " " + Z(e, "borderTopStyle", r, !1, "solid") + " " + Z(e, "borderTopColor", r, !1, "#000")), l.join(" "), o, a)
                        },
                        color: !0,
                        formatter: function(e) {
                            var t = e.split(" ");
                            return t[0] + " " + (t[1] || "solid") + " " + (e.match(_e) || ["#000"])[0]
                        }
                    }), we("borderWidth", {
                        parser: ge("borderTopWidth,borderRightWidth,borderBottomWidth,borderLeftWidth")
                    }), we("float,cssFloat,styleFloat", {
                        parser: function(e, t, i, n, r, o) {
                            var a = e.style,
                                s = "cssFloat" in a ? "cssFloat" : "styleFloat";
                            return new ye(a, s, 0, 0, r, -1, i, !1, 0, a[s], t)
                        }
                    });
                    var Ye = function(e) {
                        var t, i = this.t,
                            n = i.filter || Z(this.data, "filter") || "",
                            r = this.s + this.c * e | 0;
                        100 === r && (-1 === n.indexOf("atrix(") && -1 === n.indexOf("radient(") && -1 === n.indexOf("oader(") ? (i.removeAttribute("filter"), t = !Z(this.data, "filter")) : (i.filter = n.replace(E, ""), t = !0)), t || (this.xn1 && (i.filter = n = n || "alpha(opacity=" + r + ")"), -1 === n.indexOf("pacity") ? 0 === r && this.xn1 || (i.filter = n + " alpha(opacity=" + r + ")") : i.filter = n.replace(T, "opacity=" + r))
                    };
                    we("opacity,alpha,autoAlpha", {
                        defaultValue: "1",
                        parser: function(e, t, i, n, o, a) {
                            var s = parseFloat(Z(e, "opacity", r, !1, "1")),
                                l = e.style,
                                u = "autoAlpha" === i;
                            return "string" == typeof t && "=" === t.charAt(1) && (t = ("-" === t.charAt(0) ? -1 : 1) * parseFloat(t.substr(2)) + s), u && 1 === s && "hidden" === Z(e, "visibility", r) && 0 !== t && (s = 0), Y ? o = new ye(l, "opacity", s, t - s, o) : (o = new ye(l, "opacity", 100 * s, 100 * (t - s), o), o.xn1 = u ? 1 : 0, l.zoom = 1, o.type = 2, o.b = "alpha(opacity=" + o.s + ")", o.e = "alpha(opacity=" + (o.s + o.c) + ")", o.data = e, o.plugin = a, o.setRatio = Ye), u && (o = new ye(l, "visibility", 0, 0, o, -1, null, !1, 0, 0 !== s ? "inherit" : "hidden", 0 === t ? "hidden" : "inherit"), o.xs0 = "inherit", n._overwriteProps.push(o.n), n._overwriteProps.push(i)), o
                        }
                    });
                    var Ve = function(e, t) {
                            t && (e.removeProperty ? ("ms" !== t.substr(0, 2) && "webkit" !== t.substr(0, 6) || (t = "-" + t), e.removeProperty(t.replace(R, "-$1").toLowerCase())) : e.removeAttribute(t))
                        },
                        qe = function(e) {
                            if (this.t._gsClassPT = this, 1 === e || 0 === e) {
                                this.t.setAttribute("class", 0 === e ? this.b : this.e);
                                for (var t = this.data, i = this.t.style; t;) t.v ? i[t.p] = t.v : Ve(i, t.p), t = t._next;
                                1 === e && this.t._gsClassPT === this && (this.t._gsClassPT = null)
                            } else this.t.getAttribute("class") !== this.e && this.t.setAttribute("class", this.e)
                        };
                    we("className", {
                        parser: function(e, t, n, o, a, s, l) {
                            var u, c, h, p, f, d = e.getAttribute("class") || "",
                                _ = e.style.cssText;
                            if (a = o._classNamePT = new ye(e, n, 0, 0, a, 2), a.setRatio = qe, a.pr = -11, i = !0, a.b = d, c = ie(e, r), h = e._gsClassPT) {
                                for (p = {}, f = h.data; f;) p[f.p] = 1, f = f._next;
                                h.setRatio(1)
                            }
                            return e._gsClassPT = a, a.e = "=" !== t.charAt(1) ? t : d.replace(new RegExp("(?:\\s|^)" + t.substr(2) + "(?![\\w-])"), "") + ("+" === t.charAt(0) ? " " + t.substr(2) : ""), e.setAttribute("class", a.e), u = ne(e, c, ie(e), l, p), e.setAttribute("class", d), a.data = u.firstMPT, e.style.cssText = _, a = a.xfirst = o.parse(e, u.difs, a, s)
                        }
                    });
                    var Je = function(e) {
                        if ((1 === e || 0 === e) && this.data._totalTime === this.data._totalDuration && "isFromStart" !== this.data.data) {
                            var t, i, n, r, o, a = this.t.style,
                                s = l.transform.parse;
                            if ("all" === this.e) a.cssText = "", r = !0;
                            else
                                for (t = this.e.split(" ").join("").split(","), n = t.length; --n > -1;) i = t[n], l[i] && (l[i].parse === s ? r = !0 : i = "transformOrigin" === i ? Ie : l[i].p), Ve(a, i);
                            r && (Ve(a, Oe), (o = this.t._gsTransform) && (o.svg && (this.t.removeAttribute("data-svg-origin"), this.t.removeAttribute("transform")), delete this.t._gsTransform))
                        }
                    };
                    for (we("clearProps", {
                            parser: function(e, t, n, r, o) {
                                return o = new ye(e, n, 0, 0, o, 2), o.setRatio = Je, o.e = t, o.pr = -10, o.data = r._tween, i = !0, o
                            }
                        }), u = "bezier,throwProps,physicsProps,physics2D".split(","), Se = u.length; Se--;) Ee(u[Se]);
                    u = a.prototype, u._firstPT = u._lastParsedTransform = u._transform = null, u._onInitTween = function(e, t, s, u) {
                        if (!e.nodeType) return !1;
                        this._target = m = e, this._tween = s, this._vars = t, g = u, c = t.autoRound, i = !1, n = t.suffixMap || a.suffixMap, r = Q(e, ""), o = this._overwriteProps;
                        var f, _, v, y, b, x, S, T, E, P = e.style;
                        if (h && "" === P.zIndex && ("auto" !== (f = Z(e, "zIndex", r)) && "" !== f || this._addLazySet(P, "zIndex", 0)), "string" == typeof t && (y = P.cssText, f = ie(e, r), P.cssText = y + ";" + t, f = ne(e, f, ie(e)).difs, !Y && w.test(t) && (f.opacity = parseFloat(RegExp.$1)), t = f, P.cssText = y), t.className ? this._firstPT = _ = l.className.parse(e, t.className, "className", this, null, null, t) : this._firstPT = _ = this.parse(e, t, null), this._transformType) {
                            for (E = 3 === this._transformType, Oe ? p && (h = !0, "" === P.zIndex && ("auto" !== (S = Z(e, "zIndex", r)) && "" !== S || this._addLazySet(P, "zIndex", 0)), d && this._addLazySet(P, "WebkitBackfaceVisibility", this._vars.WebkitBackfaceVisibility || (E ? "visible" : "hidden"))) : P.zoom = 1, v = _; v && v._next;) v = v._next;
                            T = new ye(e, "transform", 0, 0, null, 2), this._linkCSSP(T, null, v), T.setRatio = Oe ? ze : Xe, T.data = this._transform || He(e, r, !0), T.tween = s, T.pr = -1, o.pop()
                        }
                        if (i) {
                            for (; _;) {
                                for (x = _._next, v = y; v && v.pr > _.pr;) v = v._next;
                                (_._prev = v ? v._prev : b) ? _._prev._next = _: y = _, (_._next = v) ? v._prev = _ : b = _, _ = x
                            }
                            this._firstPT = y
                        }
                        return !0
                    }, u.parse = function(e, t, i, o) {
                        var a, s, u, h, p, f, d, _, v, y, b = e.style;
                        for (a in t) {
                            if (f = t[a], "function" == typeof f && (f = f(g, m)), s = l[a]) i = s.parse(e, f, a, this, i, o, t);
                            else {
                                if ("--" === a.substr(0, 2)) {
                                    this._tween._propLookup[a] = this._addTween.call(this._tween, e.style, "setProperty", Q(e).getPropertyValue(a) + "", f + "", a, !1, a);
                                    continue
                                }
                                p = Z(e, a, r) + "", v = "string" == typeof f, "color" === a || "fill" === a || "stroke" === a || -1 !== a.indexOf("Color") || v && P.test(f) ? (v || (f = fe(f), f = (f.length > 3 ? "rgba(" : "rgb(") + f.join(",") + ")"), i = xe(b, a, p, f, !0, "transparent", i, 0, o)) : v && L.test(f) ? i = xe(b, a, p, f, !0, null, i, 0, o) : (u = parseFloat(p), d = u || 0 === u ? p.substr((u + "").length) : "", "" !== p && "auto" !== p || ("width" === a || "height" === a ? (u = ae(e, a, r), d = "px") : "left" === a || "top" === a ? (u = te(e, a, r), d = "px") : (u = "opacity" !== a ? 0 : 1, d = "")), y = v && "=" === f.charAt(1), y ? (h = parseInt(f.charAt(0) + "1", 10), f = f.substr(2), h *= parseFloat(f), _ = f.replace(S, "")) : (h = parseFloat(f), _ = v ? f.replace(S, "") : ""), "" === _ && (_ = a in n ? n[a] : d), f = h || 0 === h ? (y ? h + u : h) + _ : t[a], d !== _ && ("" === _ && "lineHeight" !== a || (h || 0 === h) && u && (u = ee(e, a, u, d), "%" === _ ? (u /= ee(e, a, 100, "%") / 100, !0 !== t.strictUnits && (p = u + "%")) : "em" === _ || "rem" === _ || "vw" === _ || "vh" === _ ? u /= ee(e, a, 1, _) : "px" !== _ && (h = ee(e, a, h, _), _ = "px"), y && (h || 0 === h) && (f = h + u + _))), y && (h += u), !u && 0 !== u || !h && 0 !== h ? void 0 !== b[a] && (f || f + "" != "NaN" && null != f) ? (i = new ye(b, a, h || u || 0, 0, i, -1, a, !1, 0, p, f), i.xs0 = "none" !== f || "display" !== a && -1 === a.indexOf("Style") ? f : p) : q(t[a]) : (i = new ye(b, a, u, h - u, i, 0, a, !1 !== c && ("px" === _ || "zIndex" === a), 0, p, f), i.xs0 = _))
                            }
                            o && i && !i.plugin && (i.plugin = o)
                        }
                        return i
                    }, u.setRatio = function(e) {
                        var t, i, n, r = this._firstPT;
                        if (1 !== e || this._tween._time !== this._tween._duration && 0 !== this._tween._time)
                            if (e || this._tween._time !== this._tween._duration && 0 !== this._tween._time || -1e-6 === this._tween._rawPrevTime)
                                for (; r;) {
                                    if (t = r.c * e + r.s, r.r ? t = Math.round(t) : t < 1e-6 && t > -1e-6 && (t = 0), r.type)
                                        if (1 === r.type)
                                            if (2 === (n = r.l)) r.t[r.p] = r.xs0 + t + r.xs1 + r.xn1 + r.xs2;
                                            else if (3 === n) r.t[r.p] = r.xs0 + t + r.xs1 + r.xn1 + r.xs2 + r.xn2 + r.xs3;
                                    else if (4 === n) r.t[r.p] = r.xs0 + t + r.xs1 + r.xn1 + r.xs2 + r.xn2 + r.xs3 + r.xn3 + r.xs4;
                                    else if (5 === n) r.t[r.p] = r.xs0 + t + r.xs1 + r.xn1 + r.xs2 + r.xn2 + r.xs3 + r.xn3 + r.xs4 + r.xn4 + r.xs5;
                                    else {
                                        for (i = r.xs0 + t + r.xs1, n = 1; n < r.l; n++) i += r["xn" + n] + r["xs" + (n + 1)];
                                        r.t[r.p] = i
                                    } else -1 === r.type ? r.t[r.p] = r.xs0 : r.setRatio && r.setRatio(e);
                                    else r.t[r.p] = t + r.xs0;
                                    r = r._next
                                } else
                                    for (; r;) 2 !== r.type ? r.t[r.p] = r.b : r.setRatio(e), r = r._next;
                            else
                                for (; r;) {
                                    if (2 !== r.type)
                                        if (r.r && -1 !== r.type)
                                            if (t = Math.round(r.s + r.c), r.type) {
                                                if (1 === r.type) {
                                                    for (n = r.l, i = r.xs0 + t + r.xs1, n = 1; n < r.l; n++) i += r["xn" + n] + r["xs" + (n + 1)];
                                                    r.t[r.p] = i
                                                }
                                            } else r.t[r.p] = t + r.xs0;
                                    else r.t[r.p] = r.e;
                                    else r.setRatio(e);
                                    r = r._next
                                }
                    }, u._enableTransforms = function(e) {
                        this._transform = this._transform || He(this._target, r, !0), this._transformType = this._transform.svg && Pe || !e && 3 !== this._transformType ? 2 : 3
                    };
                    var Ke = function(e) {
                        this.t[this.p] = this.e, this.data._linkCSSP(this, this._next, null, !0)
                    };
                    u._addLazySet = function(e, t, i) {
                        var n = this._firstPT = new ye(e, t, 0, 0, this._firstPT, 2);
                        n.e = i, n.setRatio = Ke, n.data = this
                    }, u._linkCSSP = function(e, t, i, n) {
                        return e && (t && (t._prev = e), e._next && (e._next._prev = e._prev), e._prev ? e._prev._next = e._next : this._firstPT === e && (this._firstPT = e._next, n = !0), i ? i._next = e : n || null !== this._firstPT || (this._firstPT = e), e._next = t, e._prev = i), e
                    }, u._mod = function(e) {
                        for (var t = this._firstPT; t;) "function" == typeof e[t.p] && e[t.p] === Math.round && (t.r = 1), t = t._next
                    }, u._kill = function(t) {
                        var i, n, r, o = t;
                        if (t.autoAlpha || t.alpha) {
                            o = {};
                            for (n in t) o[n] = t[n];
                            o.opacity = 1, o.autoAlpha && (o.visibility = 1)
                        }
                        for (t.className && (i = this._classNamePT) && (r = i.xfirst, r && r._prev ? this._linkCSSP(r._prev, i._next, r._prev._prev) : r === this._firstPT && (this._firstPT = i._next), i._next && this._linkCSSP(i._next, i._next._next, r._prev), this._classNamePT = null), i = this._firstPT; i;) i.plugin && i.plugin !== n && i.plugin._kill && (i.plugin._kill(t), n = i.plugin), i = i._next;
                        return e.prototype._kill.call(this, o)
                    };
                    var $e = function(e, t, i) {
                        var n, r, o, a;
                        if (e.slice)
                            for (r = e.length; --r > -1;) $e(e[r], t, i);
                        else
                            for (n = e.childNodes, r = n.length; --r > -1;) o = n[r], a = o.type, o.style && (t.push(ie(o)), i && i.push(o)), 1 !== a && 9 !== a && 11 !== a || !o.childNodes.length || $e(o, t, i)
                    };
                    return a.cascadeTo = function(e, i, n) {
                        var r, o, a, s, l = t.to(e, i, n),
                            u = [l],
                            c = [],
                            h = [],
                            p = [],
                            f = t._internals.reservedProps;
                        for (e = l._targets || l.target, $e(e, c, p), l.render(i, !0, !0), $e(e, h), l.render(0, !0, !0), l._enabled(!0), r = p.length; --r > -1;)
                            if (o = ne(p[r], c[r], h[r]), o.firstMPT) {
                                o = o.difs;
                                for (a in n) f[a] && (o[a] = n[a]);
                                s = {};
                                for (a in o) s[a] = c[r][a];
                                u.push(t.fromTo(p[r], i, s, o))
                            }
                        return u
                    }, e.activate([a]), a
                }, !0),
                function() {
                    var e = _gsScope._gsDefine.plugin({
                            propName: "roundProps",
                            version: "1.6.0",
                            priority: -1,
                            API: 2,
                            init: function(e, t, i) {
                                return this._tween = i, !0
                            }
                        }),
                        t = function(e) {
                            for (; e;) e.f || e.blob || (e.m = Math.round), e = e._next
                        },
                        i = e.prototype;
                    i._onInitAllProps = function() {
                        for (var e, i, n, r = this._tween, o = r.vars.roundProps.join ? r.vars.roundProps : r.vars.roundProps.split(","), a = o.length, s = {}, l = r._propLookup.roundProps; --a > -1;) s[o[a]] = Math.round;
                        for (a = o.length; --a > -1;)
                            for (e = o[a], i = r._firstPT; i;) n = i._next, i.pg ? i.t._mod(s) : i.n === e && (2 === i.f && i.t ? t(i.t._firstPT) : (this._add(i.t, e, i.s, i.c),
                                n && (n._prev = i._prev), i._prev ? i._prev._next = n : r._firstPT === i && (r._firstPT = n), i._next = i._prev = null, r._propLookup[e] = l)), i = n;
                        return !1
                    }, i._add = function(e, t, i, n) {
                        this._addTween(e, t, i, i + n, t, Math.round), this._overwriteProps.push(t)
                    }
                }(),
                function() {
                    _gsScope._gsDefine.plugin({
                        propName: "attr",
                        API: 2,
                        version: "0.6.1",
                        init: function(e, t, i, n) {
                            var r, o;
                            if ("function" != typeof e.setAttribute) return !1;
                            for (r in t) o = t[r], "function" == typeof o && (o = o(n, e)), this._addTween(e, "setAttribute", e.getAttribute(r) + "", o + "", r, !1, r), this._overwriteProps.push(r);
                            return !0
                        }
                    })
                }(), _gsScope._gsDefine.plugin({
                    propName: "directionalRotation",
                    version: "0.3.1",
                    API: 2,
                    init: function(e, t, i, n) {
                        "object" != typeof t && (t = {
                            rotation: t
                        }), this.finals = {};
                        var r, o, a, s, l, u, c = !0 === t.useRadians ? 2 * Math.PI : 360;
                        for (r in t) "useRadians" !== r && (s = t[r], "function" == typeof s && (s = s(n, e)), u = (s + "").split("_"), o = u[0], a = parseFloat("function" != typeof e[r] ? e[r] : e[r.indexOf("set") || "function" != typeof e["get" + r.substr(3)] ? r : "get" + r.substr(3)]()), s = this.finals[r] = "string" == typeof o && "=" === o.charAt(1) ? a + parseInt(o.charAt(0) + "1", 10) * Number(o.substr(2)) : Number(o) || 0, l = s - a, u.length && (o = u.join("_"), -1 !== o.indexOf("short") && (l %= c) !== l % (c / 2) && (l = l < 0 ? l + c : l - c), -1 !== o.indexOf("_cw") && l < 0 ? l = (l + 9999999999 * c) % c - (l / c | 0) * c : -1 !== o.indexOf("ccw") && l > 0 && (l = (l - 9999999999 * c) % c - (l / c | 0) * c)), (l > 1e-6 || l < -1e-6) && (this._addTween(e, r, a, a + l, r), this._overwriteProps.push(r)));
                        return !0
                    },
                    set: function(e) {
                        var t;
                        if (1 !== e) this._super.setRatio.call(this, e);
                        else
                            for (t = this._firstPT; t;) t.f ? t.t[t.p](this.finals[t.p]) : t.t[t.p] = this.finals[t.p], t = t._next
                    }
                })._autoCSS = !0, _gsScope._gsDefine("easing.Back", ["easing.Ease"], function(e) {
                    var t, i, n, r = _gsScope.GreenSockGlobals || _gsScope,
                        o = r.com.greensock,
                        a = 2 * Math.PI,
                        s = Math.PI / 2,
                        l = o._class,
                        u = function(t, i) {
                            var n = l("easing." + t, function() {}, !0),
                                r = n.prototype = new e;
                            return r.constructor = n, r.getRatio = i, n
                        },
                        c = e.register || function() {},
                        h = function(e, t, i, n, r) {
                            var o = l("easing." + e, {
                                easeOut: new t,
                                easeIn: new i,
                                easeInOut: new n
                            }, !0);
                            return c(o, e), o
                        },
                        p = function(e, t, i) {
                            this.t = e, this.v = t, i && (this.next = i, i.prev = this, this.c = i.v - t, this.gap = i.t - e)
                        },
                        f = function(t, i) {
                            var n = l("easing." + t, function(e) {
                                    this._p1 = e || 0 === e ? e : 1.70158, this._p2 = 1.525 * this._p1
                                }, !0),
                                r = n.prototype = new e;
                            return r.constructor = n, r.getRatio = i, r.config = function(e) {
                                return new n(e)
                            }, n
                        },
                        d = h("Back", f("BackOut", function(e) {
                            return (e -= 1) * e * ((this._p1 + 1) * e + this._p1) + 1
                        }), f("BackIn", function(e) {
                            return e * e * ((this._p1 + 1) * e - this._p1)
                        }), f("BackInOut", function(e) {
                            return (e *= 2) < 1 ? .5 * e * e * ((this._p2 + 1) * e - this._p2) : .5 * ((e -= 2) * e * ((this._p2 + 1) * e + this._p2) + 2)
                        })),
                        _ = l("easing.SlowMo", function(e, t, i) {
                            t = t || 0 === t ? t : .7, null == e ? e = .7 : e > 1 && (e = 1), this._p = 1 !== e ? t : 0, this._p1 = (1 - e) / 2, this._p2 = e, this._p3 = this._p1 + this._p2, this._calcEnd = !0 === i
                        }, !0),
                        m = _.prototype = new e;
                    return m.constructor = _, m.getRatio = function(e) {
                        var t = e + (.5 - e) * this._p;
                        return e < this._p1 ? this._calcEnd ? 1 - (e = 1 - e / this._p1) * e : t - (e = 1 - e / this._p1) * e * e * e * t : e > this._p3 ? this._calcEnd ? 1 - (e = (e - this._p3) / this._p1) * e : t + (e - t) * (e = (e - this._p3) / this._p1) * e * e * e : this._calcEnd ? 1 : t
                    }, _.ease = new _(.7, .7), m.config = _.config = function(e, t, i) {
                        return new _(e, t, i)
                    }, t = l("easing.SteppedEase", function(e, t) {
                        e = e || 1, this._p1 = 1 / e, this._p2 = e + (t ? 0 : 1), this._p3 = t ? 1 : 0
                    }, !0), m = t.prototype = new e, m.constructor = t, m.getRatio = function(e) {
                        return e < 0 ? e = 0 : e >= 1 && (e = .999999999), ((this._p2 * e | 0) + this._p3) * this._p1
                    }, m.config = t.config = function(e, i) {
                        return new t(e, i)
                    }, i = l("easing.RoughEase", function(t) {
                        t = t || {};
                        for (var i, n, r, o, a, s, l = t.taper || "none", u = [], c = 0, h = 0 | (t.points || 20), f = h, d = !1 !== t.randomize, _ = !0 === t.clamp, m = t.template instanceof e ? t.template : null, g = "number" == typeof t.strength ? .4 * t.strength : .4; --f > -1;) i = d ? Math.random() : 1 / h * f, n = m ? m.getRatio(i) : i, "none" === l ? r = g : "out" === l ? (o = 1 - i, r = o * o * g) : "in" === l ? r = i * i * g : i < .5 ? (o = 2 * i, r = o * o * .5 * g) : (o = 2 * (1 - i), r = o * o * .5 * g), d ? n += Math.random() * r - .5 * r : f % 2 ? n += .5 * r : n -= .5 * r, _ && (n > 1 ? n = 1 : n < 0 && (n = 0)), u[c++] = {
                            x: i,
                            y: n
                        };
                        for (u.sort(function(e, t) {
                                return e.x - t.x
                            }), s = new p(1, 1, null), f = h; --f > -1;) a = u[f], s = new p(a.x, a.y, s);
                        this._prev = new p(0, 0, 0 !== s.t ? s : s.next)
                    }, !0), m = i.prototype = new e, m.constructor = i, m.getRatio = function(e) {
                        var t = this._prev;
                        if (e > t.t) {
                            for (; t.next && e >= t.t;) t = t.next;
                            t = t.prev
                        } else
                            for (; t.prev && e <= t.t;) t = t.prev;
                        return this._prev = t, t.v + (e - t.t) / t.gap * t.c
                    }, m.config = function(e) {
                        return new i(e)
                    }, i.ease = new i, h("Bounce", u("BounceOut", function(e) {
                        return e < 1 / 2.75 ? 7.5625 * e * e : e < 2 / 2.75 ? 7.5625 * (e -= 1.5 / 2.75) * e + .75 : e < 2.5 / 2.75 ? 7.5625 * (e -= 2.25 / 2.75) * e + .9375 : 7.5625 * (e -= 2.625 / 2.75) * e + .984375
                    }), u("BounceIn", function(e) {
                        return (e = 1 - e) < 1 / 2.75 ? 1 - 7.5625 * e * e : e < 2 / 2.75 ? 1 - (7.5625 * (e -= 1.5 / 2.75) * e + .75) : e < 2.5 / 2.75 ? 1 - (7.5625 * (e -= 2.25 / 2.75) * e + .9375) : 1 - (7.5625 * (e -= 2.625 / 2.75) * e + .984375)
                    }), u("BounceInOut", function(e) {
                        var t = e < .5;
                        return e = t ? 1 - 2 * e : 2 * e - 1, e < 1 / 2.75 ? e *= 7.5625 * e : e = e < 2 / 2.75 ? 7.5625 * (e -= 1.5 / 2.75) * e + .75 : e < 2.5 / 2.75 ? 7.5625 * (e -= 2.25 / 2.75) * e + .9375 : 7.5625 * (e -= 2.625 / 2.75) * e + .984375, t ? .5 * (1 - e) : .5 * e + .5
                    })), h("Circ", u("CircOut", function(e) {
                        return Math.sqrt(1 - (e -= 1) * e)
                    }), u("CircIn", function(e) {
                        return -(Math.sqrt(1 - e * e) - 1)
                    }), u("CircInOut", function(e) {
                        return (e *= 2) < 1 ? -.5 * (Math.sqrt(1 - e * e) - 1) : .5 * (Math.sqrt(1 - (e -= 2) * e) + 1)
                    })), n = function(t, i, n) {
                        var r = l("easing." + t, function(e, t) {
                                this._p1 = e >= 1 ? e : 1, this._p2 = (t || n) / (e < 1 ? e : 1), this._p3 = this._p2 / a * (Math.asin(1 / this._p1) || 0), this._p2 = a / this._p2
                            }, !0),
                            o = r.prototype = new e;
                        return o.constructor = r, o.getRatio = i, o.config = function(e, t) {
                            return new r(e, t)
                        }, r
                    }, h("Elastic", n("ElasticOut", function(e) {
                        return this._p1 * Math.pow(2, -10 * e) * Math.sin((e - this._p3) * this._p2) + 1
                    }, .3), n("ElasticIn", function(e) {
                        return -this._p1 * Math.pow(2, 10 * (e -= 1)) * Math.sin((e - this._p3) * this._p2)
                    }, .3), n("ElasticInOut", function(e) {
                        return (e *= 2) < 1 ? this._p1 * Math.pow(2, 10 * (e -= 1)) * Math.sin((e - this._p3) * this._p2) * -.5 : this._p1 * Math.pow(2, -10 * (e -= 1)) * Math.sin((e - this._p3) * this._p2) * .5 + 1
                    }, .45)), h("Expo", u("ExpoOut", function(e) {
                        return 1 - Math.pow(2, -10 * e)
                    }), u("ExpoIn", function(e) {
                        return Math.pow(2, 10 * (e - 1)) - .001
                    }), u("ExpoInOut", function(e) {
                        return (e *= 2) < 1 ? .5 * Math.pow(2, 10 * (e - 1)) : .5 * (2 - Math.pow(2, -10 * (e - 1)))
                    })), h("Sine", u("SineOut", function(e) {
                        return Math.sin(e * s)
                    }), u("SineIn", function(e) {
                        return 1 - Math.cos(e * s)
                    }), u("SineInOut", function(e) {
                        return -.5 * (Math.cos(Math.PI * e) - 1)
                    })), l("easing.EaseLookup", {
                        find: function(t) {
                            return e.map[t]
                        }
                    }, !0), c(r.SlowMo, "SlowMo", "ease,"), c(i, "RoughEase", "ease,"), c(t, "SteppedEase", "ease,"), d
                }, !0)
        }), _gsScope._gsDefine && _gsScope._gsQueue.pop()(),
        function(e, t) {
            "use strict";
            var i = {},
                n = e.document,
                r = e.GreenSockGlobals = e.GreenSockGlobals || e;
            if (!r.TweenLite) {
                var o, a, s, l, u, c = function(e) {
                        var t, i = e.split("."),
                            n = r;
                        for (t = 0; t < i.length; t++) n[i[t]] = n = n[i[t]] || {};
                        return n
                    },
                    h = c("com.greensock"),
                    p = function(e) {
                        var t, i = [],
                            n = e.length;
                        for (t = 0; t !== n; i.push(e[t++]));
                        return i
                    },
                    f = function() {},
                    d = function() {
                        var e = Object.prototype.toString,
                            t = e.call([]);
                        return function(i) {
                            return null != i && (i instanceof Array || "object" == typeof i && !!i.push && e.call(i) === t)
                        }
                    }(),
                    _ = {},
                    m = function(t, n, o, a) {
                        this.sc = _[t] ? _[t].sc : [], _[t] = this, this.gsClass = null, this.func = o;
                        var s = [];
                        this.check = function(l) {
                            for (var u, h, p, f, d = n.length, g = d; --d > -1;)(u = _[n[d]] || new m(n[d], [])).gsClass ? (s[d] = u.gsClass, g--) : l && u.sc.push(this);
                            if (0 === g && o) {
                                if (h = ("com.greensock." + t).split("."), p = h.pop(), f = c(h.join("."))[p] = this.gsClass = o.apply(o, s), a)
                                    if (r[p] = i[p] = f, "undefined" != typeof module && module.exports)
                                        if ("TweenMax" === t) {
                                            module.exports = i.TweenMax = f;
                                            for (d in i) f[d] = i[d]
                                        } else i.TweenMax && (i.TweenMax[p] = f);
                                else "function" == typeof define && define.amd && define((e.GreenSockAMDPath ? e.GreenSockAMDPath + "/" : "") + t.split(".").pop(), [], function() {
                                    return f
                                });
                                for (d = 0; d < this.sc.length; d++) this.sc[d].check()
                            }
                        }, this.check(!0)
                    },
                    g = e._gsDefine = function(e, t, i, n) {
                        return new m(e, t, i, n)
                    },
                    v = h._class = function(e, t, i) {
                        return t = t || function() {}, g(e, [], function() {
                            return t
                        }, i), t
                    };
                g.globals = r;
                var y = [0, 0, 1, 1],
                    b = v("easing.Ease", function(e, t, i, n) {
                        this._func = e, this._type = i || 0, this._power = n || 0, this._params = t ? y.concat(t) : y
                    }, !0),
                    x = b.map = {},
                    S = b.register = function(e, t, i, n) {
                        for (var r, o, a, s, l = t.split(","), u = l.length, c = (i || "easeIn,easeOut,easeInOut").split(","); --u > -1;)
                            for (o = l[u], r = n ? v("easing." + o, null, !0) : h.easing[o] || {}, a = c.length; --a > -1;) s = c[a], x[o + "." + s] = x[s + o] = r[s] = e.getRatio ? e : e[s] || new e
                    };
                for (s = b.prototype, s._calcEnd = !1, s.getRatio = function(e) {
                        if (this._func) return this._params[0] = e, this._func.apply(null, this._params);
                        var t = this._type,
                            i = this._power,
                            n = 1 === t ? 1 - e : 2 === t ? e : e < .5 ? 2 * e : 2 * (1 - e);
                        return 1 === i ? n *= n : 2 === i ? n *= n * n : 3 === i ? n *= n * n * n : 4 === i && (n *= n * n * n * n), 1 === t ? 1 - n : 2 === t ? n : e < .5 ? n / 2 : 1 - n / 2
                    }, o = ["Linear", "Quad", "Cubic", "Quart", "Quint,Strong"], a = o.length; --a > -1;) s = o[a] + ",Power" + a, S(new b(null, null, 1, a), s, "easeOut", !0), S(new b(null, null, 2, a), s, "easeIn" + (0 === a ? ",easeNone" : "")), S(new b(null, null, 3, a), s, "easeInOut");
                x.linear = h.easing.Linear.easeIn, x.swing = h.easing.Quad.easeInOut;
                var T = v("events.EventDispatcher", function(e) {
                    this._listeners = {}, this._eventTarget = e || this
                });
                s = T.prototype, s.addEventListener = function(e, t, i, n, r) {
                    r = r || 0;
                    var o, a, s = this._listeners[e],
                        c = 0;
                    for (this !== l || u || l.wake(), null == s && (this._listeners[e] = s = []), a = s.length; --a > -1;) o = s[a], o.c === t && o.s === i ? s.splice(a, 1) : 0 === c && o.pr < r && (c = a + 1);
                    s.splice(c, 0, {
                        c: t,
                        s: i,
                        up: n,
                        pr: r
                    })
                }, s.removeEventListener = function(e, t) {
                    var i, n = this._listeners[e];
                    if (n)
                        for (i = n.length; --i > -1;)
                            if (n[i].c === t) return void n.splice(i, 1)
                }, s.dispatchEvent = function(e) {
                    var t, i, n, r = this._listeners[e];
                    if (r)
                        for (t = r.length, t > 1 && (r = r.slice(0)), i = this._eventTarget; --t > -1;)(n = r[t]) && (n.up ? n.c.call(n.s || i, {
                            type: e,
                            target: i
                        }) : n.c.call(n.s || i))
                };
                var w = e.requestAnimationFrame,
                    E = e.cancelAnimationFrame,
                    P = Date.now || function() {
                        return (new Date).getTime()
                    },
                    R = P();
                for (o = ["ms", "moz", "webkit", "o"], a = o.length; --a > -1 && !w;) w = e[o[a] + "RequestAnimationFrame"], E = e[o[a] + "CancelAnimationFrame"] || e[o[a] + "CancelRequestAnimationFrame"];
                v("Ticker", function(e, t) {
                    var i, r, o, a, s, c = this,
                        h = P(),
                        p = !(!1 === t || !w) && "auto",
                        d = 500,
                        _ = 33,
                        m = function(e) {
                            var t, n, l = P() - R;
                            l > d && (h += l - _), R += l, c.time = (R - h) / 1e3, t = c.time - s, (!i || t > 0 || !0 === e) && (c.frame++, s += t + (t >= a ? .004 : a - t), n = !0), !0 !== e && (o = r(m)), n && c.dispatchEvent("tick")
                        };
                    T.call(c), c.time = c.frame = 0, c.tick = function() {
                        m(!0)
                    }, c.lagSmoothing = function(e, t) {
                        d = e || 1e10, _ = Math.min(t, d, 0)
                    }, c.sleep = function() {
                        null != o && (p && E ? E(o) : clearTimeout(o), r = f, o = null, c === l && (u = !1))
                    }, c.wake = function(e) {
                        null !== o ? c.sleep() : e ? h += -R + (R = P()) : c.frame > 10 && (R = P() - d + 5), r = 0 === i ? f : p && w ? w : function(e) {
                            return setTimeout(e, 1e3 * (s - c.time) + 1 | 0)
                        }, c === l && (u = !0), m(2)
                    }, c.fps = function(e) {
                        if (!arguments.length) return i;
                        i = e, a = 1 / (i || 60), s = this.time + a, c.wake()
                    }, c.useRAF = function(e) {
                        if (!arguments.length) return p;
                        c.sleep(), p = e, c.fps(i)
                    }, c.fps(e), setTimeout(function() {
                        "auto" === p && c.frame < 5 && "hidden" !== n.visibilityState && c.useRAF(!1)
                    }, 1500)
                }), s = h.Ticker.prototype = new h.events.EventDispatcher, s.constructor = h.Ticker;
                var O = v("core.Animation", function(e, t) {
                    if (this.vars = t = t || {}, this._duration = this._totalDuration = e || 0, this._delay = Number(t.delay) || 0, this._timeScale = 1, this._active = !0 === t.immediateRender, this.data = t.data, this._reversed = !0 === t.reversed, q) {
                        u || l.wake();
                        var i = this.vars.useFrames ? V : q;
                        i.add(this, i._time), this.vars.paused && this.paused(!0)
                    }
                });
                l = O.ticker = new h.Ticker, s = O.prototype, s._dirty = s._gc = s._initted = s._paused = !1, s._totalTime = s._time = 0, s._rawPrevTime = -1, s._next = s._last = s._onUpdate = s._timeline = s.timeline = null, s._paused = !1;
                var A = function() {
                    u && P() - R > 2e3 && "hidden" !== n.visibilityState && l.wake();
                    var e = setTimeout(A, 2e3);
                    e.unref && e.unref()
                };
                A(), s.play = function(e, t) {
                    return null != e && this.seek(e, t), this.reversed(!1).paused(!1)
                }, s.pause = function(e, t) {
                    return null != e && this.seek(e, t), this.paused(!0)
                }, s.resume = function(e, t) {
                    return null != e && this.seek(e, t), this.paused(!1)
                }, s.seek = function(e, t) {
                    return this.totalTime(Number(e), !1 !== t)
                }, s.restart = function(e, t) {
                    return this.reversed(!1).paused(!1).totalTime(e ? -this._delay : 0, !1 !== t, !0)
                }, s.reverse = function(e, t) {
                    return null != e && this.seek(e || this.totalDuration(), t), this.reversed(!0).paused(!1)
                }, s.render = function(e, t, i) {}, s.invalidate = function() {
                    return this._time = this._totalTime = 0, this._initted = this._gc = !1, this._rawPrevTime = -1, !this._gc && this.timeline || this._enabled(!0), this
                }, s.isActive = function() {
                    var e, t = this._timeline,
                        i = this._startTime;
                    return !t || !this._gc && !this._paused && t.isActive() && (e = t.rawTime(!0)) >= i && e < i + this.totalDuration() / this._timeScale - 1e-7
                }, s._enabled = function(e, t) {
                    return u || l.wake(), this._gc = !e, this._active = this.isActive(), !0 !== t && (e && !this.timeline ? this._timeline.add(this, this._startTime - this._delay) : !e && this.timeline && this._timeline._remove(this, !0)), !1
                }, s._kill = function(e, t) {
                    return this._enabled(!1, !1)
                }, s.kill = function(e, t) {
                    return this._kill(e, t), this
                }, s._uncache = function(e) {
                    for (var t = e ? this : this.timeline; t;) t._dirty = !0, t = t.timeline;
                    return this
                }, s._swapSelfInParams = function(e) {
                    for (var t = e.length, i = e.concat(); --t > -1;) "{self}" === e[t] && (i[t] = this);
                    return i
                }, s._callback = function(e) {
                    var t = this.vars,
                        i = t[e],
                        n = t[e + "Params"],
                        r = t[e + "Scope"] || t.callbackScope || this;
                    switch (n ? n.length : 0) {
                        case 0:
                            i.call(r);
                            break;
                        case 1:
                            i.call(r, n[0]);
                            break;
                        case 2:
                            i.call(r, n[0], n[1]);
                            break;
                        default:
                            i.apply(r, n)
                    }
                }, s.eventCallback = function(e, t, i, n) {
                    if ("on" === (e || "").substr(0, 2)) {
                        var r = this.vars;
                        if (1 === arguments.length) return r[e];
                        null == t ? delete r[e] : (r[e] = t, r[e + "Params"] = d(i) && -1 !== i.join("").indexOf("{self}") ? this._swapSelfInParams(i) : i, r[e + "Scope"] = n), "onUpdate" === e && (this._onUpdate = t)
                    }
                    return this
                }, s.delay = function(e) {
                    return arguments.length ? (this._timeline.smoothChildTiming && this.startTime(this._startTime + e - this._delay), this._delay = e, this) : this._delay
                }, s.duration = function(e) {
                    return arguments.length ? (this._duration = this._totalDuration = e, this._uncache(!0), this._timeline.smoothChildTiming && this._time > 0 && this._time < this._duration && 0 !== e && this.totalTime(this._totalTime * (e / this._duration), !0), this) : (this._dirty = !1, this._duration)
                }, s.totalDuration = function(e) {
                    return this._dirty = !1, arguments.length ? this.duration(e) : this._totalDuration
                }, s.time = function(e, t) {
                    return arguments.length ? (this._dirty && this.totalDuration(), this.totalTime(e > this._duration ? this._duration : e, t)) : this._time
                }, s.totalTime = function(e, t, i) {
                    if (u || l.wake(), !arguments.length) return this._totalTime;
                    if (this._timeline) {
                        if (e < 0 && !i && (e += this.totalDuration()), this._timeline.smoothChildTiming) {
                            this._dirty && this.totalDuration();
                            var n = this._totalDuration,
                                r = this._timeline;
                            if (e > n && !i && (e = n), this._startTime = (this._paused ? this._pauseTime : r._time) - (this._reversed ? n - e : e) / this._timeScale, r._dirty || this._uncache(!1), r._timeline)
                                for (; r._timeline;) r._timeline._time !== (r._startTime + r._totalTime) / r._timeScale && r.totalTime(r._totalTime, !0), r = r._timeline
                        }
                        this._gc && this._enabled(!0, !1), this._totalTime === e && 0 !== this._duration || (N.length && K(), this.render(e, t, !1), N.length && K())
                    }
                    return this
                }, s.progress = s.totalProgress = function(e, t) {
                    var i = this.duration();
                    return arguments.length ? this.totalTime(i * e, t) : i ? this._time / i : this.ratio
                }, s.startTime = function(e) {
                    return arguments.length ? (e !== this._startTime && (this._startTime = e, this.timeline && this.timeline._sortChildren && this.timeline.add(this, e - this._delay)), this) : this._startTime
                }, s.endTime = function(e) {
                    return this._startTime + (0 != e ? this.totalDuration() : this.duration()) / this._timeScale
                }, s.timeScale = function(e) {
                    if (!arguments.length) return this._timeScale;
                    if (e = e || 1e-10, this._timeline && this._timeline.smoothChildTiming) {
                        var t = this._pauseTime,
                            i = t || 0 === t ? t : this._timeline.totalTime();
                        this._startTime = i - (i - this._startTime) * this._timeScale / e
                    }
                    return this._timeScale = e, this._uncache(!1)
                }, s.reversed = function(e) {
                    return arguments.length ? (e != this._reversed && (this._reversed = e, this.totalTime(this._timeline && !this._timeline.smoothChildTiming ? this.totalDuration() - this._totalTime : this._totalTime, !0)), this) : this._reversed
                }, s.paused = function(e) {
                    if (!arguments.length) return this._paused;
                    var t, i, n = this._timeline;
                    return e != this._paused && n && (u || e || l.wake(), t = n.rawTime(), i = t - this._pauseTime, !e && n.smoothChildTiming && (this._startTime += i, this._uncache(!1)), this._pauseTime = e ? t : null, this._paused = e, this._active = this.isActive(), !e && 0 !== i && this._initted && this.duration() && (t = n.smoothChildTiming ? this._totalTime : (t - this._startTime) / this._timeScale, this.render(t, t === this._totalTime, !0))), this._gc && !e && this._enabled(!0, !1), this
                };
                var I = v("core.SimpleTimeline", function(e) {
                    O.call(this, 0, e), this.autoRemoveChildren = this.smoothChildTiming = !0
                });
                s = I.prototype = new O, s.constructor = I, s.kill()._gc = !1, s._first = s._last = s._recent = null, s._sortChildren = !1, s.add = s.insert = function(e, t, i, n) {
                    var r, o;
                    if (e._startTime = Number(t || 0) + e._delay, e._paused && this !== e._timeline && (e._pauseTime = e._startTime + (this.rawTime() - e._startTime) / e._timeScale), e.timeline && e.timeline._remove(e, !0), e.timeline = e._timeline = this, e._gc && e._enabled(!0, !0), r = this._last, this._sortChildren)
                        for (o = e._startTime; r && r._startTime > o;) r = r._prev;
                    return r ? (e._next = r._next, r._next = e) : (e._next = this._first, this._first = e), e._next ? e._next._prev = e : this._last = e, e._prev = r, this._recent = e, this._timeline && this._uncache(!0), this
                }, s._remove = function(e, t) {
                    return e.timeline === this && (t || e._enabled(!1, !0), e._prev ? e._prev._next = e._next : this._first === e && (this._first = e._next), e._next ? e._next._prev = e._prev : this._last === e && (this._last = e._prev), e._next = e._prev = e.timeline = null, e === this._recent && (this._recent = this._last), this._timeline && this._uncache(!0)), this
                }, s.render = function(e, t, i) {
                    var n, r = this._first;
                    for (this._totalTime = this._time = this._rawPrevTime = e; r;) n = r._next, (r._active || e >= r._startTime && !r._paused && !r._gc) && (r._reversed ? r.render((r._dirty ? r.totalDuration() : r._totalDuration) - (e - r._startTime) * r._timeScale, t, i) : r.render((e - r._startTime) * r._timeScale, t, i)), r = n
                }, s.rawTime = function() {
                    return u || l.wake(), this._totalTime
                };
                var C = v("TweenLite", function(t, i, n) {
                        if (O.call(this, i, n), this.render = C.prototype.render, null == t) throw "Cannot tween a null target.";
                        this.target = t = "string" != typeof t ? t : C.selector(t) || t;
                        var r, o, a, s = t.jquery || t.length && t !== e && t[0] && (t[0] === e || t[0].nodeType && t[0].style && !t.nodeType),
                            l = this.vars.overwrite;
                        if (this._overwrite = l = null == l ? Y[C.defaultOverwrite] : "number" == typeof l ? l >> 0 : Y[l], (s || t instanceof Array || t.push && d(t)) && "number" != typeof t[0])
                            for (this._targets = a = p(t), this._propLookup = [], this._siblings = [], r = 0; r < a.length; r++) o = a[r], o ? "string" != typeof o ? o.length && o !== e && o[0] && (o[0] === e || o[0].nodeType && o[0].style && !o.nodeType) ? (a.splice(r--, 1), this._targets = a = a.concat(p(o))) : (this._siblings[r] = $(o, this, !1), 1 === l && this._siblings[r].length > 1 && Z(o, this, null, 1, this._siblings[r])) : "string" == typeof(o = a[r--] = C.selector(o)) && a.splice(r + 1, 1) : a.splice(r--, 1);
                        else this._propLookup = {}, this._siblings = $(t, this, !1), 1 === l && this._siblings.length > 1 && Z(t, this, null, 1, this._siblings);
                        (this.vars.immediateRender || 0 === i && 0 === this._delay && !1 !== this.vars.immediateRender) && (this._time = -1e-10, this.render(Math.min(0, -this._delay)))
                    }, !0),
                    M = function(t) {
                        return t && t.length && t !== e && t[0] && (t[0] === e || t[0].nodeType && t[0].style && !t.nodeType)
                    },
                    D = function(e, t) {
                        var i, n = {};
                        for (i in e) z[i] || i in t && "transform" !== i && "x" !== i && "y" !== i && "width" !== i && "height" !== i && "className" !== i && "border" !== i || !(!W[i] || W[i] && W[i]._autoCSS) || (n[i] = e[i], delete e[i]);
                        e.css = n
                    };
                s = C.prototype = new O, s.constructor = C, s.kill()._gc = !1, s.ratio = 0, s._firstPT = s._targets = s._overwrittenProps = s._startAt = null, s._notifyPluginsOfEnabled = s._lazy = !1, C.version = "1.20.1", C.defaultEase = s._ease = new b(null, null, 1, 1), C.defaultOverwrite = "auto", C.ticker = l, C.autoSleep = 120, C.lagSmoothing = function(e, t) {
                    l.lagSmoothing(e, t)
                }, C.selector = e.$ || e.jQuery || function(t) {
                    var i = e.$ || e.jQuery;
                    return i ? (C.selector = i, i(t)) : void 0 === n ? t : n.querySelectorAll ? n.querySelectorAll(t) : n.getElementById("#" === t.charAt(0) ? t.substr(1) : t)
                };
                var N = [],
                    L = {},
                    k = /(?:(-|-=|\+=)?\d*\.?\d*(?:e[\-+]?\d+)?)[0-9]/gi,
                    F = /[\+-]=-?[\.\d]/,
                    B = function(e) {
                        for (var t, i = this._firstPT; i;) t = i.blob ? 1 === e && this.end ? this.end : e ? this.join("") : this.start : i.c * e + i.s, i.m ? t = i.m(t, this._target || i.t) : t < 1e-6 && t > -1e-6 && !i.blob && (t = 0), i.f ? i.fp ? i.t[i.p](i.fp, t) : i.t[i.p](t) : i.t[i.p] = t, i = i._next
                    },
                    G = function(e, t, i, n) {
                        var r, o, a, s, l, u, c, h = [],
                            p = 0,
                            f = "",
                            d = 0;
                        for (h.start = e, h.end = t, e = h[0] = e + "", t = h[1] = t + "", i && (i(h), e = h[0], t = h[1]), h.length = 0, r = e.match(k) || [], o = t.match(k) || [], n && (n._next = null, n.blob = 1, h._firstPT = h._applyPT = n), l = o.length, s = 0; s < l; s++) c = o[s], u = t.substr(p, t.indexOf(c, p) - p), f += u || !s ? u : ",", p += u.length, d ? d = (d + 1) % 5 : "rgba(" === u.substr(-5) && (d = 1), c === r[s] || r.length <= s ? f += c : (f && (h.push(f), f = ""), a = parseFloat(r[s]), h.push(a), h._firstPT = {
                            _next: h._firstPT,
                            t: h,
                            p: h.length - 1,
                            s: a,
                            c: ("=" === c.charAt(1) ? parseInt(c.charAt(0) + "1", 10) * parseFloat(c.substr(2)) : parseFloat(c) - a) || 0,
                            f: 0,
                            m: d && d < 4 ? Math.round : 0
                        }), p += c.length;
                        return f += t.substr(p), f && h.push(f), h.setRatio = B, F.test(t) && (h.end = 0), h
                    },
                    U = function(e, t, i, n, r, o, a, s, l) {
                        "function" == typeof n && (n = n(l || 0, e));
                        var u, c = typeof e[t],
                            h = "function" !== c ? "" : t.indexOf("set") || "function" != typeof e["get" + t.substr(3)] ? t : "get" + t.substr(3),
                            p = "get" !== i ? i : h ? a ? e[h](a) : e[h]() : e[t],
                            f = "string" == typeof n && "=" === n.charAt(1),
                            d = {
                                t: e,
                                p: t,
                                s: p,
                                f: "function" === c,
                                pg: 0,
                                n: r || t,
                                m: o ? "function" == typeof o ? o : Math.round : 0,
                                pr: 0,
                                c: f ? parseInt(n.charAt(0) + "1", 10) * parseFloat(n.substr(2)) : parseFloat(n) - p || 0
                            };
                        if (("number" != typeof p || "number" != typeof n && !f) && (a || isNaN(p) || !f && isNaN(n) || "boolean" == typeof p || "boolean" == typeof n ? (d.fp = a, u = G(p, f ? parseFloat(d.s) + d.c : n, s || C.defaultStringFilter, d), d = {
                                t: u,
                                p: "setRatio",
                                s: 0,
                                c: 1,
                                f: 2,
                                pg: 0,
                                n: r || t,
                                pr: 0,
                                m: 0
                            }) : (d.s = parseFloat(p), f || (d.c = parseFloat(n) - d.s || 0))), d.c) return (d._next = this._firstPT) && (d._next._prev = d), this._firstPT = d, d
                    },
                    j = C._internals = {
                        isArray: d,
                        isSelector: M,
                        lazyTweens: N,
                        blobDif: G
                    },
                    W = C._plugins = {},
                    H = j.tweenLookup = {},
                    X = 0,
                    z = j.reservedProps = {
                        ease: 1,
                        delay: 1,
                        overwrite: 1,
                        onComplete: 1,
                        onCompleteParams: 1,
                        onCompleteScope: 1,
                        useFrames: 1,
                        runBackwards: 1,
                        startAt: 1,
                        onUpdate: 1,
                        onUpdateParams: 1,
                        onUpdateScope: 1,
                        onStart: 1,
                        onStartParams: 1,
                        onStartScope: 1,
                        onReverseComplete: 1,
                        onReverseCompleteParams: 1,
                        onReverseCompleteScope: 1,
                        onRepeat: 1,
                        onRepeatParams: 1,
                        onRepeatScope: 1,
                        easeParams: 1,
                        yoyo: 1,
                        immediateRender: 1,
                        repeat: 1,
                        repeatDelay: 1,
                        data: 1,
                        paused: 1,
                        reversed: 1,
                        autoCSS: 1,
                        lazy: 1,
                        onOverwrite: 1,
                        callbackScope: 1,
                        stringFilter: 1,
                        id: 1,
                        yoyoEase: 1
                    },
                    Y = {
                        none: 0,
                        all: 1,
                        auto: 2,
                        concurrent: 3,
                        allOnStart: 4,
                        preexisting: 5,
                        true: 1,
                        false: 0
                    },
                    V = O._rootFramesTimeline = new I,
                    q = O._rootTimeline = new I,
                    J = 30,
                    K = j.lazyRender = function() {
                        var e, t = N.length;
                        for (L = {}; --t > -1;)(e = N[t]) && !1 !== e._lazy && (e.render(e._lazy[0], e._lazy[1], !0), e._lazy = !1);
                        N.length = 0
                    };
                q._startTime = l.time, V._startTime = l.frame, q._active = V._active = !0, setTimeout(K, 1), O._updateRoot = C.render = function() {
                    var e, t, i;
                    if (N.length && K(), q.render((l.time - q._startTime) * q._timeScale, !1, !1), V.render((l.frame - V._startTime) * V._timeScale, !1, !1), N.length && K(), l.frame >= J) {
                        J = l.frame + (parseInt(C.autoSleep, 10) || 120);
                        for (i in H) {
                            for (t = H[i].tweens, e = t.length; --e > -1;) t[e]._gc && t.splice(e, 1);
                            0 === t.length && delete H[i]
                        }
                        if ((!(i = q._first) || i._paused) && C.autoSleep && !V._first && 1 === l._listeners.tick.length) {
                            for (; i && i._paused;) i = i._next;
                            i || l.sleep()
                        }
                    }
                }, l.addEventListener("tick", O._updateRoot);
                var $ = function(e, t, i) {
                        var n, r, o = e._gsTweenID;
                        if (H[o || (e._gsTweenID = o = "t" + X++)] || (H[o] = {
                                target: e,
                                tweens: []
                            }), t && (n = H[o].tweens, n[r = n.length] = t, i))
                            for (; --r > -1;) n[r] === t && n.splice(r, 1);
                        return H[o].tweens
                    },
                    Q = function(e, t, i, n) {
                        var r, o, a = e.vars.onOverwrite;
                        return a && (r = a(e, t, i, n)), a = C.onOverwrite, a && (o = a(e, t, i, n)), !1 !== r && !1 !== o
                    },
                    Z = function(e, t, i, n, r) {
                        var o, a, s, l;
                        if (1 === n || n >= 4) {
                            for (l = r.length, o = 0; o < l; o++)
                                if ((s = r[o]) !== t) s._gc || s._kill(null, e, t) && (a = !0);
                                else if (5 === n) break;
                            return a
                        }
                        var u, c = t._startTime + 1e-10,
                            h = [],
                            p = 0,
                            f = 0 === t._duration;
                        for (o = r.length; --o > -1;)(s = r[o]) === t || s._gc || s._paused || (s._timeline !== t._timeline ? (u = u || ee(t, 0, f), 0 === ee(s, u, f) && (h[p++] = s)) : s._startTime <= c && s._startTime + s.totalDuration() / s._timeScale > c && ((f || !s._initted) && c - s._startTime <= 2e-10 || (h[p++] = s)));
                        for (o = p; --o > -1;)
                            if (s = h[o], 2 === n && s._kill(i, e, t) && (a = !0), 2 !== n || !s._firstPT && s._initted) {
                                if (2 !== n && !Q(s, t)) continue;
                                s._enabled(!1, !1) && (a = !0)
                            }
                        return a
                    },
                    ee = function(e, t, i) {
                        for (var n = e._timeline, r = n._timeScale, o = e._startTime; n._timeline;) {
                            if (o += n._startTime, r *= n._timeScale, n._paused) return -100;
                            n = n._timeline
                        }
                        return o /= r, o > t ? o - t : i && o === t || !e._initted && o - t < 2e-10 ? 1e-10 : (o += e.totalDuration() / e._timeScale / r) > t + 1e-10 ? 0 : o - t - 1e-10
                    };
                s._init = function() {
                    var e, t, i, n, r, o, a = this.vars,
                        s = this._overwrittenProps,
                        l = this._duration,
                        u = !!a.immediateRender,
                        c = a.ease;
                    if (a.startAt) {
                        this._startAt && (this._startAt.render(-1, !0), this._startAt.kill()), r = {};
                        for (n in a.startAt) r[n] = a.startAt[n];
                        if (r.overwrite = !1, r.immediateRender = !0, r.lazy = u && !1 !== a.lazy, r.startAt = r.delay = null, r.onUpdate = a.onUpdate, r.onUpdateScope = a.onUpdateScope || a.callbackScope || this, this._startAt = C.to(this.target, 0, r), u)
                            if (this._time > 0) this._startAt = null;
                            else if (0 !== l) return
                    } else if (a.runBackwards && 0 !== l)
                        if (this._startAt) this._startAt.render(-1, !0), this._startAt.kill(), this._startAt = null;
                        else {
                            0 !== this._time && (u = !1), i = {};
                            for (n in a) z[n] && "autoCSS" !== n || (i[n] = a[n]);
                            if (i.overwrite = 0, i.data = "isFromStart", i.lazy = u && !1 !== a.lazy, i.immediateRender = u, this._startAt = C.to(this.target, 0, i), u) {
                                if (0 === this._time) return
                            } else this._startAt._init(), this._startAt._enabled(!1), this.vars.immediateRender && (this._startAt = null)
                        }
                    if (this._ease = c = c ? c instanceof b ? c : "function" == typeof c ? new b(c, a.easeParams) : x[c] || C.defaultEase : C.defaultEase, a.easeParams instanceof Array && c.config && (this._ease = c.config.apply(c, a.easeParams)), this._easeType = this._ease._type, this._easePower = this._ease._power, this._firstPT = null, this._targets)
                        for (o = this._targets.length, e = 0; e < o; e++) this._initProps(this._targets[e], this._propLookup[e] = {}, this._siblings[e], s ? s[e] : null, e) && (t = !0);
                    else t = this._initProps(this.target, this._propLookup, this._siblings, s, 0);
                    if (t && C._onPluginEvent("_onInitAllProps", this), s && (this._firstPT || "function" != typeof this.target && this._enabled(!1, !1)), a.runBackwards)
                        for (i = this._firstPT; i;) i.s += i.c, i.c = -i.c, i = i._next;
                    this._onUpdate = a.onUpdate, this._initted = !0
                }, s._initProps = function(t, i, n, r, o) {
                    var a, s, l, u, c, h;
                    if (null == t) return !1;
                    L[t._gsTweenID] && K(), this.vars.css || t.style && t !== e && t.nodeType && W.css && !1 !== this.vars.autoCSS && D(this.vars, t);
                    for (a in this.vars)
                        if (h = this.vars[a], z[a]) h && (h instanceof Array || h.push && d(h)) && -1 !== h.join("").indexOf("{self}") && (this.vars[a] = h = this._swapSelfInParams(h, this));
                        else if (W[a] && (u = new W[a])._onInitTween(t, this.vars[a], this, o)) {
                        for (this._firstPT = c = {
                                _next: this._firstPT,
                                t: u,
                                p: "setRatio",
                                s: 0,
                                c: 1,
                                f: 1,
                                n: a,
                                pg: 1,
                                pr: u._priority,
                                m: 0
                            }, s = u._overwriteProps.length; --s > -1;) i[u._overwriteProps[s]] = this._firstPT;
                        (u._priority || u._onInitAllProps) && (l = !0), (u._onDisable || u._onEnable) && (this._notifyPluginsOfEnabled = !0), c._next && (c._next._prev = c)
                    } else i[a] = U.call(this, t, a, "get", h, a, 0, null, this.vars.stringFilter, o);
                    return r && this._kill(r, t) ? this._initProps(t, i, n, r, o) : this._overwrite > 1 && this._firstPT && n.length > 1 && Z(t, this, i, this._overwrite, n) ? (this._kill(i, t), this._initProps(t, i, n, r, o)) : (this._firstPT && (!1 !== this.vars.lazy && this._duration || this.vars.lazy && !this._duration) && (L[t._gsTweenID] = !0), l)
                }, s.render = function(e, t, i) {
                    var n, r, o, a, s = this._time,
                        l = this._duration,
                        u = this._rawPrevTime;
                    if (e >= l - 1e-7 && e >= 0) this._totalTime = this._time = l, this.ratio = this._ease._calcEnd ? this._ease.getRatio(1) : 1, this._reversed || (n = !0, r = "onComplete", i = i || this._timeline.autoRemoveChildren), 0 === l && (this._initted || !this.vars.lazy || i) && (this._startTime === this._timeline._duration && (e = 0), (u < 0 || e <= 0 && e >= -1e-7 || 1e-10 === u && "isPause" !== this.data) && u !== e && (i = !0, u > 1e-10 && (r = "onReverseComplete")), this._rawPrevTime = a = !t || e || u === e ? e : 1e-10);
                    else if (e < 1e-7) this._totalTime = this._time = 0, this.ratio = this._ease._calcEnd ? this._ease.getRatio(0) : 0, (0 !== s || 0 === l && u > 0) && (r = "onReverseComplete", n = this._reversed), e < 0 && (this._active = !1, 0 === l && (this._initted || !this.vars.lazy || i) && (u >= 0 && (1e-10 !== u || "isPause" !== this.data) && (i = !0), this._rawPrevTime = a = !t || e || u === e ? e : 1e-10)), (!this._initted || this._startAt && this._startAt.progress()) && (i = !0);
                    else if (this._totalTime = this._time = e, this._easeType) {
                        var c = e / l,
                            h = this._easeType,
                            p = this._easePower;
                        (1 === h || 3 === h && c >= .5) && (c = 1 - c), 3 === h && (c *= 2), 1 === p ? c *= c : 2 === p ? c *= c * c : 3 === p ? c *= c * c * c : 4 === p && (c *= c * c * c * c), this.ratio = 1 === h ? 1 - c : 2 === h ? c : e / l < .5 ? c / 2 : 1 - c / 2
                    } else this.ratio = this._ease.getRatio(e / l);
                    if (this._time !== s || i) {
                        if (!this._initted) {
                            if (this._init(), !this._initted || this._gc) return;
                            if (!i && this._firstPT && (!1 !== this.vars.lazy && this._duration || this.vars.lazy && !this._duration)) return this._time = this._totalTime = s, this._rawPrevTime = u, N.push(this), void(this._lazy = [e, t]);
                            this._time && !n ? this.ratio = this._ease.getRatio(this._time / l) : n && this._ease._calcEnd && (this.ratio = this._ease.getRatio(0 === this._time ? 0 : 1))
                        }
                        for (!1 !== this._lazy && (this._lazy = !1), this._active || !this._paused && this._time !== s && e >= 0 && (this._active = !0), 0 === s && (this._startAt && (e >= 0 ? this._startAt.render(e, t, i) : r || (r = "_dummyGS")), this.vars.onStart && (0 === this._time && 0 !== l || t || this._callback("onStart"))), o = this._firstPT; o;) o.f ? o.t[o.p](o.c * this.ratio + o.s) : o.t[o.p] = o.c * this.ratio + o.s, o = o._next;
                        this._onUpdate && (e < 0 && this._startAt && -1e-4 !== e && this._startAt.render(e, t, i), t || (this._time !== s || n || i) && this._callback("onUpdate")), r && (this._gc && !i || (e < 0 && this._startAt && !this._onUpdate && -1e-4 !== e && this._startAt.render(e, t, i), n && (this._timeline.autoRemoveChildren && this._enabled(!1, !1), this._active = !1), !t && this.vars[r] && this._callback(r), 0 === l && 1e-10 === this._rawPrevTime && 1e-10 !== a && (this._rawPrevTime = 0)))
                    }
                }, s._kill = function(e, t, i) {
                    if ("all" === e && (e = null), null == e && (null == t || t === this.target)) return this._lazy = !1, this._enabled(!1, !1);
                    t = "string" != typeof t ? t || this._targets || this.target : C.selector(t) || t;
                    var n, r, o, a, s, l, u, c, h, p = i && this._time && i._startTime === this._startTime && this._timeline === i._timeline;
                    if ((d(t) || M(t)) && "number" != typeof t[0])
                        for (n = t.length; --n > -1;) this._kill(e, t[n], i) && (l = !0);
                    else {
                        if (this._targets) {
                            for (n = this._targets.length; --n > -1;)
                                if (t === this._targets[n]) {
                                    s = this._propLookup[n] || {}, this._overwrittenProps = this._overwrittenProps || [], r = this._overwrittenProps[n] = e ? this._overwrittenProps[n] || {} : "all";
                                    break
                                }
                        } else {
                            if (t !== this.target) return !1;
                            s = this._propLookup, r = this._overwrittenProps = e ? this._overwrittenProps || {} : "all"
                        }
                        if (s) {
                            if (u = e || s, c = e !== r && "all" !== r && e !== s && ("object" != typeof e || !e._tempKill), i && (C.onOverwrite || this.vars.onOverwrite)) {
                                for (o in u) s[o] && (h || (h = []), h.push(o));
                                if ((h || !e) && !Q(this, i, t, h)) return !1
                            }
                            for (o in u)(a = s[o]) && (p && (a.f ? a.t[a.p](a.s) : a.t[a.p] = a.s, l = !0), a.pg && a.t._kill(u) && (l = !0), a.pg && 0 !== a.t._overwriteProps.length || (a._prev ? a._prev._next = a._next : a === this._firstPT && (this._firstPT = a._next), a._next && (a._next._prev = a._prev), a._next = a._prev = null), delete s[o]), c && (r[o] = 1);
                            !this._firstPT && this._initted && this._enabled(!1, !1)
                        }
                    }
                    return l
                }, s.invalidate = function() {
                    return this._notifyPluginsOfEnabled && C._onPluginEvent("_onDisable", this), this._firstPT = this._overwrittenProps = this._startAt = this._onUpdate = null, this._notifyPluginsOfEnabled = this._active = this._lazy = !1, this._propLookup = this._targets ? {} : [], O.prototype.invalidate.call(this), this.vars.immediateRender && (this._time = -1e-10, this.render(Math.min(0, -this._delay))), this
                }, s._enabled = function(e, t) {
                    if (u || l.wake(), e && this._gc) {
                        var i, n = this._targets;
                        if (n)
                            for (i = n.length; --i > -1;) this._siblings[i] = $(n[i], this, !0);
                        else this._siblings = $(this.target, this, !0)
                    }
                    return O.prototype._enabled.call(this, e, t), !(!this._notifyPluginsOfEnabled || !this._firstPT) && C._onPluginEvent(e ? "_onEnable" : "_onDisable", this)
                }, C.to = function(e, t, i) {
                    return new C(e, t, i)
                }, C.from = function(e, t, i) {
                    return i.runBackwards = !0, i.immediateRender = 0 != i.immediateRender, new C(e, t, i)
                }, C.fromTo = function(e, t, i, n) {
                    return n.startAt = i, n.immediateRender = 0 != n.immediateRender && 0 != i.immediateRender, new C(e, t, n)
                }, C.delayedCall = function(e, t, i, n, r) {
                    return new C(t, 0, {
                        delay: e,
                        onComplete: t,
                        onCompleteParams: i,
                        callbackScope: n,
                        onReverseComplete: t,
                        onReverseCompleteParams: i,
                        immediateRender: !1,
                        lazy: !1,
                        useFrames: r,
                        overwrite: 0
                    })
                }, C.set = function(e, t) {
                    return new C(e, 0, t)
                }, C.getTweensOf = function(e, t) {
                    if (null == e) return [];
                    e = "string" != typeof e ? e : C.selector(e) || e;
                    var i, n, r, o;
                    if ((d(e) || M(e)) && "number" != typeof e[0]) {
                        for (i = e.length, n = []; --i > -1;) n = n.concat(C.getTweensOf(e[i], t));
                        for (i = n.length; --i > -1;)
                            for (o = n[i], r = i; --r > -1;) o === n[r] && n.splice(i, 1)
                    } else if (e._gsTweenID)
                        for (n = $(e).concat(), i = n.length; --i > -1;)(n[i]._gc || t && !n[i].isActive()) && n.splice(i, 1);
                    return n || []
                }, C.killTweensOf = C.killDelayedCallsTo = function(e, t, i) {
                    "object" == typeof t && (i = t, t = !1);
                    for (var n = C.getTweensOf(e, t), r = n.length; --r > -1;) n[r]._kill(i, e)
                };
                var te = v("plugins.TweenPlugin", function(e, t) {
                    this._overwriteProps = (e || "").split(","), this._propName = this._overwriteProps[0], this._priority = t || 0,
                        this._super = te.prototype
                }, !0);
                if (s = te.prototype, te.version = "1.19.0", te.API = 2, s._firstPT = null, s._addTween = U, s.setRatio = B, s._kill = function(e) {
                        var t, i = this._overwriteProps,
                            n = this._firstPT;
                        if (null != e[this._propName]) this._overwriteProps = [];
                        else
                            for (t = i.length; --t > -1;) null != e[i[t]] && i.splice(t, 1);
                        for (; n;) null != e[n.n] && (n._next && (n._next._prev = n._prev), n._prev ? (n._prev._next = n._next, n._prev = null) : this._firstPT === n && (this._firstPT = n._next)), n = n._next;
                        return !1
                    }, s._mod = s._roundProps = function(e) {
                        for (var t, i = this._firstPT; i;) t = e[this._propName] || null != i.n && e[i.n.split(this._propName + "_").join("")], t && "function" == typeof t && (2 === i.f ? i.t._applyPT.m = t : i.m = t), i = i._next
                    }, C._onPluginEvent = function(e, t) {
                        var i, n, r, o, a, s = t._firstPT;
                        if ("_onInitAllProps" === e) {
                            for (; s;) {
                                for (a = s._next, n = r; n && n.pr > s.pr;) n = n._next;
                                (s._prev = n ? n._prev : o) ? s._prev._next = s: r = s, (s._next = n) ? n._prev = s : o = s, s = a
                            }
                            s = t._firstPT = r
                        }
                        for (; s;) s.pg && "function" == typeof s.t[e] && s.t[e]() && (i = !0), s = s._next;
                        return i
                    }, te.activate = function(e) {
                        for (var t = e.length; --t > -1;) e[t].API === te.API && (W[(new e[t])._propName] = e[t]);
                        return !0
                    }, g.plugin = function(e) {
                        if (!(e && e.propName && e.init && e.API)) throw "illegal plugin definition.";
                        var t, i = e.propName,
                            n = e.priority || 0,
                            r = e.overwriteProps,
                            o = {
                                init: "_onInitTween",
                                set: "setRatio",
                                kill: "_kill",
                                round: "_mod",
                                mod: "_mod",
                                initAll: "_onInitAllProps"
                            },
                            a = v("plugins." + i.charAt(0).toUpperCase() + i.substr(1) + "Plugin", function() {
                                te.call(this, i, n), this._overwriteProps = r || []
                            }, !0 === e.global),
                            s = a.prototype = new te(i);
                        s.constructor = a, a.API = e.API;
                        for (t in o) "function" == typeof e[t] && (s[o[t]] = e[t]);
                        return a.version = e.version, te.activate([a]), a
                    }, o = e._gsQueue) {
                    for (a = 0; a < o.length; a++) o[a]();
                    for (s in _) _[s].func || e.console.log("GSAP encountered missing dependency: " + s)
                }
                u = !1
            }
        }("undefined" != typeof module && module.exports && "undefined" != typeof global ? global : this || window), define("com/gsap/TweenMax", function(e) {
            return function() {
                return e.TweenMax
            }
        }(this)), define("game/views/backgrounds", ["require", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "com/gsap/TweenMax", "game/data/gameEvents", "game/utils/miscUtils", "game/data/setupData"], function(e) {
            "use strict";
            var t = e("skbJet/component/gameMsgBus/GameMsgBus"),
                i = e("skbJet/component/gladPixiRenderer/gladPixiRenderer"),
                n = e("com/gsap/TweenMax"),
                r = e("game/data/gameEvents"),
                o = (e("game/utils/miscUtils"), e("game/data/setupData")),
                a = function() {
                    function e() {
                        var e = i.lib._background.sprites;
                        s = e._basegameBackground, l = e._fsBackground, l.pixiContainer.visible = !1
                    }

                    function a(e) {
                        void 0 === e.midFreeSpinsRecovery && (e.midFreeSpinsRecovery = !1);
                        var t = e.midFreeSpinsRecovery ? 0 : o.FREE_SPINS_BG_TRANSITION_TIME,
                            i = e.type === r.SHOW_BASE_GAME,
                            a = s.pixiContainer,
                            u = l.pixiContainer,
                            c = i ? 0 : 1,
                            h = i ? 1 : 0;
                        a.visible = u.visible = !0, a.alpha = i ? 0 : 1, u.alpha = i ? 1 : 0, n.to(u, t, {
                            alpha: c,
                            onComplete: function() {
                                u.visible = !i
                            }
                        }), n.to(a, t, {
                            alpha: h,
                            onComplete: function() {
                                a.visible = i
                            }
                        })
                    }
                    var s, l;
                    this.init = function() {
                        t.subscribe(r.PLATFORM_GAME_INIT, e), t.subscribe(r.SHOW_BASE_GAME, a), t.subscribe(r.SHOW_FREE_SPINS, a)
                    }
                };
            return a.prototype.constructor = a, a
        }),
        function(e) {
            if ("object" == typeof exports && "undefined" != typeof module) module.exports = e();
            else if ("function" == typeof define && define.amd) define("com/pixijs/pixi-particles", [], e);
            else {
                var t;
                t = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this, t.pixiParticles = e()
            }
        }(function() {
            var define, module, exports;
            return function e(t, i, n) {
                function r(a, s) {
                    if (!i[a]) {
                        if (!t[a]) {
                            var l = "function" == typeof require && require;
                            if (!s && l) return l(a, !0);
                            if (o) return o(a, !0);
                            var u = new Error("Cannot find module '" + a + "'");
                            throw u.code = "MODULE_NOT_FOUND", u
                        }
                        var c = i[a] = {
                            exports: {}
                        };
                        t[a][0].call(c.exports, function(e) {
                            var i = t[a][1][e];
                            return r(i || e)
                        }, c, c.exports, e, t, i, n)
                    }
                    return i[a].exports
                }
                for (var o = "function" == typeof require && require, a = 0; a < n.length; a++) r(n[a]);
                return r
            }({
                1: [function(e, t, i) {
                    "use strict";
                    var n = e("./ParticleUtils"),
                        r = e("./Particle"),
                        o = PIXI.Texture,
                        a = function(e) {
                            r.call(this, e), this.textures = null, this.duration = 0, this.framerate = 0, this.elapsed = 0, this.loop = !1
                        },
                        s = r.prototype,
                        l = a.prototype = Object.create(s);
                    l.init = function() {
                        this.Particle_init(), this.elapsed = 0, this.framerate < 0 && (this.duration = this.maxLife, this.framerate = this.textures.length / this.duration)
                    }, l.applyArt = function(e) {
                        this.textures = e.textures, this.framerate = e.framerate, this.duration = e.duration, this.loop = e.loop
                    }, l.update = function(e) {
                        if (this.Particle_update(e) >= 0) {
                            this.elapsed += e, this.elapsed > this.duration && (this.loop ? this.elapsed = this.elapsed % this.duration : this.elapsed = this.duration - 1e-6);
                            var t = this.elapsed * this.framerate + 1e-7 | 0;
                            this.texture = this.textures[t] || n.EMPTY_TEXTURE
                        }
                    }, l.Particle_destroy = r.prototype.destroy, l.destroy = function() {
                        this.Particle_destroy(), this.textures = null
                    }, a.parseArt = function(e) {
                        var t, i, n, r, a, s, l = [];
                        for (t = 0; t < e.length; ++t) {
                            for (i = e[t], e[t] = l = {}, l.textures = s = [], r = i.textures, n = 0; n < r.length; ++n)
                                if ("string" == typeof(a = r[n])) s.push(o.fromImage(a));
                                else if (a instanceof o) s.push(a);
                            else {
                                var u = a.count || 1;
                                for (a = "string" == typeof a.texture ? o.fromImage(a.texture) : a.texture; u > 0; --u) s.push(a)
                            }
                            "matchLife" == i.framerate ? (l.framerate = -1, l.duration = 0, l.loop = !1) : (l.loop = !!i.loop, l.framerate = i.framerate > 0 ? i.framerate : 60, l.duration = s.length / l.framerate)
                        }
                        return e
                    }, t.exports = a
                }, {
                    "./Particle": 3,
                    "./ParticleUtils": 4
                }],
                2: [function(e, t, i) {
                    "use strict";
                    var n = e("./ParticleUtils"),
                        r = e("./Particle"),
                        o = PIXI.particles.ParticleContainer || PIXI.ParticleContainer,
                        a = PIXI.ticker.shared,
                        s = function(e, t, i) {
                            this._particleConstructor = r, this.particleImages = null, this.startAlpha = 1, this.endAlpha = 1, this.startSpeed = 0, this.endSpeed = 0, this.minimumSpeedMultiplier = 1, this.acceleration = null, this.maxSpeed = NaN, this.startScale = 1, this.endScale = 1, this.minimumScaleMultiplier = 1, this.startColor = null, this.endColor = null, this.minLifetime = 0, this.maxLifetime = 0, this.minStartRotation = 0, this.maxStartRotation = 0, this.noRotation = !1, this.minRotationSpeed = 0, this.maxRotationSpeed = 0, this.particleBlendMode = 0, this.customEase = null, this.extraData = null, this._frequency = 1, this.maxParticles = 1e3, this.emitterLifetime = -1, this.spawnPos = null, this.spawnType = null, this._spawnFunc = null, this.spawnRect = null, this.spawnCircle = null, this.particlesPerWave = 1, this.particleSpacing = 0, this.angleStart = 0, this.rotation = 0, this.ownerPos = null, this._prevEmitterPos = null, this._prevPosIsValid = !1, this._posChanged = !1, this._parentIsPC = !1, this._parent = null, this.addAtBack = !1, this.particleCount = 0, this._emit = !1, this._spawnTimer = 0, this._emitterLife = -1, this._activeParticlesFirst = null, this._activeParticlesLast = null, this._poolFirst = null, this._origConfig = null, this._origArt = null, this._autoUpdate = !1, this._destroyWhenComplete = !1, this.parent = e, t && i && this.init(t, i), this.recycle = this.recycle, this.update = this.update, this.rotate = this.rotate, this.updateSpawnPos = this.updateSpawnPos, this.updateOwnerPos = this.updateOwnerPos
                        },
                        l = s.prototype = {},
                        u = new PIXI.Point;
                    Object.defineProperty(l, "frequency", {
                        get: function() {
                            return this._frequency
                        },
                        set: function(e) {
                            this._frequency = "number" == typeof e && e > 0 ? e : 1
                        }
                    }), Object.defineProperty(l, "particleConstructor", {
                        get: function() {
                            return this._particleConstructor
                        },
                        set: function(e) {
                            if (e != this._particleConstructor) {
                                this._particleConstructor = e, this.cleanup();
                                for (var t = this._poolFirst; t; t = t.next) t.destroy();
                                this._poolFirst = null, this._origConfig && this._origArt && this.init(this._origArt, this._origConfig)
                            }
                        }
                    }), Object.defineProperty(l, "parent", {
                        get: function() {
                            return this._parent
                        },
                        set: function(e) {
                            if (this._parentIsPC)
                                for (var t = this._poolFirst; t; t = t.next) t.parent && t.parent.removeChild(t);
                            this.cleanup(), this._parent = e, this._parentIsPC = o && e && e instanceof o
                        }
                    }), l.init = function(e, t) {
                        if (e && t) {
                            this.cleanup(), this._origConfig = t, this._origArt = e, e = Array.isArray(e) ? e.slice() : [e];
                            var i = this._particleConstructor;
                            this.particleImages = i.parseArt ? i.parseArt(e) : e, t.alpha ? (this.startAlpha = t.alpha.start, this.endAlpha = t.alpha.end) : this.startAlpha = this.endAlpha = 1, t.speed ? (this.startSpeed = t.speed.start, this.endSpeed = t.speed.end, this.minimumSpeedMultiplier = t.speed.minimumSpeedMultiplier || 1) : (this.minimumSpeedMultiplier = 1, this.startSpeed = this.endSpeed = 0);
                            var r = t.acceleration;
                            r && (r.x || r.y) ? (this.endSpeed = this.startSpeed, this.acceleration = new PIXI.Point(r.x, r.y), this.maxSpeed = t.maxSpeed || NaN) : this.acceleration = new PIXI.Point, t.scale ? (this.startScale = t.scale.start, this.endScale = t.scale.end, this.minimumScaleMultiplier = t.scale.minimumScaleMultiplier || 1) : this.startScale = this.endScale = this.minimumScaleMultiplier = 1, t.color && (this.startColor = n.hexToRGB(t.color.start), t.color.start != t.color.end ? this.endColor = n.hexToRGB(t.color.end) : this.endColor = null), t.startRotation ? (this.minStartRotation = t.startRotation.min, this.maxStartRotation = t.startRotation.max) : this.minStartRotation = this.maxStartRotation = 0, t.noRotation && (this.minStartRotation || this.maxStartRotation) ? this.noRotation = !!t.noRotation : this.noRotation = !1, t.rotationSpeed ? (this.minRotationSpeed = t.rotationSpeed.min, this.maxRotationSpeed = t.rotationSpeed.max) : this.minRotationSpeed = this.maxRotationSpeed = 0, this.minLifetime = t.lifetime.min, this.maxLifetime = t.lifetime.max, this.particleBlendMode = n.getBlendMode(t.blendMode), t.ease ? this.customEase = "function" == typeof t.ease ? t.ease : n.generateEase(t.ease) : this.customEase = null, i.parseData ? this.extraData = i.parseData(t.extraData) : this.extraData = t.extraData || null, this.spawnRect = this.spawnCircle = null, this.particlesPerWave = 1, this.particleSpacing = 0, this.angleStart = 0;
                            var o;
                            switch (t.spawnType) {
                                case "rect":
                                    this.spawnType = "rect", this._spawnFunc = this._spawnRect;
                                    var a = t.spawnRect;
                                    this.spawnRect = new PIXI.Rectangle(a.x, a.y, a.w, a.h);
                                    break;
                                case "circle":
                                    this.spawnType = "circle", this._spawnFunc = this._spawnCircle, o = t.spawnCircle, this.spawnCircle = new PIXI.Circle(o.x, o.y, o.r);
                                    break;
                                case "ring":
                                    this.spawnType = "ring", this._spawnFunc = this._spawnRing, o = t.spawnCircle, this.spawnCircle = new PIXI.Circle(o.x, o.y, o.r), this.spawnCircle.minRadius = o.minR;
                                    break;
                                case "burst":
                                    this.spawnType = "burst", this._spawnFunc = this._spawnBurst, this.particlesPerWave = t.particlesPerWave, this.particleSpacing = t.particleSpacing, this.angleStart = t.angleStart ? t.angleStart : 0;
                                    break;
                                case "point":
                                    this.spawnType = "point", this._spawnFunc = this._spawnPoint;
                                    break;
                                default:
                                    this.spawnType = "point", this._spawnFunc = this._spawnPoint
                            }
                            this.frequency = t.frequency, this.emitterLifetime = t.emitterLifetime || -1, this.maxParticles = t.maxParticles > 0 ? t.maxParticles : 1e3, this.addAtBack = !!t.addAtBack, this.rotation = 0, this.ownerPos = new PIXI.Point, this.spawnPos = new PIXI.Point(t.pos.x, t.pos.y), this._prevEmitterPos = this.spawnPos.clone(), this._prevPosIsValid = !1, this._spawnTimer = 0, this.emit = void 0 === t.emit || !!t.emit, this.autoUpdate = void 0 !== t.autoUpdate && !!t.autoUpdate
                        }
                    }, l.recycle = function(e) {
                        e.next && (e.next.prev = e.prev), e.prev && (e.prev.next = e.next), e == this._activeParticlesLast && (this._activeParticlesLast = e.prev), e == this._activeParticlesFirst && (this._activeParticlesFirst = e.next), e.prev = null, e.next = this._poolFirst, this._poolFirst = e, this._parentIsPC ? (e.alpha = 0, e.visible = !1) : e.parent && e.parent.removeChild(e), --this.particleCount
                    }, l.rotate = function(e) {
                        if (this.rotation != e) {
                            var t = e - this.rotation;
                            this.rotation = e, n.rotatePoint(t, this.spawnPos), this._posChanged = !0
                        }
                    }, l.updateSpawnPos = function(e, t) {
                        this._posChanged = !0, this.spawnPos.x = e, this.spawnPos.y = t
                    }, l.updateOwnerPos = function(e, t) {
                        this._posChanged = !0, this.ownerPos.x = e, this.ownerPos.y = t
                    }, l.resetPositionTracking = function() {
                        this._prevPosIsValid = !1
                    }, Object.defineProperty(l, "emit", {
                        get: function() {
                            return this._emit
                        },
                        set: function(e) {
                            this._emit = !!e, this._emitterLife = this.emitterLifetime
                        }
                    }), Object.defineProperty(l, "autoUpdate", {
                        get: function() {
                            return this._autoUpdate
                        },
                        set: function(e) {
                            this._autoUpdate && !e ? a.remove(this.update, this) : !this._autoUpdate && e && a.add(this.update, this), this._autoUpdate = !!e
                        }
                    }), l.playOnceAndDestroy = function() {
                        this.autoUpdate = !0, this.emit = !0, this._destroyWhenComplete = !0
                    }, l.update = function(e) {
                        if (this._autoUpdate && (e = e / PIXI.settings.TARGET_FPMS / 1e3), this._parent) {
                            var t, i, n;
                            for (i = this._activeParticlesFirst; i; i = n) n = i.next, i.update(e);
                            var r, o;
                            this._prevPosIsValid && (r = this._prevEmitterPos.x, o = this._prevEmitterPos.y);
                            var a = this.ownerPos.x + this.spawnPos.x,
                                s = this.ownerPos.y + this.spawnPos.y;
                            if (this._emit)
                                for (this._spawnTimer -= e; this._spawnTimer <= 0;) {
                                    if (this._emitterLife > 0 && (this._emitterLife -= this._frequency, this._emitterLife <= 0)) {
                                        this._spawnTimer = 0, this._emitterLife = 0, this.emit = !1;
                                        break
                                    }
                                    if (this.particleCount >= this.maxParticles) this._spawnTimer += this._frequency;
                                    else {
                                        var l;
                                        if (l = this.minLifetime == this.maxLifetime ? this.minLifetime : Math.random() * (this.maxLifetime - this.minLifetime) + this.minLifetime, -this._spawnTimer < l) {
                                            var u, c;
                                            if (this._prevPosIsValid && this._posChanged) {
                                                var h = 1 + this._spawnTimer / e;
                                                u = (a - r) * h + r, c = (s - o) * h + o
                                            } else u = a, c = s;
                                            t = 0;
                                            for (var p = Math.min(this.particlesPerWave, this.maxParticles - this.particleCount); t < p; ++t) {
                                                var f, d;
                                                if (this._poolFirst ? (f = this._poolFirst, this._poolFirst = this._poolFirst.next, f.next = null) : f = new this.particleConstructor(this), this.particleImages.length > 1 ? f.applyArt(this.particleImages.random()) : f.applyArt(this.particleImages[0]), f.startAlpha = this.startAlpha, f.endAlpha = this.endAlpha, 1 != this.minimumSpeedMultiplier ? (d = Math.random() * (1 - this.minimumSpeedMultiplier) + this.minimumSpeedMultiplier, f.startSpeed = this.startSpeed * d, f.endSpeed = this.endSpeed * d) : (f.startSpeed = this.startSpeed, f.endSpeed = this.endSpeed), f.acceleration.x = this.acceleration.x, f.acceleration.y = this.acceleration.y, f.maxSpeed = this.maxSpeed, 1 != this.minimumScaleMultiplier ? (d = Math.random() * (1 - this.minimumScaleMultiplier) + this.minimumScaleMultiplier, f.startScale = this.startScale * d, f.endScale = this.endScale * d) : (f.startScale = this.startScale, f.endScale = this.endScale), f.startColor = this.startColor, f.endColor = this.endColor, this.minRotationSpeed == this.maxRotationSpeed ? f.rotationSpeed = this.minRotationSpeed : f.rotationSpeed = Math.random() * (this.maxRotationSpeed - this.minRotationSpeed) + this.minRotationSpeed, f.noRotation = this.noRotation, f.maxLife = l, f.blendMode = this.particleBlendMode, f.ease = this.customEase, f.extraData = this.extraData, this._spawnFunc(f, u, c, t), f.init(), f.update(-this._spawnTimer), this._parentIsPC && f.parent) {
                                                    var _ = this._parent.children;
                                                    if (_[0] == f) _.shift();
                                                    else if (_[_.length - 1] == f) _.pop();
                                                    else {
                                                        var m = _.indexOf(f);
                                                        _.splice(m, 1)
                                                    }
                                                    this.addAtBack ? _.unshift(f) : _.push(f)
                                                } else this.addAtBack ? this._parent.addChildAt(f, 0) : this._parent.addChild(f);
                                                this._activeParticlesLast ? (this._activeParticlesLast.next = f, f.prev = this._activeParticlesLast, this._activeParticlesLast = f) : this._activeParticlesLast = this._activeParticlesFirst = f, ++this.particleCount
                                            }
                                        }
                                        this._spawnTimer += this._frequency
                                    }
                                }
                            this._posChanged && (this._prevEmitterPos.x = a, this._prevEmitterPos.y = s, this._prevPosIsValid = !0, this._posChanged = !1), !this._destroyWhenComplete || this._emit || this._activeParticlesFirst || this.destroy()
                        }
                    }, l._spawnPoint = function(e, t, i) {
                        this.minStartRotation == this.maxStartRotation ? e.rotation = this.minStartRotation + this.rotation : e.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + this.minStartRotation + this.rotation, e.position.x = t, e.position.y = i
                    }, l._spawnRect = function(e, t, i) {
                        this.minStartRotation == this.maxStartRotation ? e.rotation = this.minStartRotation + this.rotation : e.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + this.minStartRotation + this.rotation, u.x = Math.random() * this.spawnRect.width + this.spawnRect.x, u.y = Math.random() * this.spawnRect.height + this.spawnRect.y, 0 !== this.rotation && n.rotatePoint(this.rotation, u), e.position.x = t + u.x, e.position.y = i + u.y
                    }, l._spawnCircle = function(e, t, i) {
                        this.minStartRotation == this.maxStartRotation ? e.rotation = this.minStartRotation + this.rotation : e.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + this.minStartRotation + this.rotation, u.x = Math.random() * this.spawnCircle.radius, u.y = 0, n.rotatePoint(360 * Math.random(), u), u.x += this.spawnCircle.x, u.y += this.spawnCircle.y, 0 !== this.rotation && n.rotatePoint(this.rotation, u), e.position.x = t + u.x, e.position.y = i + u.y
                    }, l._spawnRing = function(e, t, i) {
                        var r = this.spawnCircle;
                        this.minStartRotation == this.maxStartRotation ? e.rotation = this.minStartRotation + this.rotation : e.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + this.minStartRotation + this.rotation, r.minRadius == r.radius ? u.x = Math.random() * (r.radius - r.minRadius) + r.minRadius : u.x = r.radius, u.y = 0;
                        var o = 360 * Math.random();
                        e.rotation += o, n.rotatePoint(o, u), u.x += this.spawnCircle.x, u.y += this.spawnCircle.y, 0 !== this.rotation && n.rotatePoint(this.rotation, u), e.position.x = t + u.x, e.position.y = i + u.y
                    }, l._spawnBurst = function(e, t, i, n) {
                        0 === this.particleSpacing ? e.rotation = 360 * Math.random() : e.rotation = this.angleStart + this.particleSpacing * n + this.rotation, e.position.x = t, e.position.y = i
                    }, l.cleanup = function() {
                        var e, t;
                        for (e = this._activeParticlesFirst; e; e = t) t = e.next, this.recycle(e), e.parent && e.parent.removeChild(e);
                        this._activeParticlesFirst = this._activeParticlesLast = null, this.particleCount = 0
                    }, l.destroy = function() {
                        this.autoUpdate = !1, this.cleanup();
                        for (var e, t = this._poolFirst; t; t = e) e = t.next, t.destroy();
                        this._poolFirst = this._parent = this.particleImages = this.spawnPos = this.ownerPos = this.startColor = this.endColor = this.customEase = null
                    }, t.exports = s
                }, {
                    "./Particle": 3,
                    "./ParticleUtils": 4
                }],
                3: [function(e, t, i) {
                    var n = e("./ParticleUtils"),
                        r = PIXI.Sprite,
                        o = function(e) {
                            r.call(this), this.emitter = e, this.anchor.x = this.anchor.y = .5, this.velocity = new PIXI.Point, this.maxLife = 0, this.age = 0, this.ease = null, this.extraData = null, this.startAlpha = 0, this.endAlpha = 0, this.startSpeed = 0, this.endSpeed = 0, this.acceleration = new PIXI.Point, this.maxSpeed = NaN, this.startScale = 0, this.endScale = 0, this.startColor = null, this._sR = 0, this._sG = 0, this._sB = 0, this.endColor = null, this._eR = 0, this._eG = 0, this._eB = 0, this._doAlpha = !1, this._doScale = !1, this._doSpeed = !1, this._doAcceleration = !1, this._doColor = !1, this._doNormalMovement = !1, this._oneOverLife = 0, this.next = null, this.prev = null, this.init = this.init, this.Particle_init = this.Particle_init, this.update = this.update, this.Particle_update = this.Particle_update, this.applyArt = this.applyArt, this.kill = this.kill
                        },
                        a = o.prototype = Object.create(r.prototype);
                    a.init = a.Particle_init = function() {
                        this.age = 0, this.velocity.x = this.startSpeed, this.velocity.y = 0, n.rotatePoint(this.rotation, this.velocity), this.noRotation ? this.rotation = 0 : this.rotation *= n.DEG_TO_RADS, this.rotationSpeed *= n.DEG_TO_RADS, this.alpha = this.startAlpha, this.scale.x = this.scale.y = this.startScale, this.startColor && (this._sR = this.startColor[0], this._sG = this.startColor[1], this._sB = this.startColor[2], this.endColor && (this._eR = this.endColor[0], this._eG = this.endColor[1], this._eB = this.endColor[2])), this._doAlpha = this.startAlpha != this.endAlpha, this._doSpeed = this.startSpeed != this.endSpeed, this._doScale = this.startScale != this.endScale, this._doColor = !!this.endColor, this._doAcceleration = 0 !== this.acceleration.x || 0 !== this.acceleration.y, this._doNormalMovement = this._doSpeed || 0 !== this.startSpeed || this._doAcceleration, this._oneOverLife = 1 / this.maxLife, this.tint = n.combineRGBComponents(this._sR, this._sG, this._sB), this.visible = !0
                    }, a.applyArt = function(e) {
                        this.texture = e || n.EMPTY_TEXTURE
                    }, a.update = a.Particle_update = function(e) {
                        if (this.age += e, this.age >= this.maxLife) return this.kill(), -1;
                        var t = this.age * this._oneOverLife;
                        if (this.ease && (t = 4 == this.ease.length ? this.ease(t, 0, 1, 1) : this.ease(t)), this._doAlpha && (this.alpha = (this.endAlpha - this.startAlpha) * t + this.startAlpha), this._doScale) {
                            var i = (this.endScale - this.startScale) * t + this.startScale;
                            this.scale.x = this.scale.y = i
                        }
                        if (this._doNormalMovement) {
                            if (this._doSpeed) {
                                var r = (this.endSpeed - this.startSpeed) * t + this.startSpeed;
                                n.normalize(this.velocity), n.scaleBy(this.velocity, r)
                            } else if (this._doAcceleration && (this.velocity.x += this.acceleration.x * e, this.velocity.y += this.acceleration.y * e, this.maxSpeed)) {
                                var o = n.length(this.velocity);
                                o > this.maxSpeed && n.scaleBy(this.velocity, this.maxSpeed / o)
                            }
                            this.position.x += this.velocity.x * e, this.position.y += this.velocity.y * e
                        }
                        if (this._doColor) {
                            var a = (this._eR - this._sR) * t + this._sR,
                                s = (this._eG - this._sG) * t + this._sG,
                                l = (this._eB - this._sB) * t + this._sB;
                            this.tint = n.combineRGBComponents(a, s, l)
                        }
                        return 0 !== this.rotationSpeed ? this.rotation += this.rotationSpeed * e : this.acceleration && !this.noRotation && (this.rotation = Math.atan2(this.velocity.y, this.velocity.x)), t
                    }, a.kill = function() {
                        this.emitter.recycle(this)
                    }, a.Sprite_Destroy = r.prototype.destroy, a.destroy = function() {
                        this.parent && this.parent.removeChild(this), this.Sprite_Destroy && this.Sprite_Destroy(), this.emitter = this.velocity = this.startColor = this.endColor = this.ease = this.next = this.prev = null
                    }, o.parseArt = function(e) {
                        var t;
                        for (t = e.length; t >= 0; --t) "string" == typeof e[t] && (e[t] = PIXI.Texture.fromImage(e[t]));
                        if (n.verbose)
                            for (t = e.length - 1; t > 0; --t)
                                if (e[t].baseTexture != e[t - 1].baseTexture) {
                                    window.console;
                                    break
                                }
                        return e
                    }, o.parseData = function(e) {
                        return e
                    }, t.exports = o
                }, {
                    "./ParticleUtils": 4
                }],
                4: [function(e, t, i) {
                    "use strict";
                    var n = PIXI.BLEND_MODES || PIXI.blendModes,
                        r = PIXI.Texture,
                        o = {};
                    o.verbose = !1;
                    var a = o.DEG_TO_RADS = Math.PI / 180,
                        s = o.EMPTY_TEXTURE = r.EMPTY;
                    s.on = s.destroy = s.once = s.emit = function() {}, o.rotatePoint = function(e, t) {
                        if (e) {
                            e *= a;
                            var i = Math.sin(e),
                                n = Math.cos(e),
                                r = t.x * n - t.y * i,
                                o = t.x * i + t.y * n;
                            t.x = r, t.y = o
                        }
                    }, o.combineRGBComponents = function(e, t, i) {
                        return e << 16 | t << 8 | i
                    }, o.normalize = function(e) {
                        var t = 1 / o.length(e);
                        e.x *= t, e.y *= t
                    }, o.scaleBy = function(e, t) {
                        e.x *= t, e.y *= t
                    }, o.length = function(e) {
                        return Math.sqrt(e.x * e.x + e.y * e.y)
                    }, o.hexToRGB = function(e, t) {
                        t ? t.length = 0 : t = [], "#" == e.charAt(0) ? e = e.substr(1) : 0 === e.indexOf("0x") && (e = e.substr(2));
                        var i;
                        return 8 == e.length && (i = e.substr(0, 2), e = e.substr(2)), t.push(parseInt(e.substr(0, 2), 16)), t.push(parseInt(e.substr(2, 2), 16)), t.push(parseInt(e.substr(4, 2), 16)), i && t.push(parseInt(i, 16)), t
                    }, o.generateEase = function(e) {
                        var t = e.length,
                            i = 1 / t;
                        return function(n) {
                            var r, o, a = t * n | 0;
                            return r = (n - a * i) * t, o = e[a] || e[t - 1], o.s + r * (2 * (1 - r) * (o.cp - o.s) + r * (o.e - o.s))
                        }
                    }, o.getBlendMode = function(e) {
                        if (!e) return n.NORMAL;
                        for (e = e.toUpperCase(); e.indexOf(" ") >= 0;) e = e.replace(" ", "_");
                        return n[e] || n.NORMAL
                    }, t.exports = o
                }, {}],
                5: [function(require, module, exports) {
                    "use strict";
                    var ParticleUtils = require("./ParticleUtils"),
                        Particle = require("./Particle"),
                        PathParticle = function(e) {
                            Particle.call(this, e), this.path = null, this.initialRotation = 0, this.initialPosition = new PIXI.Point, this.movement = 0
                        },
                        s = Particle.prototype,
                        p = PathParticle.prototype = Object.create(s),
                        helperPoint = new PIXI.Point;
                    p.init = function() {
                        this.initialRotation = this.rotation, this.Particle_init(), this.path = this.extraData.path, this._doNormalMovement = !this.path, this.movement = 0, this.initialPosition.x = this.position.x, this.initialPosition.y = this.position.y
                    };
                    for (var MATH_FUNCS = ["pow", "sqrt", "abs", "floor", "round", "ceil", "E", "PI", "sin", "cos", "tan", "asin", "acos", "atan", "atan2", "log"], WHITELISTER = "[01234567890\\.\\*\\-\\+\\/\\(\\)x ,]", index = MATH_FUNCS.length - 1; index >= 0; --index) WHITELISTER += "|" + MATH_FUNCS[index];
                    WHITELISTER = new RegExp(WHITELISTER, "g");
                    var parsePath = function(pathString) {
                        for (var rtn, matches = pathString.match(WHITELISTER), i = matches.length - 1; i >= 0; --i) MATH_FUNCS.indexOf(matches[i]) >= 0 && (matches[i] = "Math." + matches[i]);
                        return pathString = matches.join(""), eval("rtn = function(x){ return " + pathString + "; };"), rtn
                    };
                    p.update = function(e) {
                        var t = this.Particle_update(e);
                        if (t >= 0 && this.path) {
                            var i = (this.endSpeed - this.startSpeed) * t + this.startSpeed;
                            this.movement += i * e, helperPoint.x = this.movement, helperPoint.y = this.path(this.movement), ParticleUtils.rotatePoint(this.initialRotation, helperPoint), this.position.x = this.initialPosition.x + helperPoint.x, this.position.y = this.initialPosition.y + helperPoint.y
                        }
                    }, p.Particle_destroy = Particle.prototype.destroy, p.destroy = function() {
                        this.Particle_destroy(), this.path = this.initialPosition = null
                    }, PathParticle.parseArt = function(e) {
                        return Particle.parseArt(e)
                    }, PathParticle.parseData = function(e) {
                        var t = {};
                        if (e && e.path) try {
                            t.path = parsePath(e.path)
                        } catch (e) {
                            ParticleUtils.verbose, t.path = null
                        } else ParticleUtils.verbose, t.path = null;
                        return t
                    }, module.exports = PathParticle
                }, {
                    "./Particle": 3,
                    "./ParticleUtils": 4
                }],
                6: [function(e, t, i) {}, {}],
                7: [function(e, t, i) {
                    e("./polyfills.js"), i.ParticleUtils = e("./ParticleUtils.js"), i.Particle = e("./Particle.js"), i.Emitter = e("./Emitter.js"), i.PathParticle = e("./PathParticle.js"), i.AnimatedParticle = e("./AnimatedParticle.js"), e("./deprecation.js")
                }, {
                    "./AnimatedParticle.js": 1,
                    "./Emitter.js": 2,
                    "./Particle.js": 3,
                    "./ParticleUtils.js": 4,
                    "./PathParticle.js": 5,
                    "./deprecation.js": 6,
                    "./polyfills.js": 8
                }],
                8: [function(e, t, i) {
                    Array.prototype.shuffle || Object.defineProperty(Array.prototype, "shuffle", {
                        enumerable: !1,
                        writable: !1,
                        value: function() {
                            for (var e, t, i = this.length; i; e = Math.floor(Math.random() * i), t = this[--i], this[i] = this[e], this[e] = t);
                            return this
                        }
                    }), Array.prototype.random || Object.defineProperty(Array.prototype, "random", {
                        enumerable: !1,
                        writable: !1,
                        value: function() {
                            return this[Math.floor(Math.random() * this.length)]
                        }
                    })
                }, {}],
                9: [function(e, t, i) {
                    "use strict";
                    var n = "undefined" != typeof window ? window : GLOBAL;
                    if (n.PIXI.particles || (n.PIXI.particles = {}), void 0 !== t && t.exports) "undefined" == typeof PIXI && e("pixi.js"), t.exports = n.PIXI.particles || r;
                    else if ("undefined" == typeof PIXI) throw "pixi-particles requires pixi.js to be loaded first";
                    var r = e("./particles");
                    for (var o in r) n.PIXI.particles[o] = r[o]
                }, {
                    "./particles": 7,
                    "pixi.js": void 0
                }]
            }, {}, [9])(9)
        }), define("game/utils/textUtils", ["require", "com/pixijs/pixi", "game/utils/miscUtils"], function(e) {
            function t(e, t, i, n, r) {
                void 0 === i && (i = e.style.align), void 0 === n && (n = !1), void 0 === r && (r = e.style.wordWrapWidth);
                if (void 0 === e.originalSettings && (e.originalSettings = {
                        align: e.style.align,
                        padding: 30,
                        fontSize: e.style.fontSize,
                        x: "center" === e.style.align ? e.x + (e.width >> 1) : "right" === e.style.align ? e.x + e.width : e.x,
                        y: e.y,
                        width: e.width,
                        height: e.height
                    }), e.style.align = e.originalSettings.align, e.style.fontSize = e.originalSettings.fontSize, e.style.padding = e.originalSettings.padding, e.x = e.originalSettings.x, e.y = e.originalSettings.y, e.cacheAsBitmap = !1, e.text = t, !1 === n) {
                    for (;
                        (e.width >= r || e.height >= e.originalSettings.height) && e.style.fontSize > 1;) e.style.fontSize--;
                    e.style.fontSize <= 1 && o.log("Something went wrong with text resizing! text:'" + t + "'", "WARNING")
                }
                "center" === e.style.align ? e.x = e.originalSettings.x - (e.width >> 1) : "right" === e.style.align ? e.x = e.originalSettings.x - e.width : e.x = e.originalSettings.x
            }

            function i(e, t, i) {
                for (void 0 === i && (i = !0), e.style.originalSize || (e.style.originalSize = e.style.fontSize, e.style.originalCentre = e.x + (e.width >> 1)), e.style.fontSize = e.style.originalSize; e.width >= t && e.style.fontSize > 1;) e.style.fontSize--;
                i && (e.x = e.style.originalCentre - (e.width >> 1))
            }

            function n(e, t, i, n, o, a, s, l, u) {
                void 0 === i && (i = [0, 0]), void 0 === n && (n = 12), void 0 === o && (o = 4213081), void 0 === a ? a = "Oswald, Arial, sans-serif" : a += ", Arial, sans-serif", void 0 === s && (s = "center"), void 0 === l && (l = 0), void 0 === u && (u = "#000000");
                var c = new r.TextStyle({
                        fontFamily: a,
                        fontSize: n,
                        fontStyle: "normal",
                        fontWeight: 100,
                        fill: o,
                        align: "center",
                        padding: 50,
                        stroke: u,
                        strokeThickness: l,
                        lineJoin: "round",
                        lineHeight: n,
                        align: s
                    }),
                    h = new r.Text(t, c);
                return e.addChild(h), h.x = i[0], h.y = i[1], h
            }
            var r = e("com/pixijs/pixi"),
                o = e("game/utils/miscUtils");
            return {
                textFitWidth: i,
                setResizeAlign: t,
                addBasicText: n
            }
        }), define("game/utils/sdParticles", ["require", "game/utils/miscUtils"], function(e) {
            function t(e, t, i, n, r, o) {
                var a, s = [];
                if (o === this.BIG_WIN_COINS) {
                    for (var l = 0; l < 13; l++) {
                        var u = l + 1;
                        u < 10 && (u = "0" + u), s.push(t.Texture.fromFrame(r + "Coin-Spin-" + u))
                    }
                    a = new t.particles.Emitter(e, {
                        frameRate: 10,
                        loop: !0,
                        textures: s
                    }, i), a.particleConstructor = t.particles.AnimatedParticle
                } else s.push(t.Texture.fromFrame(o === this.FRAME ? r + "Solar-Star-2" : r + "Solar-Star-1")), a = new t.particles.Emitter(e, s, i);
                var c = n.getTicker(),
                    h = !0,
                    p = function() {
                        h && a.update(.001 * c.elapsedMS)
                    };
                return c.add(p), a.killSDEmitter = function() {
                    h = !1, a.destroy()
                }, a
            }
            e("game/utils/miscUtils");
            return {
                SOLAR_DISC1: "solarDisc1",
                SOLAR_DISC2: "solarDisc2",
                FRAME: "frame",
                BIG_WIN_COINS: "coins",
                createEmitter: t
            }
        }), define("game/utils/sdParticleConfigs", [], function() {
            function e() {
                return {
                    alpha: {
                        start: 1,
                        end: 0
                    },
                    scale: {
                        start: 3,
                        end: .3,
                        minimumScaleMultiplier: .5
                    },
                    color: {
                        start: "#ffffff",
                        end: "#ffffff"
                    },
                    speed: {
                        start: 600,
                        end: 600,
                        minimumSpeedMultiplier: .8
                    },
                    acceleration: {
                        x: 0,
                        y: 0
                    },
                    maxSpeed: 0,
                    startRotation: {
                        min: 0,
                        max: 360
                    },
                    noRotation: !0,
                    rotationSpeed: {
                        min: 0,
                        max: 0
                    },
                    lifetime: {
                        min: .6,
                        max: .6
                    },
                    blendMode: "normal",
                    frequency: 1e-4,
                    emitterLifetime: .1,
                    maxParticles: 300,
                    pos: {
                        x: 0,
                        y: 0
                    },
                    addAtBack: !1,
                    spawnType: "circle",
                    spawnCircle: {
                        x: 0,
                        y: 0,
                        r: 0
                    }
                }
            }

            function t() {
                return {
                    alpha: {
                        start: 1,
                        end: .1
                    },
                    scale: {
                        start: 2,
                        end: .3,
                        minimumScaleMultiplier: 1.5
                    },
                    color: {
                        start: "#ffffff",
                        end: "#ffffff"
                    },
                    speed: {
                        start: 600,
                        end: 0,
                        minimumSpeedMultiplier: 1
                    },
                    acceleration: {
                        x: 0,
                        y: 0
                    },
                    maxSpeed: 0,
                    startRotation: {
                        min: 0,
                        max: 360
                    },
                    noRotation: !0,
                    rotationSpeed: {
                        min: 0,
                        max: 0
                    },
                    lifetime: {
                        min: 3,
                        max: 2.8
                    },
                    blendMode: "normal",
                    frequency: .001,
                    emitterLifetime: .5,
                    maxParticles: 4e3,
                    pos: {
                        x: 0,
                        y: 0
                    },
                    addAtBack: !1,
                    spawnType: "ring",
                    spawnCircle: {
                        x: 0,
                        y: 0,
                        r: 0,
                        minR: 0
                    }
                }
            }

            function i() {
                return {
                    alpha: {
                        start: 1,
                        end: .8
                    },
                    scale: {
                        start: 2,
                        end: .3,
                        minimumScaleMultiplier: 1.5
                    },
                    color: {
                        start: "#ffffff",
                        end: "#ffffff"
                    },
                    speed: {
                        start: 1500,
                        end: 700,
                        minimumSpeedMultiplier: 1
                    },
                    acceleration: {
                        x: 0,
                        y: 0
                    },
                    maxSpeed: 0,
                    startRotation: {
                        min: 0,
                        max: 360
                    },
                    noRotation: !0,
                    rotationSpeed: {
                        min: 0,
                        max: 0
                    },
                    lifetime: {
                        min: .8,
                        max: .8
                    },
                    blendMode: "normal",
                    frequency: 3e-4,
                    emitterLifetime: .25,
                    maxParticles: 4e3,
                    pos: {
                        x: 0,
                        y: 0
                    },
                    addAtBack: !1,
                    spawnType: "ring",
                    spawnCircle: {
                        x: 0,
                        y: 0,
                        r: 0,
                        minR: 0
                    }
                }
            }

            function n() {
                return {
                    alpha: {
                        start: 1,
                        end: 1
                    },
                    scale: {
                        start: .8,
                        end: 1.5,
                        minimumScaleMultiplier: 1
                    },
                    color: {
                        start: "#ffffff",
                        end: "#ffffff"
                    },
                    speed: {
                        start: 1100,
                        end: 1500,
                        minimumSpeedMultiplier: 1
                    },
                    acceleration: {
                        x: 0,
                        y: 1e3
                    },
                    maxSpeed: 0,
                    startRotation: {
                        min: 250,
                        max: 290
                    },
                    noRotation: !1,
                    rotationSpeed: {
                        min: -30,
                        max: 30
                    },
                    lifetime: {
                        min: 6,
                        max: 6
                    },
                    blendMode: "normal",
                    frequency: .15,
                    emitterLifetime: -1,
                    maxParticles: 200,
                    pos: {
                        x: 0,
                        y: 0
                    },
                    addAtBack: !1,
                    spawnType: "circle",
                    spawnCircle: {
                        x: 0,
                        y: 0,
                        r: 0
                    }
                }
            }
            return {
                solarDisc1: e,
                solarDisc2: t,
                solarDisc3: i,
                coinFountain: n
            }
        }), define("game/views/reels/reelFrames", ["require", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "com/gsap/TweenMax", "com/pixijs/pixi", "com/pixijs/pixi-particles", "game/data/gameEvents", "game/data/stateEvents", "game/data/setupData", "game/data/gameDataModel", "game/utils/miscUtils", "game/utils/textUtils", "game/utils/sdParticles", "game/utils/sdParticleConfigs"], function(e) {
            "use strict";
            var t = e("skbJet/component/gameMsgBus/GameMsgBus"),
                i = e("skbJet/component/gladPixiRenderer/gladPixiRenderer"),
                n = e("com/gsap/TweenMax"),
                r = e("com/pixijs/pixi"),
                o = (e("com/pixijs/pixi-particles"), e("game/data/gameEvents")),
                a = e("game/data/stateEvents"),
                s = e("game/data/setupData"),
                l = e("game/data/gameDataModel"),
                u = e("game/utils/miscUtils"),
                c = e("game/utils/textUtils"),
                h = e("game/utils/sdParticles"),
                p = e("game/utils/sdParticleConfigs"),
                f = function() {
                    function e() {
                        T = i.lib._reelFore.sprites._baseReelFrame, w = i.lib._reelBack.sprites._baseReelBG, E = i.lib._reelFore.sprites._baseFrameCoins, P = i.lib._reelFore.sprites._fsReelFrame, R = i.lib._reelBack.sprites._fsReelBG, P.pixiContainer.visible = R.pixiContainer.visible = !1, O = i.lib._reelBack.sprites._solarDisc, A = i.lib._reelFore.sprites._logo, I = i.lib._reelBack.sprites._purpleSolarDisc, C = i.lib._reelBack.sprites._normalSolarDisc, M = i.lib._reelBack.sprites._logoSDforAnim, D = i.lib._reelBack.sprites._logoPortraitBack, N = i.lib._reelBack.sprites._logoBetween, L = i.lib._reelBack.sprites._logoPortrait, n.to(I.pixiContainer, 10, {
                            scaleX: 1.1,
                            scaleY: 1.1,
                            ease: window.Linear.easeNone,
                            yoyo: !0,
                            repeat: -1
                        }), n.to(C.pixiContainer, 10, {
                            scaleX: 1.1,
                            scaleY: 1.1,
                            ease: window.Linear.easeNone,
                            yoyo: !0,
                            repeat: -1
                        }), g(), U = [
                            [T, "bg", !1, !1],
                            [w, "bg", !1, !1],
                            [E, "bg", !1, !0],
                            [I, "bg", !0, !1],
                            [P, "fs", !1, !1],
                            [R, "fs", !1, !1],
                            [C, "fs", !0, !1]
                        ];
                        for (var e = N.pixiContainer, t = l.getPrefix(), o = ["Puma-Gold-s", "Bear-Gold-s", "Vase-Gold-s", "Mask-Gold-s", "Key-Gold-s", "Coin-Gold-s"], a = 0; a < o.length; a++) {
                            V.push(u.createMovieClip(t + o[a], 2, 90, 2, .5, !0));
                            var h = V[a];
                            h.loop = !1, h.gotoAndStop(0), h.visible = !1, h.scaleX = h.scaleY = 1.3, h.x = 290 - (h.width >> 1), h.y = -38 - (h.height >> 1), e.addChild(h)
                        }
                        k = new r.Container, e.addChild(k), k.x = 290, k.y = -38, c.addBasicText(i.lib._reelFore.pixiContainer, s.VERSION, [i.getSize().width - 40, 10], 12, 16777215).visible = !1;
                        for (var a = 0; a < W; a++) j.push(u.spriteFromTexture("D-T-Solar-Star-1", "centre")), i.lib._reelFore.pixiContainer.addChild(j[a]), j[a].visible = !1;
                        _()
                    }

                    function f(e) {
                        if (!B) {
                            var t = V[e.symbolNum];
                            t && (t.gotoAndPlay(1), t.visible = !0, t.alpha = 0, n.to(t, .5, {
                                alpha: 1,
                                onComplete: function() {
                                    n.to(t, .5, {
                                        alpha: 0,
                                        delay: 2.5,
                                        onComplete: function() {
                                            t.visible = !1
                                        }
                                    })
                                }
                            }))
                        }
                    }

                    function d(e) {
                        "BaseGame.beginNewGame" === e.state ? (H = !0, _()) : H = !1
                    }

                    function _() {
                        var e, t, i = 100 * Math.random() < Y[B ? 1 : 0];
                        if (i) {
                            var n = B ? z : X,
                                r = Math.random() * n.length >> 0;
                            r = r > n.length - 1 ? n.length - 1 : r;
                            var o = n[r];
                            if ("r" === o[0]) e = o[1] + (Math.random() * o[3] >> 0), t = o[2] + (Math.random() * o[4] >> 0);
                            else {
                                var a = Math.random() * o[3] >> 0,
                                    s = u.degToRad(360 * Math.random() >> 0);
                                e = o[1] + o[3] + (Math.sin(s) * a >> 0), t = o[2] + o[3] + (Math.cos(s) * a >> 0)
                            }
                            m(e, t)
                        }
                        H && setTimeout(function() {
                            _()
                        }, 50)
                    }

                    function m(e, t) {
                        for (var i, r = 0; r < j.length; r++)
                            if (!j[r].visible) {
                                i = j[r];
                                break
                            }
                        if (void 0 !== i) {
                            i.visible = !0, i.alpha = 0, i.x = e, i.y = t, i.rotation = u.degToRad(360 * Math.random() >> 0);
                            var o = u.degToRad(360 * Math.random() >> 0);
                            n.to(i, 1, {
                                rotation: o,
                                onComplete: function() {
                                    n.killTweensOf(i), i.visible = !1
                                }
                            }), n.to(i, .5, {
                                alpha: 1,
                                yoyo: !0,
                                repeat: 1
                            })
                        }
                    }

                    function g() {
                        if (!F) {
                            F = !0;
                            var e = l.currentGameState === s.FREE_SPINS;
                            n.to(M.pixiContainer, 7, {
                                rotation: u.degToRad(360),
                                ease: e ? window.Linear.easeNone : window.Power1.easeInOut,
                                onComplete: function() {
                                    F = !1, M.pixiContainer.rotation = u.degToRad(0), l.currentGameState === s.FREE_SPINS && g()
                                }
                            })
                        }
                    }

                    function v() {
                        B || (void 0 !== G && null !== G || (G = h.createEmitter(k, r, p.solarDisc1(), i, l.getPrefix())), G.emit = !0, g())
                    }

                    function y(e) {
                        void 0 === e.midFreeSpinsRecovery && (e.midFreeSpinsRecovery = !1);
                        var t = e.type === o.SHOW_BASE_GAME;
                        t || g();
                        for (var i = t ? 1 : 0, n = t ? 0 : 1, r = 0; r < U.length; r++) {
                            var a = "bg" === U[r][1],
                                s = a ? i : n,
                                l = a ? n : i,
                                u = 1 === s;
                            b(U[r][0].pixiContainer, s, l, u, e.midFreeSpinsRecovery, U[r][2], U[r][3])
                        }
                    }

                    function b(e, t, i, r, o, a, l) {
                        var u = o ? 0 : s.FREE_SPINS_BG_TRANSITION_TIME;
                        e.alpha = i, e.visible = a ? !B : !l || B, n.to(e, u, {
                            alpha: t,
                            onComplete: function() {
                                0 === t && (e.visible = !1)
                            }
                        })
                    }

                    function x(e) {
                        B = e.orientation === s.LANDSCAPE, E.pixiContainer.visible = O.pixiContainer.visible = A.pixiContainer.visible = B, I.pixiContainer.visible = C.pixiContainer.visible = D.pixiContainer.visible = L.pixiContainer.visible = M.pixiContainer.visible = !B
                    }
                    var S, T, w, E, P, R, O, A, I, C, M, D, N, L, k, F, B, G, U = [],
                        j = [],
                        W = 20,
                        H = !1,
                        X = [
                            ["r", 350, -50, 380, 120],
                            ["r", 770, -50, 310, 120],
                            ["c", 548, -318, 170]
                        ],
                        z = [
                            ["r", 565, 50, 160, 70],
                            ["r", 745, 50, 130, 70]
                        ],
                        Y = [20, 5],
                        V = [];
                    this.init = function() {
                        S = this, t.subscribe(o.PLATFORM_GAME_INIT, e), t.subscribe(o.SHOW_BASE_GAME, y), t.subscribe(o.SHOW_FREE_SPINS, y), t.subscribe(o.ORIENTATION_CHANGED, x), t.subscribe(o.PORTRAIT_LOGO_FLASH, v), t.subscribe(o.SHOW_LOGO_WILD_SYMBOL, f), t.subscribe(a.STATE_CHANGED, d)
                    }
                };
            return f.prototype.constructor = f, f
        }), define("game/phoenix/phoenixAnimLayer", ["com/pixijs/pixi"], function(e) {
            return function(t, i) {
                function n() {
                    var t = new e.extras.AnimatedSprite([e.Texture.EMPTY]);
                    return t.visible = !1, t.zIndex = 1, t
                }

                function r(n, r) {
                    w[n] = [];
                    for (var a = -1; a < t.options.reels[n].symbolCount + 1; a++) {
                        var s = T[n][a + 1],
                            l = r.spriteRefs[a + 1];
                        l ? (Array.isArray(i[l].textures) ? (s.textures = i[l].textures, s.texture = s.textures[0], s.visible = !0, s.gotoAndStop(0), s.loop = !0) : (s.visible = !0, s.textures = [i[l].textures], s.texture = s.textures[0], s.gotoAndStop(0), s.loop = !0), s.position.x = s.position.rx + i[l].xOffset, s.position.y = s.position.ry + i[l].yOffset, s.zIndex = i[l].zOffset) : s.visible = !1, w[n].push(l), a >= 0 && a < t.options.reels[n].symbolCount && (E[n][a].textures = [e.Texture.EMPTY], E[n][a].texture = e.Texture.EMPTY, E[n][a].visible = !1, E[n][a].gotoAndStop(0), E[n][a].loop = !0)
                    }
                    w[n].pop(), w[n].shift(), o(x), o(S)
                }

                function o(e) {
                    e.children.sort(function(e, t) {
                        return e.zIndex - t.zIndex || t.x - e.x || e.y - t.y
                    })
                }

                function a(t) {
                    var i = [];
                    return Array.isArray(t) ? t.forEach(function(t) {
                        i.push(e.utils.TextureCache[t])
                    }) : i.push(e.utils.TextureCache[t]), i
                }

                function s(e, t, i, n, r, o) {
                    F.push({
                        location: e,
                        layer: n
                    });
                    var s;
                    0 === n ? s = P[O[e]] : 1 === n && (s = R[O[e]]), s && (t ? (s.visible = !0, s.textures = a(t), s.texture = s.textures[0], r ? (r.x && (s.position.x = s.position.rx + r.x), r.y && (s.position.y = s.position.ry + r.y)) : (s.position.x = s.position.rx, s.position.y = s.position.ry), s.animationSpeed = i, s.loop = !0, o && !1 === o.loop && (s.loop = !1), s.gotoAndStop(0)) : s.visible = !1)
                }

                function l(e, t) {
                    void 0 === t && (t = 0);
                    var i;
                    return 0 === t ? i = P[O[e]] : 1 === t && (i = R[O[e]]), i.textures[0].textureCacheIds
                }

                function u() {
                    F.forEach(function(e) {
                        var t;
                        0 === e.layer ? t = P[O[e.location]] : 1 === e.layer && (t = R[O[e.location]]), t.gotoAndPlay(0)
                    })
                }

                function c() {
                    F.forEach(function(e) {
                        var t;
                        0 === e.layer ? t = P[O[e.location]] : 1 === e.layer && (t = R[O[e.location]]), t.gotoAndStop(0), t.loop = !0
                    })
                }

                function h(n) {
                    if (c(), !F || 0 !== F.length) {
                        for (var r = 0; r < t.options.reels.length; r++)
                            for (var o = 0; o < t.options.reels[r].symbolCount; o++) {
                                if (!n || 0 === n) {
                                    var a = T[r][o + 1],
                                        s = w[r][o];
                                    Array.isArray(i[s].textures) ? (a.textures = i[s].textures, a.texture = a.textures[0], a.gotoAndStop(0), a.loop = !0) : (a.textures = [i[s].textures], a.texture = a.textures[0], a.gotoAndStop(0), a.loop = !0), a.visible = !0, a.position.x = a.position.rx + i[s].xOffset, a.position.y = a.position.ry + i[s].yOffset, a.zIndex = i[s].zOffset
                                }
                                0 !== n && (E[r][o].textures = [e.Texture.EMPTY], E[r][o].texture = e.Texture.EMPTY, E[r][o].gotoAndStop(0), E[r][o].loop = !0)
                            }
                        F = []
                    }
                }

                function p() {
                    if (c(), !F || 0 !== F.length) {
                        for (var i = 0; i < t.options.reels.length; i++) {
                            for (var n = 0; n < T[i].length; n++) T[i][n].textures = [e.Texture.EMPTY], T[i][n].texture = e.Texture.EMPTY, T[i][n].gotoAndStop(0), T[i][n].loop = !0;
                            for (n = 0; n < E[i].length; n++) E[i][n].textures = [e.Texture.EMPTY], E[i][n].texture = e.Texture.EMPTY, E[i][n].gotoAndStop(0), E[i][n].loop = !0
                        }
                        F = []
                    }
                }

                function f(e) {
                    b.visible = !0;
                    for (var i = -1; i < t.options.reels[e].symbolCount + 1; i++) {
                        T[e][i + 1].visible = !0, i >= 0 && i < t.options.reels[e].symbolCount && (E[e][i].visible = !0)
                    }
                }

                function d(e) {
                    for (var i = -1; i < t.options.reels[e].symbolCount + 1; i++) {
                        T[e][i + 1].visible = !1, i >= 0 && i < t.options.reels[e].symbolCount && (E[e][i].visible = !1)
                    }
                }

                function _() {
                    return O
                }

                function m() {
                    return R
                }

                function g() {
                    return P
                }

                function v() {
                    return T
                }

                function y() {
                    return {
                        startAnimating: u,
                        stopAnimating: c,
                        resetAnimations: h,
                        clearAnimations: p,
                        setCellAnimation: s,
                        getCellMappings: _,
                        getOverlayMap: m,
                        getAnimOverlayMap: g,
                        getAnimationLayer: v,
                        getContainer: function() {
                            return b
                        },
                        getCellTextureRef: l
                    }
                }
                var b = new e.Container,
                    x = new e.Container,
                    S = new e.Container;
                b.addChild(x), b.addChild(S);
                var T = [],
                    w = [],
                    E = [],
                    P = [],
                    R = [],
                    O = t.locationsMap.reduce(function(e, t, i) {
                        return e[t] = i, e
                    }, {});
                e.extras.AnimatedSprite || (e.extras.AnimatedSprite = e.extras.MovieClip);
                for (var A, I = new e.Graphics, C = !0, M = 0; M < t.options.reels.length; M++) 0 !== t.options.reels[M].y && (C = !1);
                if (t.options.reels.length > 1 && C)
                    for (M = 1; M < t.options.reels.length; M++) t.options.reels[M - 1].symbolCount !== t.options.reels[M].symbolCount && (C = !1);
                if (t.options.clip) t.options.clip.forEach(function(e) {
                    I.beginFill(), I.drawRect(e.x, e.y, e.w, e.h), I.endFill()
                });
                else if (C) I.beginFill(), I.drawRect(t.options.pos.x + t.options.reels[0].x, t.options.pos.y + t.options.reels[0].y, (t.symbolSlotWidth + t.symbolSpacingW) * t.options.reels.length - t.symbolSpacingW, (t.symbolSlotHeight + t.symbolSpacingW) * t.options.reels[0].symbolCount - t.symbolSpacingW), I.endFill();
                else {
                    for (I.beginFill(), M = 0; M < t.options.reels.length; M++) I.drawRect(t.options.pos.x + t.options.reels[M].x, t.options.pos.y + t.options.reels[M].y, t.symbolSlotWidth + t.symbolSpacingW, (t.symbolSlotHeight + t.symbolSpacingH) * t.options.reels[M].symbolCount);
                    I.endFill()
                }
                for (I.zIndex = 1e3, b.addChild(I), A = I, b.mask = A, M = 0; M < t.options.reels.length; M++) {
                    for (var D = [], N = [], L = -1; L < t.options.reels[M].symbolCount + 1; L++) {
                        var k = n();
                        k.position.x = t.options.pos.x + t.options.reels[M].x, k.position.y = t.options.pos.y + t.options.reels[M].y + t.symbolSlotHeight * L, k.position.rx = k.position.x, k.position.ry = k.position.y, D.push(k), L >= 0 && L < t.options.reels[M].symbolCount && (P.push(k), k = n(), k.position.x = t.options.pos.x + t.options.reels[M].x, k.position.y = t.options.pos.y + t.options.reels[M].y + t.symbolSlotHeight * L, k.position.rx = k.position.x, k.position.ry = k.position.y, R.push(k), N.push(k))
                    }
                    T.push(D), w.push([]), E.push(N)
                }
                for (M = 0; M < t.options.reels.length; M++) T[M].forEach(function(e) {
                    x.addChild(e)
                });
                for (M = 0; M < t.options.reels.length; M++) E[M].forEach(function(e) {
                    S.addChild(e)
                });
                var F = [];
                return {
                    setViewData: r,
                    show: f,
                    hide: d,
                    startAnimating: u,
                    stopAnimating: c,
                    resetAnimations: h,
                    clearAnimations: p,
                    setCellAnimation: s,
                    getContainer: function() {
                        return b
                    },
                    getLimitedAccess: y,
                    getCellTextureRef: l
                }
            }
        }), define("game/data/reelModel", ["require", "game/utils/miscUtils", "game/configs/baseReelConfig"], function(e) {
            "use strict";
            var t = (e("game/utils/miscUtils"), e("game/configs/baseReelConfig"));
            return {
                init: function(e) {
                    this.data = e, this.stopLocations = [], this.reelSetNum, this.freeSpinsStartReelSetNum, this.freeSpinsReelSetFromPreviousResponse, this.freeSpinsReelSetCurrent, this.flyInAnimTime, this.flyInCount = 0, this.flyInCountPerReel = [0, 0, 0, 0, 0, 0], this.flyInsPerReelComplete = [!1, !1, !1, !1, !1, !1], this.freeSpinsReelSetCombinations, this.freeSpinsReelSets = {}, this.freeSpinsEntrySpinData = {}, this.setReelSymbolData = function() {
                        for (var t = e.PaytableResponse.StripInfo, i = [], n = [], r = [], o = 0; o < t.length; o++) {
                            n.push(e.PaytableResponse.StripInfo[o]["@name"]);
                            for (var a = e.PaytableResponse.StripInfo[o].Strip, s = [], l = [], u = 0; u < a.length; u++) {
                                l.push(a[u]["@name"]);
                                for (var c = [], h = 0; h < a[u].Stop.length; h++) c.push(a[u].Stop[h]["@symbolID"]);
                                s.push(c)
                            }
                            r.push(l), i.push(s)
                        }
                        return this.reelNameArray = n, this.subReelNameArray = r, i
                    }, this.reelNameArray = [], this.reelSymbolData = this.setReelSymbolData(), this.getStopSymbols = function(e, i, n) {
                        void 0 === i && (i = !1), void 0 === n && (n = this.stopLocations);
                        for (var r = n, o = t.spriteMap, a = [
                                [],
                                [],
                                [],
                                []
                            ], s = this.getReelSet(e), l = [], u = [], c = [
                                [],
                                [],
                                [],
                                []
                            ], h = 0; h < s.length; h++) {
                            for (var p = [], f = 0; f < 4; f++) {
                                var d = r[h] + f;
                                d > s[h].length - 1 && (d -= s[h].length), p.push(s[h][d]), p[f], a[f].push(" " + o[p[f]] + ":" + d + " |"), c[f].push(p[f])
                            }
                            l.push(p)
                        }
                        for (var h = 0; h < c.length; h++)
                            for (var f = 0; f < c[h].length; f++) u.push(c[h][f]);
                        for (var h = 0; h < a.length; h++);
                        return i ? u : l
                    }, this.getReelSet = function(e) {
                        if (e.indexOf("FreeSpin") > -1) {
                            if (this.freeSpinsReelSets[e]) return this.freeSpinsReelSets[e];
                            for (var t = this.freeSpinsReelSetCombinations.nameArray.indexOf(e), i = this.freeSpinsReelSetCombinations.combinationArray[t], n = [], r = this.reelNameArray.indexOf("_" + e.split("_")[1]), o = this.reelSymbolData[r], a = this.subReelNameArray[r], s = 0; s < 6; s++) {
                                var l = a.indexOf(i[s]);
                                n.push(o[l])
                            }
                            return this.freeSpinsReelSets[e] = n, n
                        }
                        return this.reelSymbolData[this.reelNameArray.indexOf(e)]
                    }, this.setFreeSpinsEntrySpinData = function(e) {
                        this.freeSpinsEntrySpinData = e
                    }
                }
            }
        }), define("game/phoenix/phoenixReels", ["com/pixijs/pixi", "game/phoenix/phoenixAnimLayer", "game/data/gameEvents", "game/data/audioRef", "game/utils/miscUtils", "com/gsap/TweenMax", "game/data/setupData", "game/data/reelModel"], function(e, t, i, n, r, o, a, s) {
            return function(a, l) {
                function u() {
                    var t = new e.extras.AnimatedSprite([e.Texture.EMPTY]);
                    return t.zIndex = 1, t.visible = !1, t
                }

                function c(e) {
                    if (e.indexOf("FreeSpin") > -1) {
                        if (ye[e]) return ye[e];
                        for (var t = l.fsReelSetCombinations.nameArray.indexOf(e), i = l.fsReelSetCombinations.combinationArray[t], n = [], r = l.StripInfo["_" + e.split("_")[1]], o = r[r.length - 1], a = 0; a < 6; a++) {
                            var s = o.indexOf(i[a]);
                            n.push(r[s])
                        }
                        return ye[e] = n, n
                    }
                    return l.StripInfo[e]
                }

                function h(e) {
                    for (var t = c(Te), r = -2; r < l.options.reels[e].symbolCount + 2; r++) {
                        var o = ee[e][r + 2],
                            a = Y[e][r + 2],
                            u = t[e][(fe[e] + t[e].length + r) % t[e].length],
                            h = !0,
                            p = !s.flyInsPerReelComplete[e];
                        ge.freeSpinsIntro && u.indexOf("r") > -1 && ((p && r > 1 || 0 === s.flyInCountPerReel[e]) && (h = !1), 3 === r && i.publish(i.FREE_SPINS_DO_FLY_IN, {
                            row: e,
                            x: o.position.x,
                            y: o.position.y
                        })), ge.symbolsMap && ge.symbolsMap[u] && (u = ge.symbolsMap[u]), Array.isArray(ie[u].textures) ? (o.textures = ie[u].textures, o.texture = o.textures[0], o.gotoAndStop(0)) : (o.textures = [ie[u].textures], o.texture = o.textures[0], o.gotoAndStop(0)), o.zIndex = ie[u].zOffset, o.visible = h, o.position.x = l.options.pos.x + l.options.reels[e].x + ie[u].xOffset, o.position.y = l.options.pos.y - pe[e] + ie[u].yOffset + l.options.reels[e].y + me.symbolSlotHeight * r;
                        var f = u.indexOf("r") > -1;
                        N(a, o, f || u.indexOf("b") > -1, f ? 0 : 1), f && o.y < -50 && o.y > -150 && !ge.freeSpinsIntro && i.publish(i.PLAY_SOUND, {
                            soundName: n["SOLAR_DISC_PASSING_" + e]
                        })
                    }
                }

                function p(e) {
                    for (var t = c(ve.reelset), r = -2; r < l.options.reels[e].symbolCount + 2; r++) {
                        var o = te[e][r + 2],
                            a = z[e][r + 2],
                            s = t[e][(ne[e] + t[e].length + r) % t[e].length];
                        ve.symbolsMap && ve.symbolsMap[s] && (s = ve.symbolsMap[s]), Array.isArray(ie[s].textures) ? (o.textures = ie[s].textures, o.texture = o.textures[0], o.gotoAndStop(0)) : (o.textures = [ie[s].textures], o.texture = o.textures[0], o.gotoAndStop(0)), o.zIndex = ie[s].zOffset, o.visible = !0, o.position.x = l.options.pos.x + l.options.reels[e].x + ie[s].xOffset;
                        var u = ue[e] + le[e];
                        de[e] > 0 && (u = -u), o.position.y = l.options.pos.y - u + l.options.reels[e].y + ie[s].yOffset + me.symbolSlotHeight * r;
                        var h = s.indexOf("r") > -1;
                        N(a, o, h || s.indexOf("b") > -1, h ? 0 : 1), h && o.y < -50 && o.y > -150 && !ge.freeSpinsIntro && i.publish(i.PLAY_SOUND, {
                            soundName: n["SOLAR_DISC_PASSING_" + e]
                        })
                    }
                }

                function f(e, t) {
                    for (var i = c(t.reelset), n = {
                            spriteRefs: []
                        }, r = -1; r < l.options.reels[e].symbolCount + 1; r++) {
                        var o = i[e][(X[e] + i[e].length + r) % i[e].length];
                        t.symbolsMap && t.symbolsMap[o] && (o = t.symbolsMap[o]), n.spriteRefs.push(o)
                    }
                    xe.show(e), xe.setViewData(e, n)
                }

                function d() {
                    for (var e = 0; e < l.options.reels.length; e++)
                        for (var t = -2; t < l.options.reels[e].symbolCount + 2; t++) {
                            var i = te[e][t + 2];
                            i.visible = !1
                        }
                }

                function _(e, t) {
                    return W[t] === F.SPIN_SPINUP || W[t] === F.SPIN_FINDEND || W[t] === F.SPIN_SPINNING || W[t] === F.SPIN_PRESTOP ? (he[t] = Math.floor((he[t] + de[t] * e + Se[t]) % Se[t]), fe[t] = Math.floor(he[t] / me.symbolSlotHeight), pe[t] = he[t] % me.symbolSlotHeight) : (fe[t] = Math.floor(he[t] / me.symbolSlotHeight), pe[t] += de[t] * e), h(t), !0
                }

                function m(e) {
                    return Math.abs(pe[e]) > me.symbolSlotHeight * (me.options.reels[e].symbolCount + 4)
                }

                function g(e) {
                    return 0 === ue[e]
                }

                function v(e) {
                    return 0 === ue[e] && 0 === le[e]
                }

                function y(e, t) {
                    ue[t] > 0 ? (ue[t] -= Math.abs(de[t] * e), ue[t] <= 0 && (le[t] += ue[t], ue[t] = 0)) : (le[t] -= Math.abs(de[t] * e), le[t] < 0 && (le[t] = 0, ue[t] = 0)), p(t)
                }

                function b(e, t) {
                    var i = he[t] % me.symbolSlotHeight;
                    ue[t] = i, le[t] = me.symbolSlotHeight * (me.options.reels[t].symbolCount + 4), de[t] > 0 && (ue[t] = me.symbolSlotHeight - i, le[t] -= me.symbolSlotHeight), ne[t] = ve.stopLocations[t]
                }

                function x(e, t) {
                    H[e] = t
                }

                function S() {
                    H[0], W[0];
                    for (var e = 0; e < l.options.reels.length; e++) W[e] = H[e]
                }

                function T() {
                    w(G)
                }

                function w(e) {
                    e.children.sort(function(e, t) {
                        return e.zIndex - t.zIndex || t.x - e.x || e.y - t.y
                    })
                }

                function E(e) {
                    e = Math.min(e, 100);
                    for (var t = 0; t < l.options.reels.length; t++) switch (ee[t].sort(function(e, t) {
                        return e.ry > t.ry
                    }), te[t].sort(function(e, t) {
                        return e.ry > t.ry
                    }), W[t]) {
                        case F.INIT_NEEDED:
                            d(), W[t] = F.SPIN_REST;
                        case F.SPIN_REST:
                            break;
                        case F.SPIN_INIT:
                            xe.hide(t), re[t] = ge.startTimer ? ge.startTimer[t] : 0, oe[t] = ge.startTicks ? ge.startTicks[t] : 0, x(t, F.SPIN_WAITSTART);
                        case F.SPIN_WAITSTART:
                            oe[t]--, re[t] -= e, Math.max(oe[t], re[t]) <= 0 && (x(t, F.SPIN_FAUX_BOUNCE_START), ce[t] = 0, Pe && Pe(t, "STARTED")), _(0, t);
                            break;
                        case F.SPIN_FAUX_BOUNCE_START:
                            ge.startBounce && ce[t] < ge.startBounce.length ? (pe[t] = ge.startBounce[ce[t]], ce[t] += 1) : (pe[t] = 0, ce[t] = 0, x(t, F.SPIN_SPINUP)), h(t);
                            break;
                        case F.SPIN_SPINUP:
                            _(e, t) && (x(t, F.SPIN_SPINNING), (Re += 1) === W.length && (we && we.call(), we = null));
                            break;
                        case F.SPIN_SPINNING:
                            _(e, t), _e && (ae[t] = ve.stopTimer[t], se[t] = ve.stopTicks[t], x(t, F.SPIN_PRESTOP));
                            break;
                        case F.SPIN_PRESTOP:
                            _(e, t), se[t]--, ae[t] -= e, Math.max(se[t], ae[t]) <= 0 && x(t, F.SPIN_FINDEND);
                            break;
                        case F.SPIN_FINDEND:
                            _(e, t), b(e, t), y(e, t), x(t, F.SPIN_STITCH);
                            break;
                        case F.SPIN_STITCH:
                            _(e, t), y(e, t), m(t) && x(t, F.SPIN_STOPPING);
                            break;
                        case F.SPIN_STOPPING:
                            y(e, t), g(t) && x(t, F.SPIN_STOPEND);
                            break;
                        case F.SPIN_STOPEND:
                            y(e, t), v(t) && (x(t, F.SPIN_FAUX_BOUNCE), ce[t] = 0, Pe && Pe(t, "BOUNCE"));
                            break;
                        case F.SPIN_FAUX_BOUNCE:
                            ve.stopBounce && ce[t] < ve.stopBounce.length ? (ue[t] = ve.stopBounce[ce[t]], ce[t] += 1) : (ue[t] = 0, ce[t] = 0, x(t, F.SPIN_HANDBRAKE)), p(t);
                            break;
                        case F.SPIN_HANDBRAKE:
                            if (X[t] = ne[t], Pe && Pe(t, "STOPPED"), x(t, F.SPIN_REST), 0 === (Re -= 1)) {
                                for (var i = 0; i < ne.length; i++) f(i, ve);
                                Ee && (ge = ve, d(), Ee.call(), Ee = null)
                            }
                    }
                    S(), T()
                }

                function P(e, t) {
                    for (var i = 0; i < z.length; i++)
                        for (var n = 0; n < z[i].length; n++) z[i][n].visible = !1;
                    ge = e;
                    for (var r = 0; r < l.options.reels.length; r++) pe[r] = 0, he[r] = X[r] * me.symbolSlotHeight, x(r, F.SPIN_INIT), de[r] = e.reelSpeed[r] / 1e3;
                    d(), Re = 0, we = t, _e = !1
                }

                function R(e, t, i) {
                    ve = e, Ee = t, Pe = i, Re = W.length, _e = !0
                }

                function O(e) {
                    Te = e.reelset;
                    for (var t = 0; t < e.stopLocations.length; t++) X[t] = e.stopLocations[t], W[t] = F.SPIN_REST, H[t] = F.SPIN_REST, pe[t] = 0, he[t] = X[t] * me.symbolSlotHeight, fe[t] = Math.floor(he[t] / me.symbolSlotHeight), f(t, e);
                    d(), T()
                }

                function A(e) {
                    for (var t = 0; t < W.length; t++) X[t] = ge.stopLocations[t], W[t] = F.SPIN_REST, H[t] = F.SPIN_REST, pe[t] = 0, he[t] = X[t] * me.symbolSlotHeight, fe[t] = Math.floor(he[t] / me.symbolSlotHeight), h(t);
                    d(), e && e()
                }

                function I() {
                    return xe.getLimitedAccess()
                }

                function C(e, t) {
                    setTimeout(function() {
                        ge.symbolsMap = e
                    }, t)
                }

                function M(e, t, i, n, r) {
                    k = e, K = void 0 === t ? K : t, q = void 0 === i ? q : i, $ = void 0 === n ? $ : n, Q = void 0 === r ? Q : r
                }

                function D(e) {
                    J = e
                }

                function N(e, t, i, n) {
                    e.visible = !0, e.x = t.position.x + (Z ? t.width >> 1 : 0), e.y = t.position.y + (Z ? t.height >> 1 : 0), void 0 === e.staggerCount && (e.staggerCount = Q), i ? 0 === e.staggerCount ? (L(n, e.x, e.y), e.staggerCount = Q) : e.staggerCount > 0 && e.staggerCount-- : e.staggerCount = 0
                }

                function L(e, t, i) {
                    if (V.length <= q && J) {
                        var n;
                        if (V.length > 0)
                            for (var a = 0; a < V.length; a++) !1 === V[a].visible && (n = V[a]);
                        void 0 === n && V.length < q && (V.push(r.createMovieClipFromArray(k, 1, "centre")), n = V[V.length - 1], U.addChild(n)), n && (n.x = t, n.y = i, n.alpha = $, n.visible = !0, n.gotoAndStop(e), o.to(n, K, {
                            alpha: 0,
                            ease: window.Power4.easeIn,
                            onComplete: function() {
                                n.visible = !1
                            }
                        }))
                    }
                }
                var k, F = {
                        INIT_NEEDED: -1,
                        SPIN_REST: 0,
                        SPIN_INIT: 2,
                        SPIN_WAITSTART: 3,
                        SPIN_FAUX_BOUNCE_START: 4,
                        SPIN_SPINUP: 6,
                        SPIN_SPINNING: 8,
                        SPIN_PRESTOP: 9,
                        SPIN_FINDEND: 10,
                        SPIN_STITCH: 12,
                        SPIN_STOPPING: 14,
                        SPIN_STOPEND: 16,
                        SPIN_FAUX_BOUNCE: 18,
                        SPIN_HANDBRAKE: 99
                    },
                    B = new e.Container,
                    G = new e.Container,
                    U = new e.Container,
                    j = [],
                    W = [],
                    H = [],
                    X = [],
                    z = [],
                    Y = [],
                    V = [],
                    q = 100,
                    J = !1,
                    K = .3,
                    $ = 1,
                    Q = 1,
                    Z = !0,
                    ee = [],
                    te = [],
                    ie = {},
                    ne = [],
                    re = [],
                    oe = [],
                    ae = [],
                    se = [],
                    le = [],
                    ue = [],
                    ce = [],
                    he = [],
                    pe = [],
                    fe = [],
                    de = [],
                    _e = !1,
                    me = l,
                    ge = {},
                    ve = {},
                    ye = {};
                e.extras.AnimatedSprite || (e.extras.AnimatedSprite = e.extras.MovieClip);
                var be, xe, Se = [],
                    Te = "BaseGame";
                ! function() {
                    l.spriteOffsets || (l.spriteOffsets = {}), l.symbolNames.forEach(function(t) {
                        if (Array.isArray(l.spriteMap[t])) {
                            var i = [];
                            l.spriteMap[t].forEach(function(t) {
                                i.push(e.Texture.fromFrame(t))
                            }), ie[t] = {
                                textures: i
                            }
                        } else ie[t] = {
                            textures: e.Texture.fromFrame(l.spriteMap[t])
                        };
                        l.spriteOffsets[t] || (l.spriteOffsets[t] = {
                            x: 0,
                            y: 0,
                            z: 0
                        }), ie[t].xOffset = l.spriteOffsets[t].x, ie[t].yOffset = l.spriteOffsets[t].y, ie[t].zOffset = l.spriteOffsets[t].z || 0
                    }), xe = t(l, ie), l.StripInfo && (Te = Object.keys(l.StripInfo)[0], Object.keys(l.StripInfo).forEach(function(e) {
                        if (l.StripInfo[e][0].Stop) {
                            var t = [];
                            l.StripInfo[e].forEach(function(i, n) {
                                var r = [];
                                t.push(i["@name"]), i.Stop.forEach(function(e) {
                                    r.push(e["@symbolID"])
                                }), l.StripInfo[e][n] = r
                            }), l.StripInfo[e].push(t)
                        }
                    })), l.fsReelSetCombinations;
                    for (var i = 0, n = new e.Graphics, r = !0, o = l.options.reels[0].y, a = 0; a < l.options.reels.length; a++) l.options.reels[a].y !== o && (r = !1);
                    if (l.options.reels.length > 1 && r)
                        for (a = 1; a < l.options.reels.length; a++) me.options.reels[a - 1].symbolCount !== me.options.reels[a].symbolCount && (r = !1);
                    if (me.options.clip) me.options.clip.forEach(function(e) {
                        n.beginFill(), n.drawRect(e.x, e.y, e.w, e.h), n.endFill()
                    });
                    else if (r) n.beginFill(), n.drawRect(l.options.pos.x + l.options.reels[0].x, l.options.pos.y + l.options.reels[0].y, (me.symbolSlotWidth + me.symbolSpacingW) * l.options.reels.length - me.symbolSpacingW, (me.symbolSlotHeight + me.symbolSpacingH) * me.options.reels[0].symbolCount - me.symbolSpacingH), n.endFill();
                    else {
                        for (n.beginFill(), a = 0; a < l.options.reels.length; a++) n.drawRect(l.options.pos.x + l.options.reels[a].x, l.options.pos.y + l.options.reels[a].y, me.symbolSlotWidth + l.symbolSpacingW, (me.symbolSlotHeight + l.symbolSpacingH) * me.options.reels[a].symbolCount);
                        n.endFill()
                    }
                    for (n.zIndex = 1e3, B.addChild(n), be = n, a = 0; a < l.options.reels.length; a++) {
                        Se.push(l.StripInfo[Te][a].length * me.symbolSlotHeight), X.push(0), W.push(F.INIT_NEEDED), H.push(F.INIT_NEEDED);
                        for (var s = [u(), u(), u(), u()], c = [u(), u(), u(), u()], h = [u(), u(), u(), u()], p = [u(), u(), u(), u()], f = [], d = 0; d < l.options.reels[a].symbolCount; d++) s.push(u()), c.push(u()), h.push(u()), p.push(u()), j.push(u()), f.push(j[i]), i += 1;
                        ee.push(s), te.push(c), z.push(h), Y.push(p)
                    }
                    for (a = 0; a < l.options.reels.length; a++) ee[a].forEach(function(e) {
                        G.addChild(e)
                    });
                    for (a = 0; a < l.options.reels.length; a++) te[a].forEach(function(e) {
                        G.addChild(e)
                    });
                    for (a = 0; a < l.options.reels.length; a++) z[a].forEach(function(e) {
                        U.addChild(e)
                    });
                    for (a = 0; a < l.options.reels.length; a++) Y[a].forEach(function(e) {
                        U.addChild(e)
                    });
                    for (G.mask = be, U.mask = be, B.addChild(U), B.addChild(G), a = 0; a < l.options.reels.length; a++) ne.push(0), re.push(0), oe.push(0), ae.push(0), se.push(0), le.push(0), ue.push(0), ce.push(0), he.push(0), pe.push(0), fe.push(0), de.push(-400);
                    B.addChild(xe.getContainer())
                }();
                var we, Ee, Pe, Re = 0;
                return {
                    spin: P,
                    resolve: R,
                    setReels: O,
                    cancelSpin: A,
                    getContainer: function() {
                        return B
                    },
                    process: E,
                    getWinPresentationLayer: I,
                    resetOutGoingSymbols: C,
                    setTrails: M,
                    setTrailsEnabled: D
                }
            }
        }), define("game/configs/fsReelConfig", [], function() {
            var e = [200, 134],
                t = [174, 141],
                i = [0, 0];
            return {
                symbolSlotWidth: 0,
                symbolSlotHeight: 0,
                symbolSpacingW: 0,
                symbolSpacingH: 0,
                options: {
                    clip: [{
                        x: e[0],
                        y: e[1],
                        w: 6 * t[0] + 5 * i[0],
                        h: 4 * t[1] + 3 * i[1] - 1
                    }],
                    pos: {
                        x: 0,
                        y: 0
                    },
                    reels: [{
                        symbolCount: 4
                    }, {
                        symbolCount: 4
                    }, {
                        symbolCount: 4
                    }, {
                        symbolCount: 4
                    }, {
                        symbolCount: 4
                    }, {
                        symbolCount: 4
                    }]
                },
                symbolNames: ["s01", "s02", "s03", "s04", "s05", "s06", "r00", "r01", "r02", "r03", "r04", "r05", "b01", "w01"],
                spriteMap: {
                    s01: "Basic-Puma",
                    s02: "Basic-Bear",
                    s03: "Basic-Vase",
                    s04: "Basic-Mask",
                    s05: "Basic-Key",
                    s06: "Basic-Coin",
                    r00: "Basic-Solar-Disc-full",
                    r01: "Basic-Solar-Disc-full",
                    r02: "Basic-Solar-Disc-full",
                    r03: "Basic-Solar-Disc-full",
                    r04: "Basic-Solar-Disc-full",
                    r05: "Basic-Solar-Disc-full",
                    b01: "Basic-Bonus",
                    w01: "Basic-Wild"
                },
                spriteOffsets: {
                    r00: {
                        x: -382.5,
                        y: -370.5,
                        z: 2
                    },
                    r01: {
                        x: -382.5,
                        y: -370.5,
                        z: 2
                    },
                    r02: {
                        x: -382.5,
                        y: -370.5,
                        z: 2
                    },
                    r03: {
                        x: -382.5,
                        y: -370.5,
                        z: 2
                    },
                    r04: {
                        x: -382.5,
                        y: -370.5,
                        z: 2
                    },
                    r05: {
                        x: -382.5,
                        y: -370.5,
                        z: 2
                    }
                },
                StripInfo: {},
                locationsMap: ["L0C0R1", "L0C0R2", "L0C0R3", "L0C0R4", "L0C1R1", "L0C1R2", "L0C1R3", "L0C1R4", "L0C2R1", "L0C2R2", "L0C2R3", "L0C2R4", "L0C3R1", "L0C3R2", "L0C3R3", "L0C3R4", "L0C4R1", "L0C4R2", "L0C4R3", "L0C4R4", "L0C5R1", "L0C5R2", "L0C5R3", "L0C5R4"],
                locationCellMap: [0, 6, 12, 18, 1, 7, 13, 19, 2, 8, 14, 20, 3, 9, 15, 21, 4, 10, 16, 22, 5, 11, 17, 23]
            }
        }), define("game/configs/spinSettingsConfig", [], function() {
            return {
                reelStrategy: {
                    startTicks: [0, 0, 0, 0, 0, 0],
                    startTimer: [0, 0, 0, 0, 0, 0],
                    reelSpeed: [-1300, -1300, -1300, -1300, -1300, -1300],
                    stopLocations: null,
                    reelset: null
                },
                reelResolve: {
                    stopTicks: [0, 5, 10, 15, 20, 25],
                    stopTimer: [0, 0, 0, 0, 0, 0],
                    stopLocations: null,
                    stopBounce: [-12, -20, -24, -18, -8],
                    reelset: null
                },
                plainStopTicks: [0, 10, 20, 30, 40, 50],
                bonusStopTicks: [0, 100, 200, 300, 400, 500]
            }
        }), define("game/commonUI/slot/layouts/landscape", [], function() {
            var e = {
                    x: 1331,
                    y: 407,
                    enabledTexture: "landscape_skipButtonEnabled",
                    disabledTexture: "landscape_skipButtonDisabled",
                    pressedTexture: "landscape_skipButtonPressed",
                    overTexture: "landscape_skipButtonOver"
                },
                t = {
                    x: 1331,
                    y: 407,
                    enabledTexture: "landscape_playButtonEnabled",
                    disabledTexture: "landscape_playButtonDisabled",
                    pressedTexture: "landscape_playButtonPressed",
                    overTexture: "landscape_playButtonOver"
                },
                i = {
                    frame: "landscape_betControlsBackground",
                    plus: {
                        enabledTexture: "landscape_plusButtonEnabled",
                        disabledTexture: "landscape_plusButtonDisabled",
                        pressedTexture: "landscape_plusButtonPressed",
                        overTexture: "landscape_plusButtonOver"
                    },
                    minus: {
                        enabledTexture: "landscape_minusButtonEnabled",
                        disabledTexture: "landscape_minusButtonDisabled",
                        pressedTexture: "landscape_minusButtonPressed",
                        overTexture: "landscape_minusButtonOver"
                    },
                    pipActiveFrame: "landscape_betIndicatorActive",
                    pipInactiveFrame: "landscape_betIndicatorActive"
                };
            return {
                baseGame: {
                    footer: {
                        x: 0,
                        y: 750,
                        frame: "landscape_footerBar",
                        bet: {
                            x: 240,
                            y: 18,
                            multiline: !1,
                            valueStyle: {
                                fontSize: 24,
                                padding: 10
                            }
                        },
                        win: {
                            x: 720,
                            y: 18,
                            multiline: !1,
                            valueStyle: {
                                fontSize: 24,
                                padding: 10
                            }
                        },
                        balance: {
                            x: 1200,
                            y: 18,
                            multiline: !1,
                            valueStyle: {
                                fontSize: 24,
                                padding: 10
                            }
                        },
                        promoSpins: {
                            x: 1200,
                            y: 18,
                            multiline: !1,
                            valueStyle: {
                                fontSize: 24,
                                padding: 10
                            }
                        }
                    },
                    spin: {
                        x: 1331,
                        y: 407,
                        enabledTexture: "landscape_spinButtonEnabled",
                        disabledTexture: "landscape_spinButtonDisabled",
                        pressedTexture: "landscape_spinButtonPressed",
                        overTexture: "landscape_spinButtonOver"
                    },
                    skip: e,
                    play: t,
                    autoSpin: {
                        x: 1331,
                        y: 270,
                        _meter: {
                            y: -75,
                            frame: "landscape_autoSpinCounterBackground"
                        },
                        _startButton: {
                            enabledTexture: "landscape_autoSpinButtonEnabled",
                            disabledTexture: "landscape_autoSpinButtonDisabled",
                            pressedTexture: "landscape_autoSpinButtonPressed",
                            overTexture: "landscape_autoSpinButtonOver"
                        },
                        _stopButton: {
                            enabledTexture: "landscape_autoSpinStopButtonEnabled",
                            disabledTexture: "landscape_autoSpinStopButtonDisabled",
                            pressedTexture: "landscape_autoSpinStopButtonPressed",
                            overTexture: "landscape_autoSpinStopButtonOver"
                        }
                    },
                    betConfig: {
                        openButton: {
                            x: 114,
                            y: 407,
                            enabledTexture: "landscape_betControlsButtonEnabled",
                            disabledTexture: "landscape_betControlsButtonDisabled",
                            pressedTexture: "landscape_betControlsButtonPressed",
                            overTexture: "landscape_betControlsButtonOver"
                        },
                        closeButton: {
                            x: 1331,
                            y: 407,
                            enabledTexture: "landscape_acceptButtonEnabled",
                            disabledTexture: "landscape_acceptButtonDisabled",
                            pressedTexture: "landscape_acceptButtonPressed",
                            overTexture: "landscape_acceptButtonOver"
                        },
                        controls: {
                            x: 720,
                            y: 405,
                            anchor: {
                                y: .5
                            }
                        },
                        totalBet: i,
                        betPerPattern: i,
                        patternsBet: i,
                        betSummary: i,
                        meterBar: {
                            x: 39,
                            y: -75,
                            frame: "landscape_betControlsBackgroundTop",
                            betPerPattern: {
                                x: 616,
                                y: 15
                            },
                            patternsBet: {
                                x: 205,
                                y: 15
                            }
                        }
                    },
                    prompt: {
                        x: 450,
                        y: 350,
                        _text: {
                            x: 33,
                            y: 0
                        },
                        textStyle: {
                            fontSize: 32,
                            padding: 10
                        },
                        enabledTexture: "landscape_messagePrompt"
                    }
                },
                freeSpins: {
                    footer: {
                        x: 0,
                        y: 750,
                        frame: "landscape_footerBar",
                        spins: {
                            x: 240,
                            y: 18,
                            multiline: !1,
                            valueStyle: {
                                fontSize: 24,
                                padding: 10
                            }
                        },
                        win: {
                            x: 720,
                            y: 18,
                            multiline: !1,
                            valueStyle: {
                                fontSize: 24,
                                padding: 10
                            }
                        },
                        bonusWin: {
                            x: 1200,
                            y: 18,
                            multiline: !1,
                            valueStyle: {
                                fontSize: 24,
                                padding: 10
                            }
                        }
                    },
                    skip: e,
                    play: t
                }
            }
        }), define("game/commonUI/slot/layouts/portrait", [], function() {
            var e = {
                    x: 405,
                    y: 985,
                    enabledTexture: "portrait_skipButtonEnabled",
                    disabledTexture: "portrait_skipButtonDisabled",
                    pressedTexture: "portrait_skipButtonPressed",
                    overTexture: "portrait_skipButtonOver"
                },
                t = {
                    x: 405,
                    y: 985,
                    enabledTexture: "portrait_playButtonEnabled",
                    disabledTexture: "portrait_playButtonDisabled",
                    pressedTexture: "portrait_playButtonPressed",
                    overTexture: "portrait_playButtonOver"
                },
                i = {
                    frame: "portrait_betControlsBackground",
                    plus: {
                        enabledTexture: "portrait_plusButtonEnabled",
                        disabledTexture: "portrait_plusButtonDisabled",
                        pressedTexture: "portrait_plusButtonPressed",
                        overTexture: "portrait_plusButtonOver"
                    },
                    minus: {
                        enabledTexture: "portrait_minusButtonEnabled",
                        disabledTexture: "portrait_minusButtonDisabled",
                        pressedTexture: "portrait_minusButtonPressed",
                        overTexture: "portrait_minusButtonOver"
                    },
                    pipActiveFrame: "portrait_betIndicatorActive",
                    pipInactiveFrame: "portrait_betIndicatorActive"
                };
            return {
                baseGame: {
                    footer: {
                        x: 0,
                        y: 1126,
                        frame: "portrait_footerBar",
                        bet: {
                            x: 135,
                            y: 18,
                            multiline: !0,
                            valueStyle: {
                                fontSize: 32,
                                padding: 10
                            }
                        },
                        win: {
                            x: 405,
                            y: 18,
                            multiline: !0,
                            valueStyle: {
                                fontSize: 32,
                                padding: 10
                            }
                        },
                        balance: {
                            x: 675,
                            y: 18,
                            multiline: !0,
                            valueStyle: {
                                fontSize: 32,
                                padding: 10
                            }
                        },
                        promoSpins: {
                            x: 675,
                            y: 18,
                            multiline: !0,
                            valueStyle: {
                                fontSize: 32,
                                padding: 10
                            }
                        }
                    },
                    spin: {
                        x: 405,
                        y: 985,
                        enabledTexture: "portrait_spinButtonEnabled",
                        disabledTexture: "portrait_spinButtonDisabled",
                        pressedTexture: "portrait_spinButtonPressed",
                        overTexture: "portrait_spinButtonOver"
                    },
                    skip: e,
                    play: t,
                    autoSpin: {
                        x: 660,
                        y: 985,
                        _meter: {
                            y: -100,
                            frame: "portrait_autoSpinCounterBackground"
                        },
                        _startButton: {
                            enabledTexture: "portrait_autoSpinButtonEnabled",
                            disabledTexture: "portrait_autoSpinButtonDisabled",
                            pressedTexture: "portrait_autoSpinButtonPressed",
                            overTexture: "portrait_autoSpinButtonOver"
                        },
                        _stopButton: {
                            enabledTexture: "portrait_autoSpinStopButtonEnabled",
                            disabledTexture: "portrait_autoSpinStopButtonDisabled",
                            pressedTexture: "portrait_autoSpinStopButtonPressed",
                            overTexture: "portrait_autoSpinStopButtonOver"
                        }
                    },
                    betConfig: {
                        openButton: {
                            x: 150,
                            y: 985,
                            enabledTexture: "portrait_betControlsButtonEnabled",
                            disabledTexture: "portrait_betControlsButtonDisabled",
                            pressedTexture: "portrait_betControlsButtonPressed",
                            overTexture: "portrait_betControlsButtonOver"
                        },
                        closeButton: {
                            x: 405,
                            y: 985,
                            enabledTexture: "portrait_acceptButtonEnabled",
                            disabledTexture: "portrait_acceptButtonDisabled",
                            pressedTexture: "portrait_acceptButtonPressed",
                            overTexture: "portrait_acceptButtonOver"
                        },
                        controls: {
                            x: 405,
                            y: 850,
                            anchor: {
                                y: 1
                            }
                        },
                        totalBet: i,
                        betPerPattern: i,
                        patternsBet: i,
                        betSummary: i,
                        meterBar: {
                            x: 0,
                            y: -75,
                            frame: "portrait_betControlsBackgroundTop",
                            betPerPattern: {
                                x: 608,
                                y: 15
                            },
                            patternsBet: {
                                x: 202,
                                y: 15
                            }
                        }
                    },
                    prompt: {
                        x: 405,
                        y: 830,
                        _text: {
                            x: 0,
                            y: -33
                        },
                        textStyle: {
                            fontSize: 32,
                            padding: 10
                        },
                        enabledTexture: "portrait_messagePrompt"
                    }
                },
                freeSpins: {
                    footer: {
                        x: 0,
                        y: 1126,
                        frame: "portrait_footerBar",
                        spins: {
                            x: 135,
                            y: 18,
                            multiline: !0,
                            valueStyle: {
                                fontSize: 32,
                                padding: 10
                            }
                        },
                        win: {
                            x: 405,
                            y: 18,
                            multiline: !0,
                            valueStyle: {
                                fontSize: 32,
                                padding: 10
                            }
                        },
                        bonusWin: {
                            x: 675,
                            y: 18,
                            multiline: !0,
                            valueStyle: {
                                fontSize: 32,
                                padding: 10
                            }
                        }
                    },
                    skip: e,
                    play: t
                }
            }
        }), define("game/commonUI/slot/layout", ["require", "./layouts/landscape", "./layouts/portrait"], function(e) {
            var t = e("./layouts/landscape");
            return {
                portrait: e("./layouts/portrait"),
                landscape: t
            }
        }),
        function(e, t) {
            "use strict";
            var i = {},
                n = e.document,
                r = e.GreenSockGlobals = e.GreenSockGlobals || e;
            if (!r.TweenLite) {
                var o, a, s, l, u, c = function(e) {
                        var t, i = e.split("."),
                            n = r;
                        for (t = 0; t < i.length; t++) n[i[t]] = n = n[i[t]] || {};
                        return n
                    },
                    h = c("com.greensock"),
                    p = function(e) {
                        var t, i = [],
                            n = e.length;
                        for (t = 0; t !== n; i.push(e[t++]));
                        return i
                    },
                    f = function() {},
                    d = function() {
                        var e = Object.prototype.toString,
                            t = e.call([]);
                        return function(i) {
                            return null != i && (i instanceof Array || "object" == typeof i && !!i.push && e.call(i) === t)
                        }
                    }(),
                    _ = {},
                    m = function(t, n, o, a) {
                        this.sc = _[t] ? _[t].sc : [], _[t] = this, this.gsClass = null, this.func = o;
                        var s = [];
                        this.check = function(l) {
                            for (var u, h, p, f, d = n.length, g = d; --d > -1;)(u = _[n[d]] || new m(n[d], [])).gsClass ? (s[d] = u.gsClass, g--) : l && u.sc.push(this);
                            if (0 === g && o) {
                                if (h = ("com.greensock." + t).split("."), p = h.pop(), f = c(h.join("."))[p] = this.gsClass = o.apply(o, s), a)
                                    if (r[p] = i[p] = f, "undefined" != typeof module && module.exports)
                                        if ("TweenLite" === t) {
                                            module.exports = i.TweenLite = f;
                                            for (d in i) f[d] = i[d]
                                        } else i.TweenLite && (i.TweenLite[p] = f);
                                else "function" == typeof define && define.amd && define((e.GreenSockAMDPath ? e.GreenSockAMDPath + "/" : "") + t.split(".").pop(), [], function() {
                                    return f
                                });
                                for (d = 0; d < this.sc.length; d++) this.sc[d].check()
                            }
                        }, this.check(!0)
                    },
                    g = e._gsDefine = function(e, t, i, n) {
                        return new m(e, t, i, n)
                    },
                    v = h._class = function(e, t, i) {
                        return t = t || function() {}, g(e, [], function() {
                            return t
                        }, i), t
                    };
                g.globals = r;
                var y = [0, 0, 1, 1],
                    b = v("easing.Ease", function(e, t, i, n) {
                        this._func = e, this._type = i || 0, this._power = n || 0, this._params = t ? y.concat(t) : y
                    }, !0),
                    x = b.map = {},
                    S = b.register = function(e, t, i, n) {
                        for (var r, o, a, s, l = t.split(","), u = l.length, c = (i || "easeIn,easeOut,easeInOut").split(","); --u > -1;)
                            for (o = l[u], r = n ? v("easing." + o, null, !0) : h.easing[o] || {}, a = c.length; --a > -1;) s = c[a], x[o + "." + s] = x[s + o] = r[s] = e.getRatio ? e : e[s] || new e
                    };
                for (s = b.prototype, s._calcEnd = !1, s.getRatio = function(e) {
                        if (this._func) return this._params[0] = e, this._func.apply(null, this._params);
                        var t = this._type,
                            i = this._power,
                            n = 1 === t ? 1 - e : 2 === t ? e : e < .5 ? 2 * e : 2 * (1 - e);
                        return 1 === i ? n *= n : 2 === i ? n *= n * n : 3 === i ? n *= n * n * n : 4 === i && (n *= n * n * n * n), 1 === t ? 1 - n : 2 === t ? n : e < .5 ? n / 2 : 1 - n / 2
                    }, o = ["Linear", "Quad", "Cubic", "Quart", "Quint,Strong"], a = o.length; --a > -1;) s = o[a] + ",Power" + a, S(new b(null, null, 1, a), s, "easeOut", !0), S(new b(null, null, 2, a), s, "easeIn" + (0 === a ? ",easeNone" : "")), S(new b(null, null, 3, a), s, "easeInOut");
                x.linear = h.easing.Linear.easeIn, x.swing = h.easing.Quad.easeInOut;
                var T = v("events.EventDispatcher", function(e) {
                    this._listeners = {}, this._eventTarget = e || this
                });
                s = T.prototype, s.addEventListener = function(e, t, i, n, r) {
                    r = r || 0;
                    var o, a, s = this._listeners[e],
                        c = 0;
                    for (this !== l || u || l.wake(), null == s && (this._listeners[e] = s = []), a = s.length; --a > -1;) o = s[a], o.c === t && o.s === i ? s.splice(a, 1) : 0 === c && o.pr < r && (c = a + 1);
                    s.splice(c, 0, {
                        c: t,
                        s: i,
                        up: n,
                        pr: r
                    })
                }, s.removeEventListener = function(e, t) {
                    var i, n = this._listeners[e];
                    if (n)
                        for (i = n.length; --i > -1;)
                            if (n[i].c === t) return void n.splice(i, 1)
                }, s.dispatchEvent = function(e) {
                    var t, i, n, r = this._listeners[e];
                    if (r)
                        for (t = r.length, t > 1 && (r = r.slice(0)), i = this._eventTarget; --t > -1;)(n = r[t]) && (n.up ? n.c.call(n.s || i, {
                            type: e,
                            target: i
                        }) : n.c.call(n.s || i))
                };
                var w = e.requestAnimationFrame,
                    E = e.cancelAnimationFrame,
                    P = Date.now || function() {
                        return (new Date).getTime()
                    },
                    R = P();
                for (o = ["ms", "moz", "webkit", "o"], a = o.length; --a > -1 && !w;) w = e[o[a] + "RequestAnimationFrame"], E = e[o[a] + "CancelAnimationFrame"] || e[o[a] + "CancelRequestAnimationFrame"];
                v("Ticker", function(e, t) {
                    var i, r, o, a, s, c = this,
                        h = P(),
                        p = !(!1 === t || !w) && "auto",
                        d = 500,
                        _ = 33,
                        m = function(e) {
                            var t, n, l = P() - R;
                            l > d && (h += l - _), R += l, c.time = (R - h) / 1e3, t = c.time - s, (!i || t > 0 || !0 === e) && (c.frame++, s += t + (t >= a ? .004 : a - t), n = !0), !0 !== e && (o = r(m)), n && c.dispatchEvent("tick")
                        };
                    T.call(c), c.time = c.frame = 0, c.tick = function() {
                            m(!0)
                        },
                        c.lagSmoothing = function(e, t) {
                            d = e || 1e10, _ = Math.min(t, d, 0)
                        }, c.sleep = function() {
                            null != o && (p && E ? E(o) : clearTimeout(o), r = f, o = null, c === l && (u = !1))
                        }, c.wake = function(e) {
                            null !== o ? c.sleep() : e ? h += -R + (R = P()) : c.frame > 10 && (R = P() - d + 5), r = 0 === i ? f : p && w ? w : function(e) {
                                return setTimeout(e, 1e3 * (s - c.time) + 1 | 0)
                            }, c === l && (u = !0), m(2)
                        }, c.fps = function(e) {
                            if (!arguments.length) return i;
                            i = e, a = 1 / (i || 60), s = this.time + a, c.wake()
                        }, c.useRAF = function(e) {
                            if (!arguments.length) return p;
                            c.sleep(), p = e, c.fps(i)
                        }, c.fps(e), setTimeout(function() {
                            "auto" === p && c.frame < 5 && "hidden" !== n.visibilityState && c.useRAF(!1)
                        }, 1500)
                }), s = h.Ticker.prototype = new h.events.EventDispatcher, s.constructor = h.Ticker;
                var O = v("core.Animation", function(e, t) {
                    if (this.vars = t = t || {}, this._duration = this._totalDuration = e || 0, this._delay = Number(t.delay) || 0, this._timeScale = 1, this._active = !0 === t.immediateRender, this.data = t.data, this._reversed = !0 === t.reversed, q) {
                        u || l.wake();
                        var i = this.vars.useFrames ? V : q;
                        i.add(this, i._time), this.vars.paused && this.paused(!0)
                    }
                });
                l = O.ticker = new h.Ticker, s = O.prototype, s._dirty = s._gc = s._initted = s._paused = !1, s._totalTime = s._time = 0, s._rawPrevTime = -1, s._next = s._last = s._onUpdate = s._timeline = s.timeline = null, s._paused = !1;
                var A = function() {
                    u && P() - R > 2e3 && "hidden" !== n.visibilityState && l.wake();
                    var e = setTimeout(A, 2e3);
                    e.unref && e.unref()
                };
                A(), s.play = function(e, t) {
                    return null != e && this.seek(e, t), this.reversed(!1).paused(!1)
                }, s.pause = function(e, t) {
                    return null != e && this.seek(e, t), this.paused(!0)
                }, s.resume = function(e, t) {
                    return null != e && this.seek(e, t), this.paused(!1)
                }, s.seek = function(e, t) {
                    return this.totalTime(Number(e), !1 !== t)
                }, s.restart = function(e, t) {
                    return this.reversed(!1).paused(!1).totalTime(e ? -this._delay : 0, !1 !== t, !0)
                }, s.reverse = function(e, t) {
                    return null != e && this.seek(e || this.totalDuration(), t), this.reversed(!0).paused(!1)
                }, s.render = function(e, t, i) {}, s.invalidate = function() {
                    return this._time = this._totalTime = 0, this._initted = this._gc = !1, this._rawPrevTime = -1, !this._gc && this.timeline || this._enabled(!0), this
                }, s.isActive = function() {
                    var e, t = this._timeline,
                        i = this._startTime;
                    return !t || !this._gc && !this._paused && t.isActive() && (e = t.rawTime(!0)) >= i && e < i + this.totalDuration() / this._timeScale - 1e-7
                }, s._enabled = function(e, t) {
                    return u || l.wake(), this._gc = !e, this._active = this.isActive(), !0 !== t && (e && !this.timeline ? this._timeline.add(this, this._startTime - this._delay) : !e && this.timeline && this._timeline._remove(this, !0)), !1
                }, s._kill = function(e, t) {
                    return this._enabled(!1, !1)
                }, s.kill = function(e, t) {
                    return this._kill(e, t), this
                }, s._uncache = function(e) {
                    for (var t = e ? this : this.timeline; t;) t._dirty = !0, t = t.timeline;
                    return this
                }, s._swapSelfInParams = function(e) {
                    for (var t = e.length, i = e.concat(); --t > -1;) "{self}" === e[t] && (i[t] = this);
                    return i
                }, s._callback = function(e) {
                    var t = this.vars,
                        i = t[e],
                        n = t[e + "Params"],
                        r = t[e + "Scope"] || t.callbackScope || this;
                    switch (n ? n.length : 0) {
                        case 0:
                            i.call(r);
                            break;
                        case 1:
                            i.call(r, n[0]);
                            break;
                        case 2:
                            i.call(r, n[0], n[1]);
                            break;
                        default:
                            i.apply(r, n)
                    }
                }, s.eventCallback = function(e, t, i, n) {
                    if ("on" === (e || "").substr(0, 2)) {
                        var r = this.vars;
                        if (1 === arguments.length) return r[e];
                        null == t ? delete r[e] : (r[e] = t, r[e + "Params"] = d(i) && -1 !== i.join("").indexOf("{self}") ? this._swapSelfInParams(i) : i, r[e + "Scope"] = n), "onUpdate" === e && (this._onUpdate = t)
                    }
                    return this
                }, s.delay = function(e) {
                    return arguments.length ? (this._timeline.smoothChildTiming && this.startTime(this._startTime + e - this._delay), this._delay = e, this) : this._delay
                }, s.duration = function(e) {
                    return arguments.length ? (this._duration = this._totalDuration = e, this._uncache(!0), this._timeline.smoothChildTiming && this._time > 0 && this._time < this._duration && 0 !== e && this.totalTime(this._totalTime * (e / this._duration), !0), this) : (this._dirty = !1, this._duration)
                }, s.totalDuration = function(e) {
                    return this._dirty = !1, arguments.length ? this.duration(e) : this._totalDuration
                }, s.time = function(e, t) {
                    return arguments.length ? (this._dirty && this.totalDuration(), this.totalTime(e > this._duration ? this._duration : e, t)) : this._time
                }, s.totalTime = function(e, t, i) {
                    if (u || l.wake(), !arguments.length) return this._totalTime;
                    if (this._timeline) {
                        if (e < 0 && !i && (e += this.totalDuration()), this._timeline.smoothChildTiming) {
                            this._dirty && this.totalDuration();
                            var n = this._totalDuration,
                                r = this._timeline;
                            if (e > n && !i && (e = n), this._startTime = (this._paused ? this._pauseTime : r._time) - (this._reversed ? n - e : e) / this._timeScale, r._dirty || this._uncache(!1), r._timeline)
                                for (; r._timeline;) r._timeline._time !== (r._startTime + r._totalTime) / r._timeScale && r.totalTime(r._totalTime, !0), r = r._timeline
                        }
                        this._gc && this._enabled(!0, !1), this._totalTime === e && 0 !== this._duration || (N.length && K(), this.render(e, t, !1), N.length && K())
                    }
                    return this
                }, s.progress = s.totalProgress = function(e, t) {
                    var i = this.duration();
                    return arguments.length ? this.totalTime(i * e, t) : i ? this._time / i : this.ratio
                }, s.startTime = function(e) {
                    return arguments.length ? (e !== this._startTime && (this._startTime = e, this.timeline && this.timeline._sortChildren && this.timeline.add(this, e - this._delay)), this) : this._startTime
                }, s.endTime = function(e) {
                    return this._startTime + (0 != e ? this.totalDuration() : this.duration()) / this._timeScale
                }, s.timeScale = function(e) {
                    if (!arguments.length) return this._timeScale;
                    if (e = e || 1e-10, this._timeline && this._timeline.smoothChildTiming) {
                        var t = this._pauseTime,
                            i = t || 0 === t ? t : this._timeline.totalTime();
                        this._startTime = i - (i - this._startTime) * this._timeScale / e
                    }
                    return this._timeScale = e, this._uncache(!1)
                }, s.reversed = function(e) {
                    return arguments.length ? (e != this._reversed && (this._reversed = e, this.totalTime(this._timeline && !this._timeline.smoothChildTiming ? this.totalDuration() - this._totalTime : this._totalTime, !0)), this) : this._reversed
                }, s.paused = function(e) {
                    if (!arguments.length) return this._paused;
                    var t, i, n = this._timeline;
                    return e != this._paused && n && (u || e || l.wake(), t = n.rawTime(), i = t - this._pauseTime, !e && n.smoothChildTiming && (this._startTime += i, this._uncache(!1)), this._pauseTime = e ? t : null, this._paused = e, this._active = this.isActive(), !e && 0 !== i && this._initted && this.duration() && (t = n.smoothChildTiming ? this._totalTime : (t - this._startTime) / this._timeScale, this.render(t, t === this._totalTime, !0))), this._gc && !e && this._enabled(!0, !1), this
                };
                var I = v("core.SimpleTimeline", function(e) {
                    O.call(this, 0, e), this.autoRemoveChildren = this.smoothChildTiming = !0
                });
                s = I.prototype = new O, s.constructor = I, s.kill()._gc = !1, s._first = s._last = s._recent = null, s._sortChildren = !1, s.add = s.insert = function(e, t, i, n) {
                    var r, o;
                    if (e._startTime = Number(t || 0) + e._delay, e._paused && this !== e._timeline && (e._pauseTime = e._startTime + (this.rawTime() - e._startTime) / e._timeScale), e.timeline && e.timeline._remove(e, !0), e.timeline = e._timeline = this, e._gc && e._enabled(!0, !0), r = this._last, this._sortChildren)
                        for (o = e._startTime; r && r._startTime > o;) r = r._prev;
                    return r ? (e._next = r._next, r._next = e) : (e._next = this._first, this._first = e), e._next ? e._next._prev = e : this._last = e, e._prev = r, this._recent = e, this._timeline && this._uncache(!0), this
                }, s._remove = function(e, t) {
                    return e.timeline === this && (t || e._enabled(!1, !0), e._prev ? e._prev._next = e._next : this._first === e && (this._first = e._next), e._next ? e._next._prev = e._prev : this._last === e && (this._last = e._prev), e._next = e._prev = e.timeline = null, e === this._recent && (this._recent = this._last), this._timeline && this._uncache(!0)), this
                }, s.render = function(e, t, i) {
                    var n, r = this._first;
                    for (this._totalTime = this._time = this._rawPrevTime = e; r;) n = r._next, (r._active || e >= r._startTime && !r._paused && !r._gc) && (r._reversed ? r.render((r._dirty ? r.totalDuration() : r._totalDuration) - (e - r._startTime) * r._timeScale, t, i) : r.render((e - r._startTime) * r._timeScale, t, i)), r = n
                }, s.rawTime = function() {
                    return u || l.wake(), this._totalTime
                };
                var C = v("TweenLite", function(t, i, n) {
                        if (O.call(this, i, n), this.render = C.prototype.render, null == t) throw "Cannot tween a null target.";
                        this.target = t = "string" != typeof t ? t : C.selector(t) || t;
                        var r, o, a, s = t.jquery || t.length && t !== e && t[0] && (t[0] === e || t[0].nodeType && t[0].style && !t.nodeType),
                            l = this.vars.overwrite;
                        if (this._overwrite = l = null == l ? Y[C.defaultOverwrite] : "number" == typeof l ? l >> 0 : Y[l], (s || t instanceof Array || t.push && d(t)) && "number" != typeof t[0])
                            for (this._targets = a = p(t), this._propLookup = [], this._siblings = [], r = 0; r < a.length; r++) o = a[r], o ? "string" != typeof o ? o.length && o !== e && o[0] && (o[0] === e || o[0].nodeType && o[0].style && !o.nodeType) ? (a.splice(r--, 1), this._targets = a = a.concat(p(o))) : (this._siblings[r] = $(o, this, !1), 1 === l && this._siblings[r].length > 1 && Z(o, this, null, 1, this._siblings[r])) : "string" == typeof(o = a[r--] = C.selector(o)) && a.splice(r + 1, 1) : a.splice(r--, 1);
                        else this._propLookup = {}, this._siblings = $(t, this, !1), 1 === l && this._siblings.length > 1 && Z(t, this, null, 1, this._siblings);
                        (this.vars.immediateRender || 0 === i && 0 === this._delay && !1 !== this.vars.immediateRender) && (this._time = -1e-10, this.render(Math.min(0, -this._delay)))
                    }, !0),
                    M = function(t) {
                        return t && t.length && t !== e && t[0] && (t[0] === e || t[0].nodeType && t[0].style && !t.nodeType)
                    },
                    D = function(e, t) {
                        var i, n = {};
                        for (i in e) z[i] || i in t && "transform" !== i && "x" !== i && "y" !== i && "width" !== i && "height" !== i && "className" !== i && "border" !== i || !(!W[i] || W[i] && W[i]._autoCSS) || (n[i] = e[i], delete e[i]);
                        e.css = n
                    };
                s = C.prototype = new O, s.constructor = C, s.kill()._gc = !1, s.ratio = 0, s._firstPT = s._targets = s._overwrittenProps = s._startAt = null, s._notifyPluginsOfEnabled = s._lazy = !1, C.version = "1.20.1", C.defaultEase = s._ease = new b(null, null, 1, 1), C.defaultOverwrite = "auto", C.ticker = l, C.autoSleep = 120, C.lagSmoothing = function(e, t) {
                    l.lagSmoothing(e, t)
                }, C.selector = e.$ || e.jQuery || function(t) {
                    var i = e.$ || e.jQuery;
                    return i ? (C.selector = i, i(t)) : void 0 === n ? t : n.querySelectorAll ? n.querySelectorAll(t) : n.getElementById("#" === t.charAt(0) ? t.substr(1) : t)
                };
                var N = [],
                    L = {},
                    k = /(?:(-|-=|\+=)?\d*\.?\d*(?:e[\-+]?\d+)?)[0-9]/gi,
                    F = /[\+-]=-?[\.\d]/,
                    B = function(e) {
                        for (var t, i = this._firstPT; i;) t = i.blob ? 1 === e && this.end ? this.end : e ? this.join("") : this.start : i.c * e + i.s, i.m ? t = i.m(t, this._target || i.t) : t < 1e-6 && t > -1e-6 && !i.blob && (t = 0), i.f ? i.fp ? i.t[i.p](i.fp, t) : i.t[i.p](t) : i.t[i.p] = t, i = i._next
                    },
                    G = function(e, t, i, n) {
                        var r, o, a, s, l, u, c, h = [],
                            p = 0,
                            f = "",
                            d = 0;
                        for (h.start = e, h.end = t, e = h[0] = e + "", t = h[1] = t + "", i && (i(h), e = h[0], t = h[1]), h.length = 0, r = e.match(k) || [], o = t.match(k) || [], n && (n._next = null, n.blob = 1, h._firstPT = h._applyPT = n), l = o.length, s = 0; s < l; s++) c = o[s], u = t.substr(p, t.indexOf(c, p) - p), f += u || !s ? u : ",", p += u.length, d ? d = (d + 1) % 5 : "rgba(" === u.substr(-5) && (d = 1), c === r[s] || r.length <= s ? f += c : (f && (h.push(f), f = ""), a = parseFloat(r[s]), h.push(a), h._firstPT = {
                            _next: h._firstPT,
                            t: h,
                            p: h.length - 1,
                            s: a,
                            c: ("=" === c.charAt(1) ? parseInt(c.charAt(0) + "1", 10) * parseFloat(c.substr(2)) : parseFloat(c) - a) || 0,
                            f: 0,
                            m: d && d < 4 ? Math.round : 0
                        }), p += c.length;
                        return f += t.substr(p), f && h.push(f), h.setRatio = B, F.test(t) && (h.end = 0), h
                    },
                    U = function(e, t, i, n, r, o, a, s, l) {
                        "function" == typeof n && (n = n(l || 0, e));
                        var u, c = typeof e[t],
                            h = "function" !== c ? "" : t.indexOf("set") || "function" != typeof e["get" + t.substr(3)] ? t : "get" + t.substr(3),
                            p = "get" !== i ? i : h ? a ? e[h](a) : e[h]() : e[t],
                            f = "string" == typeof n && "=" === n.charAt(1),
                            d = {
                                t: e,
                                p: t,
                                s: p,
                                f: "function" === c,
                                pg: 0,
                                n: r || t,
                                m: o ? "function" == typeof o ? o : Math.round : 0,
                                pr: 0,
                                c: f ? parseInt(n.charAt(0) + "1", 10) * parseFloat(n.substr(2)) : parseFloat(n) - p || 0
                            };
                        if (("number" != typeof p || "number" != typeof n && !f) && (a || isNaN(p) || !f && isNaN(n) || "boolean" == typeof p || "boolean" == typeof n ? (d.fp = a, u = G(p, f ? parseFloat(d.s) + d.c : n, s || C.defaultStringFilter, d), d = {
                                t: u,
                                p: "setRatio",
                                s: 0,
                                c: 1,
                                f: 2,
                                pg: 0,
                                n: r || t,
                                pr: 0,
                                m: 0
                            }) : (d.s = parseFloat(p), f || (d.c = parseFloat(n) - d.s || 0))), d.c) return (d._next = this._firstPT) && (d._next._prev = d), this._firstPT = d, d
                    },
                    j = C._internals = {
                        isArray: d,
                        isSelector: M,
                        lazyTweens: N,
                        blobDif: G
                    },
                    W = C._plugins = {},
                    H = j.tweenLookup = {},
                    X = 0,
                    z = j.reservedProps = {
                        ease: 1,
                        delay: 1,
                        overwrite: 1,
                        onComplete: 1,
                        onCompleteParams: 1,
                        onCompleteScope: 1,
                        useFrames: 1,
                        runBackwards: 1,
                        startAt: 1,
                        onUpdate: 1,
                        onUpdateParams: 1,
                        onUpdateScope: 1,
                        onStart: 1,
                        onStartParams: 1,
                        onStartScope: 1,
                        onReverseComplete: 1,
                        onReverseCompleteParams: 1,
                        onReverseCompleteScope: 1,
                        onRepeat: 1,
                        onRepeatParams: 1,
                        onRepeatScope: 1,
                        easeParams: 1,
                        yoyo: 1,
                        immediateRender: 1,
                        repeat: 1,
                        repeatDelay: 1,
                        data: 1,
                        paused: 1,
                        reversed: 1,
                        autoCSS: 1,
                        lazy: 1,
                        onOverwrite: 1,
                        callbackScope: 1,
                        stringFilter: 1,
                        id: 1,
                        yoyoEase: 1
                    },
                    Y = {
                        none: 0,
                        all: 1,
                        auto: 2,
                        concurrent: 3,
                        allOnStart: 4,
                        preexisting: 5,
                        true: 1,
                        false: 0
                    },
                    V = O._rootFramesTimeline = new I,
                    q = O._rootTimeline = new I,
                    J = 30,
                    K = j.lazyRender = function() {
                        var e, t = N.length;
                        for (L = {}; --t > -1;)(e = N[t]) && !1 !== e._lazy && (e.render(e._lazy[0], e._lazy[1], !0), e._lazy = !1);
                        N.length = 0
                    };
                q._startTime = l.time, V._startTime = l.frame, q._active = V._active = !0, setTimeout(K, 1), O._updateRoot = C.render = function() {
                    var e, t, i;
                    if (N.length && K(), q.render((l.time - q._startTime) * q._timeScale, !1, !1), V.render((l.frame - V._startTime) * V._timeScale, !1, !1), N.length && K(), l.frame >= J) {
                        J = l.frame + (parseInt(C.autoSleep, 10) || 120);
                        for (i in H) {
                            for (t = H[i].tweens, e = t.length; --e > -1;) t[e]._gc && t.splice(e, 1);
                            0 === t.length && delete H[i]
                        }
                        if ((!(i = q._first) || i._paused) && C.autoSleep && !V._first && 1 === l._listeners.tick.length) {
                            for (; i && i._paused;) i = i._next;
                            i || l.sleep()
                        }
                    }
                }, l.addEventListener("tick", O._updateRoot);
                var $ = function(e, t, i) {
                        var n, r, o = e._gsTweenID;
                        if (H[o || (e._gsTweenID = o = "t" + X++)] || (H[o] = {
                                target: e,
                                tweens: []
                            }), t && (n = H[o].tweens, n[r = n.length] = t, i))
                            for (; --r > -1;) n[r] === t && n.splice(r, 1);
                        return H[o].tweens
                    },
                    Q = function(e, t, i, n) {
                        var r, o, a = e.vars.onOverwrite;
                        return a && (r = a(e, t, i, n)), a = C.onOverwrite, a && (o = a(e, t, i, n)), !1 !== r && !1 !== o
                    },
                    Z = function(e, t, i, n, r) {
                        var o, a, s, l;
                        if (1 === n || n >= 4) {
                            for (l = r.length, o = 0; o < l; o++)
                                if ((s = r[o]) !== t) s._gc || s._kill(null, e, t) && (a = !0);
                                else if (5 === n) break;
                            return a
                        }
                        var u, c = t._startTime + 1e-10,
                            h = [],
                            p = 0,
                            f = 0 === t._duration;
                        for (o = r.length; --o > -1;)(s = r[o]) === t || s._gc || s._paused || (s._timeline !== t._timeline ? (u = u || ee(t, 0, f), 0 === ee(s, u, f) && (h[p++] = s)) : s._startTime <= c && s._startTime + s.totalDuration() / s._timeScale > c && ((f || !s._initted) && c - s._startTime <= 2e-10 || (h[p++] = s)));
                        for (o = p; --o > -1;)
                            if (s = h[o], 2 === n && s._kill(i, e, t) && (a = !0), 2 !== n || !s._firstPT && s._initted) {
                                if (2 !== n && !Q(s, t)) continue;
                                s._enabled(!1, !1) && (a = !0)
                            }
                        return a
                    },
                    ee = function(e, t, i) {
                        for (var n = e._timeline, r = n._timeScale, o = e._startTime; n._timeline;) {
                            if (o += n._startTime, r *= n._timeScale, n._paused) return -100;
                            n = n._timeline
                        }
                        return o /= r, o > t ? o - t : i && o === t || !e._initted && o - t < 2e-10 ? 1e-10 : (o += e.totalDuration() / e._timeScale / r) > t + 1e-10 ? 0 : o - t - 1e-10
                    };
                s._init = function() {
                    var e, t, i, n, r, o, a = this.vars,
                        s = this._overwrittenProps,
                        l = this._duration,
                        u = !!a.immediateRender,
                        c = a.ease;
                    if (a.startAt) {
                        this._startAt && (this._startAt.render(-1, !0), this._startAt.kill()), r = {};
                        for (n in a.startAt) r[n] = a.startAt[n];
                        if (r.overwrite = !1, r.immediateRender = !0, r.lazy = u && !1 !== a.lazy, r.startAt = r.delay = null, r.onUpdate = a.onUpdate, r.onUpdateScope = a.onUpdateScope || a.callbackScope || this, this._startAt = C.to(this.target, 0, r), u)
                            if (this._time > 0) this._startAt = null;
                            else if (0 !== l) return
                    } else if (a.runBackwards && 0 !== l)
                        if (this._startAt) this._startAt.render(-1, !0), this._startAt.kill(), this._startAt = null;
                        else {
                            0 !== this._time && (u = !1), i = {};
                            for (n in a) z[n] && "autoCSS" !== n || (i[n] = a[n]);
                            if (i.overwrite = 0, i.data = "isFromStart", i.lazy = u && !1 !== a.lazy, i.immediateRender = u, this._startAt = C.to(this.target, 0, i), u) {
                                if (0 === this._time) return
                            } else this._startAt._init(), this._startAt._enabled(!1), this.vars.immediateRender && (this._startAt = null)
                        }
                    if (this._ease = c = c ? c instanceof b ? c : "function" == typeof c ? new b(c, a.easeParams) : x[c] || C.defaultEase : C.defaultEase, a.easeParams instanceof Array && c.config && (this._ease = c.config.apply(c, a.easeParams)), this._easeType = this._ease._type, this._easePower = this._ease._power, this._firstPT = null, this._targets)
                        for (o = this._targets.length, e = 0; e < o; e++) this._initProps(this._targets[e], this._propLookup[e] = {}, this._siblings[e], s ? s[e] : null, e) && (t = !0);
                    else t = this._initProps(this.target, this._propLookup, this._siblings, s, 0);
                    if (t && C._onPluginEvent("_onInitAllProps", this), s && (this._firstPT || "function" != typeof this.target && this._enabled(!1, !1)), a.runBackwards)
                        for (i = this._firstPT; i;) i.s += i.c, i.c = -i.c, i = i._next;
                    this._onUpdate = a.onUpdate, this._initted = !0
                }, s._initProps = function(t, i, n, r, o) {
                    var a, s, l, u, c, h;
                    if (null == t) return !1;
                    L[t._gsTweenID] && K(), this.vars.css || t.style && t !== e && t.nodeType && W.css && !1 !== this.vars.autoCSS && D(this.vars, t);
                    for (a in this.vars)
                        if (h = this.vars[a], z[a]) h && (h instanceof Array || h.push && d(h)) && -1 !== h.join("").indexOf("{self}") && (this.vars[a] = h = this._swapSelfInParams(h, this));
                        else if (W[a] && (u = new W[a])._onInitTween(t, this.vars[a], this, o)) {
                        for (this._firstPT = c = {
                                _next: this._firstPT,
                                t: u,
                                p: "setRatio",
                                s: 0,
                                c: 1,
                                f: 1,
                                n: a,
                                pg: 1,
                                pr: u._priority,
                                m: 0
                            }, s = u._overwriteProps.length; --s > -1;) i[u._overwriteProps[s]] = this._firstPT;
                        (u._priority || u._onInitAllProps) && (l = !0), (u._onDisable || u._onEnable) && (this._notifyPluginsOfEnabled = !0), c._next && (c._next._prev = c)
                    } else i[a] = U.call(this, t, a, "get", h, a, 0, null, this.vars.stringFilter, o);
                    return r && this._kill(r, t) ? this._initProps(t, i, n, r, o) : this._overwrite > 1 && this._firstPT && n.length > 1 && Z(t, this, i, this._overwrite, n) ? (this._kill(i, t), this._initProps(t, i, n, r, o)) : (this._firstPT && (!1 !== this.vars.lazy && this._duration || this.vars.lazy && !this._duration) && (L[t._gsTweenID] = !0), l)
                }, s.render = function(e, t, i) {
                    var n, r, o, a, s = this._time,
                        l = this._duration,
                        u = this._rawPrevTime;
                    if (e >= l - 1e-7 && e >= 0) this._totalTime = this._time = l, this.ratio = this._ease._calcEnd ? this._ease.getRatio(1) : 1, this._reversed || (n = !0, r = "onComplete", i = i || this._timeline.autoRemoveChildren), 0 === l && (this._initted || !this.vars.lazy || i) && (this._startTime === this._timeline._duration && (e = 0), (u < 0 || e <= 0 && e >= -1e-7 || 1e-10 === u && "isPause" !== this.data) && u !== e && (i = !0, u > 1e-10 && (r = "onReverseComplete")), this._rawPrevTime = a = !t || e || u === e ? e : 1e-10);
                    else if (e < 1e-7) this._totalTime = this._time = 0, this.ratio = this._ease._calcEnd ? this._ease.getRatio(0) : 0, (0 !== s || 0 === l && u > 0) && (r = "onReverseComplete", n = this._reversed), e < 0 && (this._active = !1, 0 === l && (this._initted || !this.vars.lazy || i) && (u >= 0 && (1e-10 !== u || "isPause" !== this.data) && (i = !0), this._rawPrevTime = a = !t || e || u === e ? e : 1e-10)), (!this._initted || this._startAt && this._startAt.progress()) && (i = !0);
                    else if (this._totalTime = this._time = e, this._easeType) {
                        var c = e / l,
                            h = this._easeType,
                            p = this._easePower;
                        (1 === h || 3 === h && c >= .5) && (c = 1 - c), 3 === h && (c *= 2), 1 === p ? c *= c : 2 === p ? c *= c * c : 3 === p ? c *= c * c * c : 4 === p && (c *= c * c * c * c), this.ratio = 1 === h ? 1 - c : 2 === h ? c : e / l < .5 ? c / 2 : 1 - c / 2
                    } else this.ratio = this._ease.getRatio(e / l);
                    if (this._time !== s || i) {
                        if (!this._initted) {
                            if (this._init(), !this._initted || this._gc) return;
                            if (!i && this._firstPT && (!1 !== this.vars.lazy && this._duration || this.vars.lazy && !this._duration)) return this._time = this._totalTime = s, this._rawPrevTime = u, N.push(this), void(this._lazy = [e, t]);
                            this._time && !n ? this.ratio = this._ease.getRatio(this._time / l) : n && this._ease._calcEnd && (this.ratio = this._ease.getRatio(0 === this._time ? 0 : 1))
                        }
                        for (!1 !== this._lazy && (this._lazy = !1), this._active || !this._paused && this._time !== s && e >= 0 && (this._active = !0), 0 === s && (this._startAt && (e >= 0 ? this._startAt.render(e, t, i) : r || (r = "_dummyGS")), this.vars.onStart && (0 === this._time && 0 !== l || t || this._callback("onStart"))), o = this._firstPT; o;) o.f ? o.t[o.p](o.c * this.ratio + o.s) : o.t[o.p] = o.c * this.ratio + o.s, o = o._next;
                        this._onUpdate && (e < 0 && this._startAt && -1e-4 !== e && this._startAt.render(e, t, i), t || (this._time !== s || n || i) && this._callback("onUpdate")), r && (this._gc && !i || (e < 0 && this._startAt && !this._onUpdate && -1e-4 !== e && this._startAt.render(e, t, i), n && (this._timeline.autoRemoveChildren && this._enabled(!1, !1), this._active = !1), !t && this.vars[r] && this._callback(r), 0 === l && 1e-10 === this._rawPrevTime && 1e-10 !== a && (this._rawPrevTime = 0)))
                    }
                }, s._kill = function(e, t, i) {
                    if ("all" === e && (e = null), null == e && (null == t || t === this.target)) return this._lazy = !1, this._enabled(!1, !1);
                    t = "string" != typeof t ? t || this._targets || this.target : C.selector(t) || t;
                    var n, r, o, a, s, l, u, c, h, p = i && this._time && i._startTime === this._startTime && this._timeline === i._timeline;
                    if ((d(t) || M(t)) && "number" != typeof t[0])
                        for (n = t.length; --n > -1;) this._kill(e, t[n], i) && (l = !0);
                    else {
                        if (this._targets) {
                            for (n = this._targets.length; --n > -1;)
                                if (t === this._targets[n]) {
                                    s = this._propLookup[n] || {}, this._overwrittenProps = this._overwrittenProps || [], r = this._overwrittenProps[n] = e ? this._overwrittenProps[n] || {} : "all";
                                    break
                                }
                        } else {
                            if (t !== this.target) return !1;
                            s = this._propLookup, r = this._overwrittenProps = e ? this._overwrittenProps || {} : "all"
                        }
                        if (s) {
                            if (u = e || s, c = e !== r && "all" !== r && e !== s && ("object" != typeof e || !e._tempKill), i && (C.onOverwrite || this.vars.onOverwrite)) {
                                for (o in u) s[o] && (h || (h = []), h.push(o));
                                if ((h || !e) && !Q(this, i, t, h)) return !1
                            }
                            for (o in u)(a = s[o]) && (p && (a.f ? a.t[a.p](a.s) : a.t[a.p] = a.s, l = !0), a.pg && a.t._kill(u) && (l = !0), a.pg && 0 !== a.t._overwriteProps.length || (a._prev ? a._prev._next = a._next : a === this._firstPT && (this._firstPT = a._next), a._next && (a._next._prev = a._prev), a._next = a._prev = null), delete s[o]), c && (r[o] = 1);
                            !this._firstPT && this._initted && this._enabled(!1, !1)
                        }
                    }
                    return l
                }, s.invalidate = function() {
                    return this._notifyPluginsOfEnabled && C._onPluginEvent("_onDisable", this), this._firstPT = this._overwrittenProps = this._startAt = this._onUpdate = null, this._notifyPluginsOfEnabled = this._active = this._lazy = !1, this._propLookup = this._targets ? {} : [], O.prototype.invalidate.call(this), this.vars.immediateRender && (this._time = -1e-10, this.render(Math.min(0, -this._delay))), this
                }, s._enabled = function(e, t) {
                    if (u || l.wake(), e && this._gc) {
                        var i, n = this._targets;
                        if (n)
                            for (i = n.length; --i > -1;) this._siblings[i] = $(n[i], this, !0);
                        else this._siblings = $(this.target, this, !0)
                    }
                    return O.prototype._enabled.call(this, e, t), !(!this._notifyPluginsOfEnabled || !this._firstPT) && C._onPluginEvent(e ? "_onEnable" : "_onDisable", this)
                }, C.to = function(e, t, i) {
                    return new C(e, t, i)
                }, C.from = function(e, t, i) {
                    return i.runBackwards = !0, i.immediateRender = 0 != i.immediateRender, new C(e, t, i)
                }, C.fromTo = function(e, t, i, n) {
                    return n.startAt = i, n.immediateRender = 0 != n.immediateRender && 0 != i.immediateRender, new C(e, t, n)
                }, C.delayedCall = function(e, t, i, n, r) {
                    return new C(t, 0, {
                        delay: e,
                        onComplete: t,
                        onCompleteParams: i,
                        callbackScope: n,
                        onReverseComplete: t,
                        onReverseCompleteParams: i,
                        immediateRender: !1,
                        lazy: !1,
                        useFrames: r,
                        overwrite: 0
                    })
                }, C.set = function(e, t) {
                    return new C(e, 0, t)
                }, C.getTweensOf = function(e, t) {
                    if (null == e) return [];
                    e = "string" != typeof e ? e : C.selector(e) || e;
                    var i, n, r, o;
                    if ((d(e) || M(e)) && "number" != typeof e[0]) {
                        for (i = e.length, n = []; --i > -1;) n = n.concat(C.getTweensOf(e[i], t));
                        for (i = n.length; --i > -1;)
                            for (o = n[i], r = i; --r > -1;) o === n[r] && n.splice(i, 1)
                    } else if (e._gsTweenID)
                        for (n = $(e).concat(), i = n.length; --i > -1;)(n[i]._gc || t && !n[i].isActive()) && n.splice(i, 1);
                    return n || []
                }, C.killTweensOf = C.killDelayedCallsTo = function(e, t, i) {
                    "object" == typeof t && (i = t, t = !1);
                    for (var n = C.getTweensOf(e, t), r = n.length; --r > -1;) n[r]._kill(i, e)
                };
                var te = v("plugins.TweenPlugin", function(e, t) {
                    this._overwriteProps = (e || "").split(","), this._propName = this._overwriteProps[0], this._priority = t || 0, this._super = te.prototype
                }, !0);
                if (s = te.prototype, te.version = "1.19.0", te.API = 2, s._firstPT = null, s._addTween = U, s.setRatio = B, s._kill = function(e) {
                        var t, i = this._overwriteProps,
                            n = this._firstPT;
                        if (null != e[this._propName]) this._overwriteProps = [];
                        else
                            for (t = i.length; --t > -1;) null != e[i[t]] && i.splice(t, 1);
                        for (; n;) null != e[n.n] && (n._next && (n._next._prev = n._prev), n._prev ? (n._prev._next = n._next, n._prev = null) : this._firstPT === n && (this._firstPT = n._next)), n = n._next;
                        return !1
                    }, s._mod = s._roundProps = function(e) {
                        for (var t, i = this._firstPT; i;) t = e[this._propName] || null != i.n && e[i.n.split(this._propName + "_").join("")], t && "function" == typeof t && (2 === i.f ? i.t._applyPT.m = t : i.m = t), i = i._next
                    }, C._onPluginEvent = function(e, t) {
                        var i, n, r, o, a, s = t._firstPT;
                        if ("_onInitAllProps" === e) {
                            for (; s;) {
                                for (a = s._next, n = r; n && n.pr > s.pr;) n = n._next;
                                (s._prev = n ? n._prev : o) ? s._prev._next = s: r = s, (s._next = n) ? n._prev = s : o = s, s = a
                            }
                            s = t._firstPT = r
                        }
                        for (; s;) s.pg && "function" == typeof s.t[e] && s.t[e]() && (i = !0), s = s._next;
                        return i
                    }, te.activate = function(e) {
                        for (var t = e.length; --t > -1;) e[t].API === te.API && (W[(new e[t])._propName] = e[t]);
                        return !0
                    }, g.plugin = function(e) {
                        if (!(e && e.propName && e.init && e.API)) throw "illegal plugin definition.";
                        var t, i = e.propName,
                            n = e.priority || 0,
                            r = e.overwriteProps,
                            o = {
                                init: "_onInitTween",
                                set: "setRatio",
                                kill: "_kill",
                                round: "_mod",
                                mod: "_mod",
                                initAll: "_onInitAllProps"
                            },
                            a = v("plugins." + i.charAt(0).toUpperCase() + i.substr(1) + "Plugin", function() {
                                te.call(this, i, n), this._overwriteProps = r || []
                            }, !0 === e.global),
                            s = a.prototype = new te(i);
                        s.constructor = a, a.API = e.API;
                        for (t in o) "function" == typeof e[t] && (s[o[t]] = e[t]);
                        return a.version = e.version, te.activate([a]), a
                    }, o = e._gsQueue) {
                    for (a = 0; a < o.length; a++) o[a]();
                    for (s in _) _[s].func || e.console.log("GSAP encountered missing dependency: " + s)
                }
                u = !1
            }
        }("undefined" != typeof module && module.exports && "undefined" != typeof global ? global : this || window), define("com/gsap/TweenLite", function(e) {
            return function() {
                return e.TweenLite
            }
        }(this));
    var _gsScope = "undefined" != typeof module && module.exports && "undefined" != typeof global ? global : this || window;
    (_gsScope._gsQueue || (_gsScope._gsQueue = [])).push(function() {
            "use strict";
            _gsScope._gsDefine("TimelineLite", ["core.Animation", "core.SimpleTimeline", "TweenLite"], function(e, t, i) {
                var n = function(e) {
                        t.call(this, e), this._labels = {}, this.autoRemoveChildren = !0 === this.vars.autoRemoveChildren, this.smoothChildTiming = !0 === this.vars.smoothChildTiming, this._sortChildren = !0, this._onUpdate = this.vars.onUpdate;
                        var i, n, r = this.vars;
                        for (n in r) i = r[n], s(i) && -1 !== i.join("").indexOf("{self}") && (r[n] = this._swapSelfInParams(i));
                        s(r.tweens) && this.add(r.tweens, 0, r.align, r.stagger)
                    },
                    r = i._internals,
                    o = n._internals = {},
                    a = r.isSelector,
                    s = r.isArray,
                    l = r.lazyTweens,
                    u = r.lazyRender,
                    c = _gsScope._gsDefine.globals,
                    h = function(e) {
                        var t, i = {};
                        for (t in e) i[t] = e[t];
                        return i
                    },
                    p = function(e, t, i) {
                        var n, r, o = e.cycle;
                        for (n in o) r = o[n], e[n] = "function" == typeof r ? r(i, t[i]) : r[i % r.length];
                        delete e.cycle
                    },
                    f = o.pauseCallback = function() {},
                    d = function(e) {
                        var t, i = [],
                            n = e.length;
                        for (t = 0; t !== n; i.push(e[t++]));
                        return i
                    },
                    _ = n.prototype = new t;
                return n.version = "1.20.1", _.constructor = n, _.kill()._gc = _._forcingPlayhead = _._hasPause = !1, _.to = function(e, t, n, r) {
                    var o = n.repeat && c.TweenMax || i;
                    return t ? this.add(new o(e, t, n), r) : this.set(e, n, r)
                }, _.from = function(e, t, n, r) {
                    return this.add((n.repeat && c.TweenMax || i).from(e, t, n), r)
                }, _.fromTo = function(e, t, n, r, o) {
                    var a = r.repeat && c.TweenMax || i;
                    return t ? this.add(a.fromTo(e, t, n, r), o) : this.set(e, r, o)
                }, _.staggerTo = function(e, t, r, o, s, l, u, c) {
                    var f, _, m = new n({
                            onComplete: l,
                            onCompleteParams: u,
                            callbackScope: c,
                            smoothChildTiming: this.smoothChildTiming
                        }),
                        g = r.cycle;
                    for ("string" == typeof e && (e = i.selector(e) || e), e = e || [], a(e) && (e = d(e)), o = o || 0, o < 0 && (e = d(e), e.reverse(), o *= -1), _ = 0; _ < e.length; _++) f = h(r), f.startAt && (f.startAt = h(f.startAt), f.startAt.cycle && p(f.startAt, e, _)), g && (p(f, e, _), null != f.duration && (t = f.duration, delete f.duration)), m.to(e[_], t, f, _ * o);
                    return this.add(m, s)
                }, _.staggerFrom = function(e, t, i, n, r, o, a, s) {
                    return i.immediateRender = 0 != i.immediateRender, i.runBackwards = !0, this.staggerTo(e, t, i, n, r, o, a, s)
                }, _.staggerFromTo = function(e, t, i, n, r, o, a, s, l) {
                    return n.startAt = i, n.immediateRender = 0 != n.immediateRender && 0 != i.immediateRender, this.staggerTo(e, t, n, r, o, a, s, l)
                }, _.call = function(e, t, n, r) {
                    return this.add(i.delayedCall(0, e, t, n), r)
                }, _.set = function(e, t, n) {
                    return n = this._parseTimeOrLabel(n, 0, !0), null == t.immediateRender && (t.immediateRender = n === this._time && !this._paused), this.add(new i(e, 0, t), n)
                }, n.exportRoot = function(e, t) {
                    e = e || {}, null == e.smoothChildTiming && (e.smoothChildTiming = !0);
                    var r, o, a = new n(e),
                        s = a._timeline;
                    for (null == t && (t = !0), s._remove(a, !0), a._startTime = 0, a._rawPrevTime = a._time = a._totalTime = s._time, r = s._first; r;) o = r._next, t && r instanceof i && r.target === r.vars.onComplete || a.add(r, r._startTime - r._delay), r = o;
                    return s.add(a, 0), a
                }, _.add = function(r, o, a, l) {
                    var u, c, h, p, f, d;
                    if ("number" != typeof o && (o = this._parseTimeOrLabel(o, 0, !0, r)), !(r instanceof e)) {
                        if (r instanceof Array || r && r.push && s(r)) {
                            for (a = a || "normal", l = l || 0, u = o, c = r.length, h = 0; h < c; h++) s(p = r[h]) && (p = new n({
                                tweens: p
                            })), this.add(p, u), "string" != typeof p && "function" != typeof p && ("sequence" === a ? u = p._startTime + p.totalDuration() / p._timeScale : "start" === a && (p._startTime -= p.delay())), u += l;
                            return this._uncache(!0)
                        }
                        if ("string" == typeof r) return this.addLabel(r, o);
                        if ("function" != typeof r) throw "Cannot add " + r + " into the timeline; it is not a tween, timeline, function, or string.";
                        r = i.delayedCall(0, r)
                    }
                    if (t.prototype.add.call(this, r, o), r._time && r.render((this.rawTime() - r._startTime) * r._timeScale, !1, !1), (this._gc || this._time === this._duration) && !this._paused && this._duration < this.duration())
                        for (f = this, d = f.rawTime() > r._startTime; f._timeline;) d && f._timeline.smoothChildTiming ? f.totalTime(f._totalTime, !0) : f._gc && f._enabled(!0, !1), f = f._timeline;
                    return this
                }, _.remove = function(t) {
                    if (t instanceof e) {
                        this._remove(t, !1);
                        var i = t._timeline = t.vars.useFrames ? e._rootFramesTimeline : e._rootTimeline;
                        return t._startTime = (t._paused ? t._pauseTime : i._time) - (t._reversed ? t.totalDuration() - t._totalTime : t._totalTime) / t._timeScale, this
                    }
                    if (t instanceof Array || t && t.push && s(t)) {
                        for (var n = t.length; --n > -1;) this.remove(t[n]);
                        return this
                    }
                    return "string" == typeof t ? this.removeLabel(t) : this.kill(null, t)
                }, _._remove = function(e, i) {
                    return t.prototype._remove.call(this, e, i), this._last ? this._time > this.duration() && (this._time = this._duration, this._totalTime = this._totalDuration) : this._time = this._totalTime = this._duration = this._totalDuration = 0, this
                }, _.append = function(e, t) {
                    return this.add(e, this._parseTimeOrLabel(null, t, !0, e))
                }, _.insert = _.insertMultiple = function(e, t, i, n) {
                    return this.add(e, t || 0, i, n)
                }, _.appendMultiple = function(e, t, i, n) {
                    return this.add(e, this._parseTimeOrLabel(null, t, !0, e), i, n)
                }, _.addLabel = function(e, t) {
                    return this._labels[e] = this._parseTimeOrLabel(t), this
                }, _.addPause = function(e, t, n, r) {
                    var o = i.delayedCall(0, f, n, r || this);
                    return o.vars.onComplete = o.vars.onReverseComplete = t, o.data = "isPause", this._hasPause = !0, this.add(o, e)
                }, _.removeLabel = function(e) {
                    return delete this._labels[e], this
                }, _.getLabelTime = function(e) {
                    return null != this._labels[e] ? this._labels[e] : -1
                }, _._parseTimeOrLabel = function(t, i, n, r) {
                    var o, a;
                    if (r instanceof e && r.timeline === this) this.remove(r);
                    else if (r && (r instanceof Array || r.push && s(r)))
                        for (a = r.length; --a > -1;) r[a] instanceof e && r[a].timeline === this && this.remove(r[a]);
                    if (o = this.duration() > 99999999999 ? this.recent().endTime(!1) : this._duration, "string" == typeof i) return this._parseTimeOrLabel(i, n && "number" == typeof t && null == this._labels[i] ? t - o : 0, n);
                    if (i = i || 0, "string" != typeof t || !isNaN(t) && null == this._labels[t]) null == t && (t = o);
                    else {
                        if (-1 === (a = t.indexOf("="))) return null == this._labels[t] ? n ? this._labels[t] = o + i : i : this._labels[t] + i;
                        i = parseInt(t.charAt(a - 1) + "1", 10) * Number(t.substr(a + 1)), t = a > 1 ? this._parseTimeOrLabel(t.substr(0, a - 1), 0, n) : o
                    }
                    return Number(t) + i
                }, _.seek = function(e, t) {
                    return this.totalTime("number" == typeof e ? e : this._parseTimeOrLabel(e), !1 !== t)
                }, _.stop = function() {
                    return this.paused(!0)
                }, _.gotoAndPlay = function(e, t) {
                    return this.play(e, t)
                }, _.gotoAndStop = function(e, t) {
                    return this.pause(e, t)
                }, _.render = function(e, t, i) {
                    this._gc && this._enabled(!0, !1);
                    var n, r, o, a, s, c, h, p = this._dirty ? this.totalDuration() : this._totalDuration,
                        f = this._time,
                        d = this._startTime,
                        _ = this._timeScale,
                        m = this._paused;
                    if (e >= p - 1e-7 && e >= 0) this._totalTime = this._time = p, this._reversed || this._hasPausedChild() || (r = !0, a = "onComplete", s = !!this._timeline.autoRemoveChildren, 0 === this._duration && (e <= 0 && e >= -1e-7 || this._rawPrevTime < 0 || 1e-10 === this._rawPrevTime) && this._rawPrevTime !== e && this._first && (s = !0, this._rawPrevTime > 1e-10 && (a = "onReverseComplete"))), this._rawPrevTime = this._duration || !t || e || this._rawPrevTime === e ? e : 1e-10, e = p + 1e-4;
                    else if (e < 1e-7)
                        if (this._totalTime = this._time = 0, (0 !== f || 0 === this._duration && 1e-10 !== this._rawPrevTime && (this._rawPrevTime > 0 || e < 0 && this._rawPrevTime >= 0)) && (a = "onReverseComplete", r = this._reversed), e < 0) this._active = !1, this._timeline.autoRemoveChildren && this._reversed ? (s = r = !0, a = "onReverseComplete") : this._rawPrevTime >= 0 && this._first && (s = !0), this._rawPrevTime = e;
                        else {
                            if (this._rawPrevTime = this._duration || !t || e || this._rawPrevTime === e ? e : 1e-10, 0 === e && r)
                                for (n = this._first; n && 0 === n._startTime;) n._duration || (r = !1), n = n._next;
                            e = 0, this._initted || (s = !0)
                        }
                    else {
                        if (this._hasPause && !this._forcingPlayhead && !t) {
                            if (e >= f)
                                for (n = this._first; n && n._startTime <= e && !c;) n._duration || "isPause" !== n.data || n.ratio || 0 === n._startTime && 0 === this._rawPrevTime || (c = n), n = n._next;
                            else
                                for (n = this._last; n && n._startTime >= e && !c;) n._duration || "isPause" === n.data && n._rawPrevTime > 0 && (c = n), n = n._prev;
                            c && (this._time = e = c._startTime, this._totalTime = e + this._cycle * (this._totalDuration + this._repeatDelay))
                        }
                        this._totalTime = this._time = this._rawPrevTime = e
                    }
                    if (this._time !== f && this._first || i || s || c) {
                        if (this._initted || (this._initted = !0), this._active || !this._paused && this._time !== f && e > 0 && (this._active = !0), 0 === f && this.vars.onStart && (0 === this._time && this._duration || t || this._callback("onStart")), (h = this._time) >= f)
                            for (n = this._first; n && (o = n._next,
                                    h === this._time && (!this._paused || m));)(n._active || n._startTime <= h && !n._paused && !n._gc) && (c === n && this.pause(), n._reversed ? n.render((n._dirty ? n.totalDuration() : n._totalDuration) - (e - n._startTime) * n._timeScale, t, i) : n.render((e - n._startTime) * n._timeScale, t, i)), n = o;
                        else
                            for (n = this._last; n && (o = n._prev, h === this._time && (!this._paused || m));) {
                                if (n._active || n._startTime <= f && !n._paused && !n._gc) {
                                    if (c === n) {
                                        for (c = n._prev; c && c.endTime() > this._time;) c.render(c._reversed ? c.totalDuration() - (e - c._startTime) * c._timeScale : (e - c._startTime) * c._timeScale, t, i), c = c._prev;
                                        c = null, this.pause()
                                    }
                                    n._reversed ? n.render((n._dirty ? n.totalDuration() : n._totalDuration) - (e - n._startTime) * n._timeScale, t, i) : n.render((e - n._startTime) * n._timeScale, t, i)
                                }
                                n = o
                            }
                        this._onUpdate && (t || (l.length && u(), this._callback("onUpdate"))), a && (this._gc || d !== this._startTime && _ === this._timeScale || (0 === this._time || p >= this.totalDuration()) && (r && (l.length && u(), this._timeline.autoRemoveChildren && this._enabled(!1, !1), this._active = !1), !t && this.vars[a] && this._callback(a)))
                    }
                }, _._hasPausedChild = function() {
                    for (var e = this._first; e;) {
                        if (e._paused || e instanceof n && e._hasPausedChild()) return !0;
                        e = e._next
                    }
                    return !1
                }, _.getChildren = function(e, t, n, r) {
                    r = r || -9999999999;
                    for (var o = [], a = this._first, s = 0; a;) a._startTime < r || (a instanceof i ? !1 !== t && (o[s++] = a) : (!1 !== n && (o[s++] = a), !1 !== e && (o = o.concat(a.getChildren(!0, t, n)), s = o.length))), a = a._next;
                    return o
                }, _.getTweensOf = function(e, t) {
                    var n, r, o = this._gc,
                        a = [],
                        s = 0;
                    for (o && this._enabled(!0, !0), n = i.getTweensOf(e), r = n.length; --r > -1;)(n[r].timeline === this || t && this._contains(n[r])) && (a[s++] = n[r]);
                    return o && this._enabled(!1, !0), a
                }, _.recent = function() {
                    return this._recent
                }, _._contains = function(e) {
                    for (var t = e.timeline; t;) {
                        if (t === this) return !0;
                        t = t.timeline
                    }
                    return !1
                }, _.shiftChildren = function(e, t, i) {
                    i = i || 0;
                    for (var n, r = this._first, o = this._labels; r;) r._startTime >= i && (r._startTime += e), r = r._next;
                    if (t)
                        for (n in o) o[n] >= i && (o[n] += e);
                    return this._uncache(!0)
                }, _._kill = function(e, t) {
                    if (!e && !t) return this._enabled(!1, !1);
                    for (var i = t ? this.getTweensOf(t) : this.getChildren(!0, !0, !1), n = i.length, r = !1; --n > -1;) i[n]._kill(e, t) && (r = !0);
                    return r
                }, _.clear = function(e) {
                    var t = this.getChildren(!1, !0, !0),
                        i = t.length;
                    for (this._time = this._totalTime = 0; --i > -1;) t[i]._enabled(!1, !1);
                    return !1 !== e && (this._labels = {}), this._uncache(!0)
                }, _.invalidate = function() {
                    for (var t = this._first; t;) t.invalidate(), t = t._next;
                    return e.prototype.invalidate.call(this)
                }, _._enabled = function(e, i) {
                    if (e === this._gc)
                        for (var n = this._first; n;) n._enabled(e, !0), n = n._next;
                    return t.prototype._enabled.call(this, e, i)
                }, _.totalTime = function(t, i, n) {
                    this._forcingPlayhead = !0;
                    var r = e.prototype.totalTime.apply(this, arguments);
                    return this._forcingPlayhead = !1, r
                }, _.duration = function(e) {
                    return arguments.length ? (0 !== this.duration() && 0 !== e && this.timeScale(this._duration / e), this) : (this._dirty && this.totalDuration(), this._duration)
                }, _.totalDuration = function(e) {
                    if (!arguments.length) {
                        if (this._dirty) {
                            for (var t, i, n = 0, r = this._last, o = 999999999999; r;) t = r._prev, r._dirty && r.totalDuration(), r._startTime > o && this._sortChildren && !r._paused ? this.add(r, r._startTime - r._delay) : o = r._startTime, r._startTime < 0 && !r._paused && (n -= r._startTime, this._timeline.smoothChildTiming && (this._startTime += r._startTime / this._timeScale), this.shiftChildren(-r._startTime, !1, -9999999999), o = 0), i = r._startTime + r._totalDuration / r._timeScale, i > n && (n = i), r = t;
                            this._duration = this._totalDuration = n, this._dirty = !1
                        }
                        return this._totalDuration
                    }
                    return e && this.totalDuration() ? this.timeScale(this._totalDuration / e) : this
                }, _.paused = function(t) {
                    if (!t)
                        for (var i = this._first, n = this._time; i;) i._startTime === n && "isPause" === i.data && (i._rawPrevTime = 0), i = i._next;
                    return e.prototype.paused.apply(this, arguments)
                }, _.usesFrames = function() {
                    for (var t = this._timeline; t._timeline;) t = t._timeline;
                    return t === e._rootFramesTimeline
                }, _.rawTime = function(e) {
                    return e && (this._paused || this._repeat && this.time() > 0 && this.totalProgress() < 1) ? this._totalTime % (this._duration + this._repeatDelay) : this._paused ? this._totalTime : (this._timeline.rawTime(e) - this._startTime) * this._timeScale
                }, n
            }, !0)
        }), _gsScope._gsDefine && _gsScope._gsQueue.pop()(),
        function(e) {
            "use strict";
            var t = function() {
                return (_gsScope.GreenSockGlobals || _gsScope).TimelineLite
            };
            "undefined" != typeof module && module.exports ? (require("./TweenLite.js"), module.exports = t()) : "function" == typeof define && define.amd && define("com/gsap/TimelineLite", ["TweenLite"], t)
        }();
    var _gsScope = "undefined" != typeof module && module.exports && "undefined" != typeof global ? global : this || window;
    (_gsScope._gsQueue || (_gsScope._gsQueue = [])).push(function() {
            "use strict";
            var e, t, i, n = /(\d|\.)+/g,
                r = /(?:\d|\-\d|\.\d|\-\.\d|\+=\d|\-=\d|\+=.\d|\-=\.\d)+/g,
                o = {
                    aqua: [0, 255, 255],
                    lime: [0, 255, 0],
                    silver: [192, 192, 192],
                    black: [0, 0, 0],
                    maroon: [128, 0, 0],
                    teal: [0, 128, 128],
                    blue: [0, 0, 255],
                    navy: [0, 0, 128],
                    white: [255, 255, 255],
                    fuchsia: [255, 0, 255],
                    olive: [128, 128, 0],
                    yellow: [255, 255, 0],
                    orange: [255, 165, 0],
                    gray: [128, 128, 128],
                    purple: [128, 0, 128],
                    green: [0, 128, 0],
                    red: [255, 0, 0],
                    pink: [255, 192, 203],
                    cyan: [0, 255, 255],
                    transparent: [255, 255, 255, 0]
                },
                a = function(e, t, i) {
                    return e = e < 0 ? e + 1 : e > 1 ? e - 1 : e, 255 * (6 * e < 1 ? t + (i - t) * e * 6 : e < .5 ? i : 3 * e < 2 ? t + (i - t) * (2 / 3 - e) * 6 : t) + .5 | 0
                },
                s = function(e, t) {
                    var i, s, l, u, c, h, p, f, d, _, m, g = "hsl" === t;
                    if (e)
                        if ("number" == typeof e) i = [e >> 16, e >> 8 & 255, 255 & e];
                        else {
                            if ("," === e.charAt(e.length - 1) && (e = e.substr(0, e.length - 1)), o[e]) i = o[e];
                            else if ("#" === e.charAt(0)) 4 === e.length && (s = e.charAt(1), l = e.charAt(2), u = e.charAt(3), e = "#" + s + s + l + l + u + u), e = parseInt(e.substr(1), 16), i = [e >> 16, e >> 8 & 255, 255 & e];
                            else if ("hsl" === e.substr(0, 3))
                                if (i = m = e.match(n), g) {
                                    if (-1 !== e.indexOf("=")) return e.match(r)
                                } else c = Number(i[0]) % 360 / 360, h = Number(i[1]) / 100, p = Number(i[2]) / 100, l = p <= .5 ? p * (h + 1) : p + h - p * h, s = 2 * p - l, i.length > 3 && (i[3] = Number(e[3])), i[0] = a(c + 1 / 3, s, l), i[1] = a(c, s, l), i[2] = a(c - 1 / 3, s, l);
                            else i = e.match(n) || o.transparent;
                            i[0] = Number(i[0]), i[1] = Number(i[1]), i[2] = Number(i[2]), i.length > 3 && (i[3] = Number(i[3]))
                        }
                    else i = o.black;
                    return g && !m && (s = i[0] / 255, l = i[1] / 255, u = i[2] / 255, f = Math.max(s, l, u), d = Math.min(s, l, u), p = (f + d) / 2, f === d ? c = h = 0 : (_ = f - d, h = p > .5 ? _ / (2 - f - d) : _ / (f + d), c = f === s ? (l - u) / _ + (l < u ? 6 : 0) : f === l ? (u - s) / _ + 2 : (s - l) / _ + 4, c *= 60), i[0] = c + .5 | 0, i[1] = 100 * h + .5 | 0, i[2] = 100 * p + .5 | 0), "number" === t ? i[0] << 16 | i[1] << 8 | i[2] : i
                },
                l = function(e, t) {
                    var i, n, r, o = (e + "").match(c) || [],
                        a = 0,
                        l = "";
                    if (!o.length) return e;
                    for (i = 0; i < o.length; i++) n = o[i], r = e.substr(a, e.indexOf(n, a) - a), a += r.length + n.length, n = s(n, t ? "hsl" : "rgb"), 3 === n.length && n.push(1), l += r + (t ? "hsla(" + n[0] + "," + n[1] + "%," + n[2] + "%," + n[3] : "rgba(" + n.join(",")) + ")";
                    return l + e.substr(a)
                },
                u = (_gsScope.GreenSockGlobals || _gsScope).TweenLite,
                c = "(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#(?:[0-9a-f]{3}){1,2}\\b",
                h = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0],
                p = .212671,
                f = .072169,
                d = function(e, t) {
                    var i, n, r = [],
                        o = 0,
                        a = 0;
                    for (i = 0; i < 4; i++) {
                        for (n = 0; n < 5; n++) a = 4 === n ? e[o + 4] : 0, r[o + n] = e[o] * t[n] + e[o + 1] * t[n + 5] + e[o + 2] * t[n + 10] + e[o + 3] * t[n + 15] + a;
                        o += 5
                    }
                    return r
                },
                _ = function(e, t) {
                    var i = 1 - t,
                        n = i * p,
                        r = .71516 * i,
                        o = i * f;
                    return d([n + t, r, o, 0, 0, n, r + t, o, 0, 0, n, r, o + t, 0, 0, 0, 0, 0, 1, 0], e)
                },
                m = function(e, t, i) {
                    var n = s(t),
                        r = n[0] / 255,
                        o = n[1] / 255,
                        a = n[2] / 255,
                        l = 1 - i;
                    return d([l + i * r * p, i * r * .71516, i * r * f, 0, 0, i * o * p, l + i * o * .71516, i * o * f, 0, 0, i * a * p, i * a * .71516, l + i * a * f, 0, 0, 0, 0, 0, 1, 0], e)
                },
                g = function(e, t) {
                    t *= Math.PI / 180;
                    var i = Math.cos(t),
                        n = Math.sin(t);
                    return d([p + .787329 * i + n * -p, .71516 + -.71516 * i + -.71516 * n, f + i * -f + .927831 * n, 0, 0, p + i * -p + .143 * n, .71516 + .28484 * i + .14 * n, f + i * -f + -.283 * n, 0, 0, p + i * -p + -.787329 * n, .71516 + -.71516 * i + .71516 * n, f + .927831 * i + n * f, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1], e)
                },
                v = function(e, t) {
                    return d([t, 0, 0, 0, .5 * (1 - t), 0, t, 0, 0, .5 * (1 - t), 0, 0, t, 0, .5 * (1 - t), 0, 0, 0, 1, 0], e)
                },
                y = function(e, t) {
                    var i, n = _gsScope.PIXI.filters[t],
                        r = e.filters || [],
                        o = r.length;
                    if (!n) throw "PixiPlugin error: " + t + " isn't present.";
                    for (; --o > -1;)
                        if (r[o] instanceof n) return r[o];
                    return i = new n, "BlurFilter" === t && (i.blur = 0), r.push(i), e.filters = r, i
                },
                b = function(e, t, i, n) {
                    t._addTween(i, e, i[e], n[e], e), t._overwriteProps.push(e)
                },
                x = function(e, t) {
                    var i = new _gsScope.PIXI.filters.ColorMatrixFilter;
                    return i.matrix = t, i.brightness(e, !0), i.matrix
                },
                S = {
                    contrast: 1,
                    saturation: 1,
                    colorizeAmount: 0,
                    colorize: "rgb(255,255,255)",
                    hue: 0,
                    brightness: 1
                },
                T = function(e, t, i) {
                    var n, r, o, a = y(e, "ColorMatrixFilter"),
                        s = e._gsColorMatrixFilter = e._gsColorMatrixFilter || {
                            contrast: 1,
                            saturation: 1,
                            colorizeAmount: 0,
                            colorize: "rgb(255,255,255)",
                            hue: 0,
                            brightness: 1
                        },
                        l = t.combineCMF && !("colorMatrixFilter" in t && !t.colorMatrixFilter);
                    o = a.matrix, t.matrix && t.matrix.length === o.length ? (r = t.matrix, 1 !== s.contrast && b("contrast", i, s, S), s.hue && b("hue", i, s, S), 1 !== s.brightness && b("brightness", i, s, S), s.colorizeAmount && (b("colorize", i, s, S), b("colorizeAmount", i, s, S)), 1 !== s.saturation && b("saturation", i, s, S)) : (r = h.slice(), null != t.contrast ? (r = v(r, Number(t.contrast)), b("contrast", i, s, t)) : 1 !== s.contrast && (l ? r = v(r, s.contrast) : b("contrast", i, s, S)), null != t.hue ? (r = g(r, Number(t.hue)), b("hue", i, s, t)) : s.hue && (l ? r = g(r, s.hue) : b("hue", i, s, S)), null != t.brightness ? (r = x(Number(t.brightness), r), b("brightness", i, s, t)) : 1 !== s.brightness && (l ? r = x(s.brightness, r) : b("brightness", i, s, S)), null != t.colorize ? (t.colorizeAmount = "colorizeAmount" in t ? Number(t.colorizeAmount) : 1, r = m(r, t.colorize, t.colorizeAmount), b("colorize", i, s, t), b("colorizeAmount", i, s, t)) : s.colorizeAmount && (l ? r = m(r, s.colorize, s.colorizeAmount) : (b("colorize", i, s, S), b("colorizeAmount", i, s, S))), null != t.saturation ? (r = _(r, Number(t.saturation)), b("saturation", i, s, t)) : 1 !== s.saturation && (l ? r = _(r, s.saturation) : b("saturation", i, s, S))), n = r.length;
                    for (; --n > -1;) r[n] !== o[n] && i._addTween(o, n, o[n], r[n], "colorMatrixFilter");
                    i._overwriteProps.push("colorMatrixFilter")
                },
                w = function(t, i, n, r, o) {
                    var a = r._firstPT = {
                        _next: r._firstPT,
                        t: t,
                        p: i,
                        proxy: {},
                        f: "function" == typeof t[i]
                    };
                    a.proxy[i] = "rgb(" + s(a.f ? t[i.indexOf("set") || "function" != typeof t["get" + i.substr(3)] ? i : "get" + i.substr(3)]() : t[i]).join(",") + ")", o._addTween(a.proxy, i, "get", "number" == typeof n ? "rgb(" + s(n, !1).join(",") + ")" : n, i, null, null, e)
                },
                E = function(e, t) {
                    var i = t.setRatio,
                        n = function(e) {
                            var r, o = n._firstPT;
                            for (i.call(t, e); o;) r = s(o.proxy[o.p], "number"), o.f ? o.t[o.p](r) : o.t[o.p] = r, o = o._next;
                            n.graphics && (n.graphics.dirty++, n.graphics.clearDirty++)
                        };
                    return t.setRatio = n, n
                },
                P = {
                    tint: 1,
                    lineColor: 1,
                    fillColor: 1
                },
                R = "position,scale,skew,pivot,anchor,tilePosition,tileScale".split(","),
                O = {
                    x: "position",
                    y: "position",
                    tileX: "tilePosition",
                    tileY: "tilePosition"
                },
                A = {
                    colorMatrixFilter: 1,
                    saturation: 1,
                    contrast: 1,
                    hue: 1,
                    colorize: 1,
                    colorizeAmount: 1,
                    brightness: 1,
                    combineCMF: 1
                },
                I = Math.PI / 180,
                C = function(e) {
                    return "string" == typeof e && "=" === e.charAt(1) ? e.substr(0, 2) + parseFloat(e.substr(2)) * I : e * I
                };
            for (t = 0; t < R.length; t++) i = R[t], O[i + "X"] = i, O[i + "Y"] = i;
            for (i in o) c += "|" + i + "\\b";
            c = new RegExp(c + ")", "gi"), e = function(e) {
                var t, i = e[0] + " " + e[1];
                c.lastIndex = 0, c.test(i) && (t = -1 !== i.indexOf("hsl(") || -1 !== i.indexOf("hsla("), e[0] = l(e[0], t), e[1] = l(e[1], t))
            }, u.defaultStringFilter || (u.defaultStringFilter = e);
            var M = _gsScope._gsDefine.plugin({
                propName: "pixi",
                priority: 0,
                API: 2,
                global: !0,
                version: "0.1.2",
                init: function(e, t, i, n) {
                    if (!e instanceof _gsScope.PIXI.DisplayObject) return !1;
                    var r, o, a, s, l, u, c, h, p, f;
                    for (u in t) {
                        if (r = O[u], a = t[u], "function" == typeof a && (a = a(n || 0, e)), r) o = -1 !== u.charAt(u.length - 1).toLowerCase().indexOf("x") ? "x" : "y", this._addTween(e[r], o, e[r][o], "skew" === r ? C(a) : a, u);
                        else if ("scale" === u || "anchor" === u || "pivot" === u || "tileScale" === u) this._addTween(e[u], "x", e[u].x, a, u + "X"), this._addTween(e[u], "y", e[u].y, a, u + "Y");
                        else if ("rotation" === u) this._addTween(e, u, e.rotation, C(a), u);
                        else if (A[u]) s || (T(e, t.colorMatrixFilter || t, this), s = !0);
                        else if ("blur" === u || "blurX" === u || "blurY" === u || "blurPadding" === u) {
                            if (l = y(e, "BlurFilter"), this._addTween(l, u, l[u], a, u), 0 !== t.blurPadding)
                                for (c = t.blurPadding || 2 * Math.max(l[u], a), p = e.filters.length; --p > -1;) e.filters[p].padding = Math.max(e.filters[p].padding, c)
                        } else if (P[u])
                            if (h || (h = E(0, this)), ("lineColor" === u || "fillColor" === u) && e instanceof _gsScope.PIXI.Graphics) {
                                for (f = e.graphicsData, p = f.length; --p > -1;) w(f[p], u, a, h, this);
                                h.graphics = e
                            } else w(e, u, a, h, this);
                        else this._addTween(e, u, e[u], a, u);
                        this._overwriteProps.push(u)
                    }
                    return !0
                }
            });
            M.colorProps = P, M.parseColor = s, M.formatColors = l, M.colorStringFilter = e
        }), _gsScope._gsDefine && _gsScope._gsQueue.pop()(),
        function(e) {
            "use strict";
            var t = function() {
                return (_gsScope.GreenSockGlobals || _gsScope).PixiPlugin
            };
            "undefined" != typeof module && module.exports ? (require("../TweenLite.js"), module.exports = t()) : "function" == typeof define && define.amd && define("com/gsap/plugins/PixiPlugin", ["TweenLite"], t)
        }(), define("game/commonUI/UI", ["require", "com/pixijs/pixi", "com/gsap/TimelineLite", "com/gsap/plugins/PixiPlugin"], function(e) {
            function t(e, i) {
                Object.keys(i).forEach(function(n) {
                    void 0 !== e[n] && ("object" == typeof e[n] && "object" == typeof i[n] ? t(e[n], i[n]) : e[n] = i[n])
                })
            }

            function i(e) {
                n.Container.call(this), this.opts = e || {}
            }
            var n = e("com/pixijs/pixi");
            e("com/gsap/TimelineLite"), e("com/gsap/plugins/PixiPlugin");
            var r = window.TweenLite;
            return i.prototype = Object.create(n.Container.prototype), i.prototype.addComponents = function(e) {
                for (var t = Object.keys(e), i = 0; i < t.length; i++) this[t[i]] = e[t[i]], e[t[i]].name = t[i], this.addChild(e[t[i]])
            }, i.prototype.setProps = function(e) {
                t(this, e)
            }, i.prototype.focus = function() {
                !this.opts.gameLayer instanceof n.Container || (this.focusTween = r.to(this.opts.gameLayer, .2, {
                    pixi: {
                        blur: 10
                    }
                }))
            }, i.prototype.unFocus = function() {
                !this.opts.gameLayer instanceof n.Container || (this.focusTween && this.focusTween.pause(), null !== this.opts.gameLayer.filters && r.to(this.opts.gameLayer, .2, {
                    pixi: {
                        blur: 0
                    },
                    onComplete: function() {
                        this.target.filters = null
                    }
                }))
            }, i
        }), define("game/commonUI/FrameSprite", ["require", "com/pixijs/pixi"], function(e) {
            function t() {
                i.Sprite.call(this, i.Texture.EMPTY)
            }
            var i = e("com/pixijs/pixi");
            return t.prototype = Object.create(i.Sprite.prototype, {
                frame: {
                    get: function() {
                        return this.texture
                    },
                    set: function(e) {
                        i.utils.TextureCache[e] && (this.texture = i.Texture.fromFrame(e))
                    }
                }
            }), t
        }), define("game/commonUI/Footer", ["require", "./FrameSprite"], function(e) {
            function t(e) {
                i.call(this);
                for (var t = Object.keys(e), n = 0; n < t.length; n++) this.addMeter(t[n], e[t[n]])
            }
            var i = e("./FrameSprite");
            return t.prototype = Object.create(i.prototype), t.prototype.addMeter = function(e, t) {
                this[e] = t, this.addChild(t), t.name = e
            }, t
        }), define("game/commonUI/super", [], function() {
            function e(t, i, n, r) {
                var o = Object.getOwnPropertyDescriptor(t, i);
                if (void 0 === o) {
                    var a = Object.getPrototypeOf(t);
                    null !== a && e(a, i, n, r)
                } else if ("value" in o && o.writable) o.value = n;
                else {
                    var s = o.set;
                    void 0 !== s && s.call(r, n)
                }
                return n
            }
            return {
                set: e
            }
        }), define("game/commonUI/Meter", ["require", "com/pixijs/pixi", "./super"], function(e) {
            function t(e) {
                i.Container.call(this);
                var t = e || {};
                this._label = new i.Text(t.label || " ", {
                    fontFamily: "Oswald, Arial, sans-serif",
                    padding: 20,
                    fontSize: t.labelSize || 24,
                    fill: t.labelFill || 0
                }), this._value = new i.Text(t.value || " ", {
                    fontFamily: "Oswald, Arial, sans-serif",
                    padding: 20,
                    fontSize: t.valueSize || 24,
                    fill: t.valueFill || 0
                }), this._label.name = "label", this._value.name = "value", this._x = 0, this._align = t.align || "center", this._multiline = t.multiline || !1, this.addChild(this._label, this._value)
            }
            var i = e("com/pixijs/pixi"),
                n = e("./super");
            return t.prototype = Object.create(i.Container.prototype, {
                x: {
                    get: function() {
                        return this._x
                    },
                    set: function(e) {
                        this._x = e, this.alignH()
                    }
                },
                value: {
                    get: function() {
                        return this._value.text
                    },
                    set: function(e) {
                        this._value.text = e, this.alignH()
                    }
                },
                label: {
                    get: function() {
                        return this._label.text
                    },
                    set: function(e) {
                        this._label.text = e, this.alignH()
                    }
                },
                valueStyle: {
                    get: function() {
                        return this._value.style
                    },
                    set: function(e) {
                        this._value.style = e, this.alignH()
                    }
                },
                labelStyle: {
                    get: function() {
                        return this._label.style
                    },
                    set: function(e) {
                        this._label.style = e, this.alignH(), this.centerV()
                    }
                },
                multiline: {
                    get: function() {
                        return this._multiline
                    },
                    set: function(e) {
                        this._multiline = !!e, e ? (n.set(Object.getPrototypeOf(t.prototype), "x", this._x, this), this.centerV()) : (this._label.y = 0, this._label.anchor.x = 0, this._value.anchor.x = 0, this.alignH())
                    }
                },
                align: {
                    get: function() {
                        return this._align
                    },
                    set: function(e) {
                        this._align = e, this.alignH()
                    }
                }
            }), t.prototype.centerV = function() {
                this._multiline && (this._value.x = 0, this._label.y = this._label.height + 10, this._label.anchor.x = .5, this._value.anchor.x = .5)
            }, t.prototype.alignH = function() {
                if (!this._multiline) {
                    var e = this._label.width,
                        i = this._value.width;
                    this._value.x = e + 5, "center" === this._align ? n.set(Object.getPrototypeOf(t.prototype), "x", this._x - (e + 5 + i) / 2, this) : n.set(Object.getPrototypeOf(t.prototype), "x", this._x, this)
                }
            }, t
        }), define("game/commonUI/Button", ["require", "com/pixijs/pixi"], function(e) {
            function t(e) {
                i.Sprite.call(this, i.Texture.EMPTY), e = e || {}, this._textures = {}, this._enabled = !0, this.interactive = !0, this.buttonMode = !0, this.anchor.set(.5), this.enabledTexture = e.enabled, this.disabledTexture = e.disabled, this.pressedTexture = e.pressed, this.overTexture = e.over
            }
            var i = e("com/pixijs/pixi");
            return t.prototype = Object.create(i.Sprite.prototype, {
                enabled: {
                    get: function() {
                        return this._enabled
                    },
                    set: function(e) {
                        this._enabled = !!e, this.interactive = this._enabled, e && this._textures.enabled !== i.Texture.EMPTY ? (this.visible = !0, this.texture = this._textures.enabled) : this._textures.disabled !== i.Texture.EMPTY ? this.texture = this._textures.disabled : this.visible = e
                    }
                },
                enabledTexture: {
                    get: function() {
                        return this._textures.enabled
                    },
                    set: function(e) {
                        this._textures.enabled = void 0 !== i.utils.TextureCache[e] ? i.Texture.fromFrame(e) : i.Texture.EMPTY, this._enabled && (this.texture = this._textures.enabled)
                    }
                },
                disabledTexture: {
                    get: function() {
                        return this._textures.disabled
                    },
                    set: function(e) {
                        this._textures.disabled = void 0 !== i.utils.TextureCache[e] ? i.Texture.fromFrame(e) : i.Texture.EMPTY, this._enabled || (this.visible = !0, this.texture = this._textures.disabled)
                    }
                },
                pressedTexture: {
                    get: function() {
                        return this._textures.pressed
                    },
                    set: function(e) {
                        this.off("pointerdown", this._pointerDown, this), this.off("pointerup", this._pointerUp, this), this.off("pointerupoutside", this._pointerUpOutside, this), void 0 !== i.utils.TextureCache[e] ? (this._textures.pressed = i.Texture.fromFrame(e), this.on("pointerdown", this._pointerDown, this), this.on("pointerup", this._pointerUp, this), this.on("pointerupoutside", this._pointerUpOutside, this)) : this._textures.pressed = i.Texture.EMPTY
                    }
                },
                overTexture: {
                    get: function() {
                        return this._textures.over
                    },
                    set: function(e) {
                        this.off("pointerover", this._pointerOver, this), this.off("pointerout", this._pointerOut, this), void 0 !== i.utils.TextureCache[e] ? (this._textures.over = i.Texture.fromFrame(e), this.on("pointerover", this._pointerOver, this), this.on("pointerout", this._pointerOut, this)) : this._textures.over = i.Texture.EMPTY
                    }
                }
            }), t.prototype._pointerOver = function(e) {
                this._enabled && (e.target.trackedPointers[e.data.identifier].leftDown ? this.texture = this._textures.pressed : this.texture = this._textures.over)
            }, t.prototype._pointerOut = function() {
                this._enabled && (this.texture = this._textures.enabled)
            }, t.prototype._pointerDown = function() {
                this._enabled && (this.texture = this._textures.pressed)
            }, t.prototype._pointerUp = function() {
                this._enabled && (this.texture = this._textures.over || this._textures.enabled)
            }, t.prototype._pointerUpOutside = function() {
                this._enabled && (this.texture = this._textures.enabled)
            }, t
        }), define("game/commonUI/BetConfig", ["require", "com/pixijs/pixi", "./Button", "com/gsap/TweenLite"], function(e) {
            function t() {
                i.Container.call(this), this.controls = new i.Container, this.controls.anchor = {
                    x: .5,
                    y: .5
                }, this.openButton = new n, this.closeButton = new n, this.openButton.name = "openButton", this.closeButton.name = "closeButton", this.openButton.on("pointertap", this.open, this), this.closeButton.on("pointertap", this.close, this), this._enabled = !0, this.addChild(this.controls, this.openButton, this.closeButton), this.close()
            }
            var i = e("com/pixijs/pixi"),
                n = e("./Button");
            e("com/gsap/TweenLite");
            var r = window.TweenLite;
            return t.prototype = Object.create(i.Container.prototype, {
                enabled: {
                    get: function() {
                        return this._enabled
                    },
                    set: function(e) {
                        this._enabled = !!e, this.openButton.enabled = e, e || this.close()
                    }
                }
            }), t.prototype.open = function() {
                this.controls.visible = !0, this.openButton.visible = !1, this.closeButton.visible = !0, r.fromTo(this.controls, .2, {
                    alpha: 0,
                    scaleX: 1.1,
                    scaleY: 1.1
                }, {
                    alpha: 1,
                    scaleX: 1,
                    scaleY: 1
                })
            }, t.prototype.close = function() {
                this.closeButton.visible = !1, this.openButton.visible = !0, r.to(this.controls, .2, {
                    alpha: 0,
                    scaleX: .9,
                    scaleY: .9,
                    onComplete: function() {
                        this.target.visible = !1, this.target.scale.set(1)
                    }
                })
            }, t.prototype.relayout = function() {
                var e = this.controls.children.reduce(function(e, t) {
                    return t.y = e, e + t.height + 14
                }, 0);
                this.controls.pivot.x = this.controls.width * this.controls.anchor.x, this.controls.pivot.y = e * this.controls.anchor.y
            }, t.prototype.addControl = function(e) {
                this[e.name] = e, this.controls.addChild(e), this.relayout()
            }, t
        }), define("game/commonUI/LabelledButton", ["require", "com/pixijs/pixi", "./Button"], function(e) {
            function t(e) {
                n.call(this, e), this._text = new i.Text(" "), this._text.anchor.set(.5), this.addChild(this._text)
            }
            var i = e("com/pixijs/pixi"),
                n = e("./Button");
            return t.prototype = Object.create(n.prototype, {
                text: {
                    get: function() {
                        return this._text.text
                    },
                    set: function(e) {
                        this._text.text = e
                    }
                },
                textStyle: {
                    get: function() {
                        return this._text.style
                    },
                    set: function(e) {
                        this._text.style = e
                    }
                }
            }), t
        }), define("game/commonUI/slot/AutoSpin", ["require", "com/pixijs/pixi", "../Button", "../FrameSprite"], function(e) {
            function t() {
                i.Container.call(this), this._meter = new r, this._meterText = new i.Text(" ", {
                    fontFamily: "Oswald, Arial, sans-serif",
                    fontSize: 40,
                    fill: 16777215
                }), this._meter.anchor.set(.5), this._meterText.anchor.set(.5), this._meter.addChild(this._meterText), this._meter.name = "counter", this._count = 0, this._active = !1, this._startButton = new n, this._stopButton = new n, this._startButton.name = "startButton", this._stopButton.name = "stopButton", this.addChild(this._startButton, this._stopButton, this._meter)
            }
            var i = e("com/pixijs/pixi"),
                n = e("../Button"),
                r = e("../FrameSprite");
            return t.prototype = Object.create(i.Container.prototype, {
                count: {
                    get: function() {
                        return this._count
                    },
                    set: function(e) {
                        this._count = Math.max(e, 0), this._meterText.text = this._count, this._meter.visible = this._count > 0
                    }
                },
                active: {
                    get: function() {
                        return this._active
                    },
                    set: function(e) {
                        this._active = !!e, this._stopButton.visible = e, this._startButton.visible = !e
                    }
                },
                enabled: {
                    get: function() {
                        return this._startButton.enabled
                    },
                    set: function(e) {
                        this._startButton.enabled = e
                    }
                }
            }), t
        }), define("game/commonUI/slot/color", ["require", "com/pixijs/pixi"], function(e) {
            var t, i = e("com/pixijs/pixi");
            return function() {
                if (void 0 !== t) return t;
                var e = document.createElement("canvas"),
                    n = e.getContext("2d"),
                    r = ["footerTitleColour", "footerValueColour", "betControlsTitleColour", "betControlsValueColour", "autoSpinCounterValueColour", "messagePromptColour"];
                return t = {}, r.forEach(function(e) {
                    var r = i.utils.TextureCache[e];
                    if (r) {
                        var o = r.orig,
                            a = r.baseTexture.resolution;
                        n.clearRect(0, 0, 1, 1), n.drawImage(r.baseTexture.source, o.x * a, o.y * a, o.width * a, o.height * a, 0, 0, 1, 1);
                        var s = n.getImageData(0, 0, 1, 1).data;
                        t[e] = i.utils.rgb2hex([].slice.call(s, 0, 3).map(function(e) {
                            return e / 255
                        }))
                    }
                }), t
            }
        }), define("game/commonUI/slot/logic/autoSpinController", ["require", "skbJet/component/gameMsgBus/GameMsgBus"], function(e) {
            function t(e) {
                n = "false" !== e.PaytableResponse.AutoSpinInfo["@enable"].toLowerCase()
            }
            var i = e("skbJet/component/gameMsgBus/GameMsgBus"),
                n = !0;
            return i.subscribe("platformMsg/ClientService/Game.Init", t),
                function(e) {
                    function t(e) {
                        f.count = e, f.active = !0, i.publish("toPlatform", {
                            channel: "Game",
                            topic: "Game.AutoSpinStart"
                        }), i.publish("UI.AutoSpinStart", {
                            count: e
                        })
                    }

                    function r() {
                        f._startButton.enabled = !0, e.spin.enabled = !0, e.betConfig.enabled = !0
                    }

                    function o() {
                        f._startButton.enabled = !1, e.spin.enabled = !1, e.betConfig.enabled = !1, i.publish("UI.AutoSpinDialogueOpen"), i.publish("toPlatformRequest", {
                            channel: "Game",
                            topic: "Game.AutoSpinOption",
                            data: {},
                            successCallback: function(e) {
                                e && "cancel" !== e.action ? t(e.steps) : (i.publish("UI.AutoSpinDialogueClose"), r())
                            },
                            failCallback: r
                        })
                    }

                    function a() {
                        f._meter.visible = !1, f.count = 0, f.active = !1
                    }

                    function s() {
                        f.count = 0, f.active = !1, f.emit("stop", {
                            type: "autospinstop"
                        }), i.publish("toPlatform", {
                            channel: "Game",
                            topic: "Game.AutoSpinStopped"
                        })
                    }

                    function l() {
                        f.count -= 1, f.count <= 0 && s()
                    }

                    function u(e) {
                        f.count > 0 && f.active, "BaseGame" === e.response.OutcomeDetail.Stage && (f.enabled = !1, l())
                    }

                    function c(e) {
                        e.response.PromotionalFreeSpin && e.response.PromotionalFreeSpin["@count"] <= 0 && s()
                    }

                    function h() {
                        f.active && s()
                    }

                    function p(t) {
                        "BaseGame" === t.response.OutcomeDetail.Stage && (f.enabled = !0, e.spin.enabled = !0)
                    }
                    var f = e.autoSpin;
                    if (!n) return void Object.defineProperty(f, "visible", {
                        value: !1,
                        writable: !1
                    });
                    f._stopButton.visible = !1, f._meter.visible = !1, f._startButton.on("pointertap", o), f._stopButton.on("pointertap", a), i.subscribe("platformMsg/ClientService/Game.StopAutoSpin", s), i.subscribe("onBeforeRequest", u), i.subscribe("onResolveStage", c), i.subscribe("onAbortStage", h), i.subscribe("onResetNextStage", p)
                }
        }), define("game/commonUI/BetConfigItem", ["require", "com/pixijs/pixi"], function(e) {
            function t(e) {
                i.Sprite.call(this, i.Texture.EMPTY), this.name = e
            }
            var i = e("com/pixijs/pixi");
            return t.prototype = Object.create(i.Sprite.prototype, {
                frame: {
                    get: function() {
                        return this.texture
                    },
                    set: function(e) {
                        i.utils.TextureCache[e] && (this.texture = i.Texture.fromFrame(e), this.parent.parent.relayout())
                    }
                }
            }), t
        }), define("game/commonUI/BetControl", ["require", "com/pixijs/pixi", "./Button", "./BetConfigItem"], function(e) {
            function t(e, t) {
                r.call(this, e), this._labelText = new i.Text(t.label || " ", {
                    fontFamily: "Oswald, Arial, sans-serif",
                    padding: 20,
                    fontSize: 30,
                    fill: t.labelFill || 0
                }), this._valueText = new i.Text(this._value || " ", {
                    fontFamily: "Oswald, Arial, sans-serif",
                    padding: 20,
                    fontSize: 54,
                    fill: t.valueFill || 0
                }), this._labelText.anchor.x = .5, this._valueText.anchor.x = .5, this._labelText.name = "label", this._valueText.name = "value", this.addChild(this._labelText, this._valueText), this._value = void 0 !== t.value ? t.value : t.values[0], t.values && (this._values = t.values, this._displayValues = t.displayValues, this._valueText.text = this.displayValue, this.plus = new n, this.minus = new n, this.plus.name = "plus", this.minus.name = "minus", this.plus.enabled = !1, this.minus.enabled = !1, this.addChild(this.plus, this.minus), t.values.length > 1 && (this._pips = this._values.map(function(e, t) {
                    var n = i.Sprite.fromFrame("landscape_betIndicatorInactive");
                    return n.x = n.width * t, n
                }), this.pips = new i.Container, this.pips.addChild.apply(this.pips, this._pips), this.pips.name = "pips", this.plus.on("pointertap", this.increment, this), this.minus.on("pointertap", this.decrement, this), this.addChild(this.pips))), this.value = this._value
            }
            var i = e("com/pixijs/pixi"),
                n = e("./Button"),
                r = e("./BetConfigItem");
            return t.prototype = Object.create(r.prototype, {
                value: {
                    get: function() {
                        return this._value
                    },
                    set: function(e) {
                        if (void 0 === this._values) this._value = e, this._valueText.text = e;
                        else {
                            if (!(this._values.indexOf(e) > -1)) throw new Error("Attempting to set value outside of values array");
                            this._value = e, this._valueText.text = this.displayValue, this._values.length > 1 && (this.plus.enabled = e !== this._values[this._values.length - 1], this.minus.enabled = e !== this._values[0], this._pips.forEach(function(t, n) {
                                var r = e === this._values[n] ? "landscape_betIndicatorActive" : "landscape_betIndicatorInactive";
                                t.texture = i.Texture.fromFrame(r)
                            }, this))
                        }
                    }
                },
                displayValue: {
                    get: function() {
                        return void 0 === this._displayValues ? this._value.toString() : this._displayValues[this._values.indexOf(this._value)]
                    }
                },
                increment: {
                    value: function() {
                        if (void 0 === this._values || 0 === this._values.length) throw new Error("An array of values is required in order to increment");
                        var e = this._values.indexOf(this._value) + 1;
                        e < this._values.length && this.emit("change", {
                            name: this._name,
                            value: this._values[e]
                        })
                    }
                },
                decrement: {
                    value: function() {
                        if (void 0 === this._values || 0 === this._values.length) throw new Error("An array of values is required in order to decrement");
                        var e = this._values.indexOf(this._value) - 1;
                        e >= 0 && this.emit("change", {
                            name: this._name,
                            value: this._values[e]
                        })
                    }
                },
                label: {
                    get: function() {
                        return this._labelText.text
                    },
                    set: function(e) {
                        this._labelText.text = e
                    }
                },
                frame: {
                    get: function() {
                        return this.texture
                    },
                    set: function(e) {
                        i.utils.TextureCache[e] && (this.texture = i.Texture.fromFrame(e), this.center())
                    }
                }
            }), t.prototype.center = function() {
                this._labelText.x = this.width / 2, this._labelText.y = this.height / 2, this._valueText.x = this.width / 2, this._valueText.y = this.height / 2 - this._valueText.height, this._values && (this.plus.y = this.height / 2, this.plus.x = this.width - this.height / 2, this.minus.y = this.height / 2, this.minus.x = this.height / 2, this._values.length > 1 && (this.pips.x = this.width / 2 - this.pips.width / 2, this.pips.y = this.height - 50)), this.parent.parent.relayout()
            }, t
        }), define("game/commonUI/slot/logic/betController", ["require", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/currencyHelper/currencyHelper", "../../Meter", "../../BetControl", "../../BetConfigItem", "../betData", "../color"], function(e) {
            function t(e) {
                var t = e.PaytableResponse.PatternSliderInfo,
                    i = e.GameLogicResponse.PatternSliderInput;
                s._betInfo = t.BetInfo.Step instanceof Array ? t.BetInfo.Step : [t.BetInfo.Step], s._patternInfo = t.PatternInfo.Step, s._patternsBet = i.PatternsBet, s._betPerPattern = i.BetPerPattern
            }
            var i = e("skbJet/component/gameMsgBus/GameMsgBus"),
                n = e("skbJet/component/currencyHelper/currencyHelper"),
                r = e("../../Meter"),
                o = e("../../BetControl"),
                a = e("../../BetConfigItem"),
                s = e("../betData"),
                l = e("../color");
            return i.subscribe("platformMsg/ClientService/Game.Init", t),
                function(e) {
                    function t(e, t) {
                        g.addControl(new o("betPerPattern", {
                            values: e.map(function(e) {
                                return parseInt(e, 10)
                            }),
                            displayValues: e.map(function(e) {
                                return n.formatBalance(n.fromStakeUnits(e))
                            }),
                            value: parseInt(t, 10),
                            valueFill: v.betControlsValueColour,
                            labelFill: v.betControlsTitleColour
                        }))
                    }

                    function u(e, t) {
                        g.addControl(new o("patternsBet", {
                            values: e.map(function(e) {
                                return parseInt(e, 10)
                            }),
                            value: parseInt(t, 10),
                            valueFill: v.betControlsValueColour,
                            labelFill: v.betControlsTitleColour
                        }))
                    }

                    function c() {
                        var t = s.betPerPattern * s.patternsBet,
                            i = n.formatBalance(n.fromStakeUnits(t));
                        g.addControl(new o("betSummary", {
                            value: i,
                            valueFill: v.betControlsValueColour,
                            labelFill: v.betControlsTitleColour
                        })), e.footer.bet.value = i
                    }

                    function h() {
                        e.spin.visible = !1, e.prompt.visible = !1, e.autoSpin.visible = !1, e.footer.win.value = " ", e.focus(), i.publish("UI.BetConfigOpen")
                    }

                    function p() {
                        e.spin.visible = !0, e.autoSpin.visible = !0, e.unFocus(), i.publish("UI.BetConfigClose")
                    }

                    function f() {
                        g.open(), h()
                    }

                    function d() {
                        g.enabled = !1, e.prompt.visible = !1, e.unFocus()
                    }

                    function _() {
                        e.autoSpin.active || (g.enabled = !0)
                    }

                    function m(t) {
                        "BaseGame" === t.response.OutcomeDetail.Stage && (g.enabled = !0, e.spin.enabled = !0)
                    }
                    var g = e.betConfig,
                        v = l();
                    s.patternInfo instanceof Array && s.patternInfo.length > 1 ? function() {
                        function r() {
                            var t = n.fromStakeUnits(s.totalBet),
                                r = n.formatBalance(t);
                            i.publish("toPlatform", {
                                channel: "Game",
                                topic: "Game.Control",
                                data: {
                                    name: "stake",
                                    event: "change",
                                    params: [t, r]
                                }
                            }), g.betSummary.value = r, e.footer.bet.value = r, e.footer.win.value = " "
                        }

                        function o(e) {
                            s._betPerPattern = e.value, r(), i.publish("toPlatform", {
                                channel: "Game",
                                topic: "Game.Control",
                                data: {
                                    name: "betPerPattern",
                                    event: "change",
                                    params: [e.value, n.formatBalance(n.fromStakeUnits(e.value))]
                                }
                            }), g.betPerPattern.value = e.value
                        }

                        function a(e) {
                            s._patternsBet = e.value, r(), i.publish("toPlatform", {
                                channel: "Game",
                                topic: "Game.Control",
                                data: {
                                    name: "patternsBet",
                                    event: "change",
                                    params: [e.value]
                                }
                            }), g.patternsBet.value = e.value
                        }

                        function l(e) {
                            if ("betPerPattern" === e.option || "patternsBet" === e.option) {
                                var t = parseInt(e.value, 10);
                                "betPerPattern" === e.option && t !== s._betPerPattern ? (s._betPerPattern = t, g.betPerPattern.value = t) : "patternsBet" === e.option && t !== s._patternsBet && (s._patternsBet = t, g.patternsBet.value = t), r()
                            }
                        }
                        t(s.betInfo, s.betPerPattern), u(s.patternInfo, s.patternsBet), c(), g.betPerPattern.on("change", o), g.patternsBet.on("change", a), i.subscribe("platformMsg/ConsoleService/Game.Control", l)
                    }() : function() {
                        function t() {
                            var t = n.fromStakeUnits(s.totalBet),
                                r = n.formatBalance(t);
                            i.publish("toPlatform", {
                                channel: "Game",
                                topic: "Game.Control",
                                data: {
                                    name: "stake",
                                    event: "change",
                                    params: [t, r]
                                }
                            }), g.totalBet.value = s.totalBet, g.meterBar.betPerPattern.value = n.formatBalance(n.fromStakeUnits(s.betPerPattern)), e.footer.bet.value = r, e.footer.win.value = " "
                        }

                        function l(e) {
                            s._betPerPattern = e.value / s.patternsBet, i.publish("toPlatform", {
                                channel: "Game",
                                topic: "Game.Control",
                                data: {
                                    name: "betPerPattern",
                                    event: "change",
                                    params: [s._betPerPattern, n.formatBalance(n.fromStakeUnits(s._betPerPattern))]
                                }
                            }), t()
                        }

                        function u(e) {
                            if ("betPerPattern" === e.option) {
                                var i = parseInt(e.value, 10);
                                i !== s.betPerPattern && (s._betPerPattern = i, t())
                            }
                        }
                        var c = s.betInfo.map(function(e) {
                                return e * s.patternsBet
                            }),
                            h = s.totalBet;
                        g.addControl(new a("meterBar")), g.meterBar.betPerPattern = new r({
                            value: n.formatBalance(n.fromStakeUnits(s.betPerPattern)),
                            valueFill: v.betControlsValueColour,
                            valueSize: 30,
                            labelFill: v.betControlsTitleColour,
                            labelSize: 30
                        }), g.meterBar.patternsBet = new r({
                            value: s.patternsBet,
                            valueFill: v.betControlsValueColour,
                            valueSize: 30,
                            labelFill: v.betControlsTitleColour,
                            labelSize: 30
                        }), g.meterBar.addChild(g.meterBar.betPerPattern, g.meterBar.patternsBet), g.addControl(new o("totalBet", {
                            values: c,
                            displayValues: c.map(function(e) {
                                return n.formatBalance(n.fromStakeUnits(e))
                            }),
                            value: h,
                            valueFill: v.betControlsValueColour,
                            labelFill: v.betControlsTitleColour
                        })), e.footer.bet.value = n.formatBalance(n.fromStakeUnits(h)), g.totalBet.on("change", l), i.subscribe("platformMsg/ConsoleService/Game.Control", u)
                    }(), g.openButton.on("pointertap", h), g.closeButton.on("pointertap", p), e.prompt.on("pointertap", f), i.subscribe("onBeforeRequest", d), i.subscribe("onBeginNewGame", _), i.subscribe("onResetNextStage", m)
                }
        }), define("game/commonUI/slot/logic/promoSpinsController", ["require", "skbJet/component/gameMsgBus/GameMsgBus"], function(e) {
            function t(e) {
                r = "freespin" === e.serverConfig.paramGame.playMode
            }

            function i(e) {
                r && (o = e.GameLogicResponse.PromotionalFreeSpin["@count"])
            }
            var n = e("skbJet/component/gameMsgBus/GameMsgBus"),
                r = !1,
                o = 0;
            return n.subscribe("platformMsg/Kernel/System.Init", t), n.subscribe("platformMsg/ClientService/Game.Init", i),
                function(e) {
                    function t(t) {
                        e.footer.promoSpins.value = t.response.PromotionalFreeSpin["@count"]
                    }
                    if (!r) return e.footer.promoSpins.visible = !1, void(e.footer.balance.visible = !0);
                    n.subscribe("onResolveStage", t), e.footer.promoSpins.value = o, e.footer.promoSpins.visible = !0, e.footer.balance.visible = !1, e.prompt.visible = !1
                }
        }), define("game/commonUI/slot/baseGameUI", ["require", "skbJet/component/gameMsgBus/GameMsgBus", "../UI", "../Footer", "../Meter", "../Button", "../BetConfig", "../LabelledButton", "./AutoSpin", "./color", "./logic/autoSpinController", "./logic/betController", "./logic/promoSpinsController"], function(e) {
            function t() {
                _.addComponents({
                    footer: new o({
                        promoSpins: new a,
                        balance: new a,
                        bet: new a,
                        win: new a
                    }),
                    spin: new s,
                    skip: new s,
                    play: new s,
                    autoSpin: new c,
                    betConfig: new l,
                    prompt: new u
                }), p(_), f(_), d(_);
                var e = h();
                _.footer.balance.labelStyle.fill = e.footerTitleColour, _.footer.promoSpins.labelStyle.fill = e.footerTitleColour, _.footer.win.labelStyle.fill = e.footerTitleColour, _.footer.bet.labelStyle.fill = e.footerTitleColour, _.footer.balance.valueStyle.fill = e.footerValueColour, _.footer.promoSpins.valueStyle.fill = e.footerValueColour, _.footer.win.valueStyle.fill = e.footerValueColour, _.footer.bet.valueStyle.fill = e.footerValueColour, _.prompt.textStyle.fill = e.messagePromptColour, _.autoSpin._meterText.fill = e.autoSpinCounterValueColour
            }

            function i(e) {
                _.footer.balance.value = e.balance
            }
            var n = e("skbJet/component/gameMsgBus/GameMsgBus"),
                r = e("../UI"),
                o = e("../Footer"),
                a = e("../Meter"),
                s = e("../Button"),
                l = e("../BetConfig"),
                u = e("../LabelledButton"),
                c = e("./AutoSpin"),
                h = e("./color"),
                p = e("./logic/autoSpinController"),
                f = e("./logic/betController"),
                d = e("./logic/promoSpinsController"),
                _ = new r;
            return _.name = "baseGameUI", n.subscribe("platformMsg/ClientService/Game.Init", t), n.subscribe("platformMsg/ClientService/Account.Balances", i), _
        }), define("game/commonUI/slot/freeSpinsUI", ["require", "skbJet/component/gameMsgBus/GameMsgBus", "../UI", "../Footer", "../Meter", "../Button", "./color"], function(e) {
            function t() {
                l.addComponents({
                    footer: new r({
                        spins: new o,
                        bonusWin: new o,
                        win: new o
                    }),
                    skip: new a,
                    play: new a
                });
                var e = s();
                l.footer.spins.labelStyle.fill = e.footerTitleColour, l.footer.win.labelStyle.fill = e.footerTitleColour, l.footer.bonusWin.labelStyle.fill = e.footerTitleColour, l.footer.spins.valueStyle.fill = e.footerValueColour, l.footer.win.valueStyle.fill = e.footerValueColour, l.footer.bonusWin.valueStyle.fill = e.footerValueColour
            }
            var i = e("skbJet/component/gameMsgBus/GameMsgBus"),
                n = e("../UI"),
                r = e("../Footer"),
                o = e("../Meter"),
                a = e("../Button"),
                s = e("./color"),
                l = new n;
            return l.name = "freeSpinsUI", i.subscribe("platformMsg/ClientService/Game.Init", t), l
        }), define("game/commonUI/slot/slotUI", ["require", "com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "./layout", "./baseGameUI", "./freeSpinsUI"], function(e) {
            function t(e) {
                Object.assign(u.opts, e), Object.assign(c.opts, e)
            }

            function i() {
                u.setProps(l[o].baseGame), c.setProps(l[o].freeSpins)
            }

            function n() {
                var e = window.innerWidth,
                    t = window.innerHeight,
                    n = e > t ? "landscape" : "portrait";
                n !== o && null !== l[n] && (o = n, i(n))
            }

            function r() {
                n(), null !== l.portrait && null !== l.landscape && window.addEventListener("resize", n)
            }
            var o, a = e("com/pixijs/pixi"),
                s = e("skbJet/component/gameMsgBus/GameMsgBus"),
                l = e("./layout"),
                u = e("./baseGameUI"),
                c = e("./freeSpinsUI"),
                h = new a.Container;
            return h.addChild(u, c), h.name = "commonUI", s.subscribe("platformMsg/ClientService/Game.Init", r), {
                container: h,
                layout: l,
                applyLayout: i,
                baseGame: u,
                freeSpins: c,
                set: t
            }
        }), define("game/views/reels/reelsUtils", ["require", "game/data/setupData", "game/data/reelModel", "game/utils/miscUtils"], function(e) {
            function t(e, t) {
                if (!(e.length > -1)) return e.Mapping;
                for (var i = 0; i < e.length; i++)
                    if (e[i]["@name"] === t) {
                        var n = e[i].Mapping;
                        return n
                    }
            }

            function i(e, t) {
                var i = t === l.BASE_GAME,
                    n = c.getElementFromName(e, i ? "BaseGame.ReelSetTrigger" : "FreeSpin.ReelSetTrigger");
                return n.Trigger ? n.Trigger["@name"] : (c.log("WARNING! BaseGame.ReelSetTrigger reelset name not found", "WARNING"), null)
            }

            function n(e) {
                var t = c.getElementFromName(e, "BaseGame.ReelSetTrigger");
                return t.Trigger ? t.Trigger["@name"] : (c.log("WARNING! BaseGame.ReelSetTrigger reelset name not found", "WARNING"), null)
            }

            function r(e, t) {
                var i = [];
                if (e.length) {
                    for (var n = 0; n < e.length; n++) {
                        var r = e[n];
                        if ("Reels" === r["@name"].split(".")[1] && r["@stage"] === t)
                            for (var o = 0; o < r.Entry.length; o++) i.push(parseInt(r.Entry[o]["@stripIndex"]))
                    }
                    return c.log("STOP LOCATIONS: " + i, "IMPORTANT"), i
                }
                if (e["@stage"] === t)
                    for (var o = 0; o < e.Entry.length; o++) i.push(parseInt(e.Entry[o]["@stripIndex"]));
                return i
            }

            function o(e) {
                var t = c.getElementFromName(e, "FreeSpin.ReelSetTrigger");
                return t && t.Trigger ? t.Trigger["@name"] : ""
            }

            function a(e) {
                var t = u.reelNameArray.indexOf(u.reelSetNum);
                return t = e ? t + 1 : t - 1, t < 0 && (t = u.reelNameArray.length - 1), t > u.reelNameArray.length - 1 && (t = 0), u.reelSetNum = u.reelNameArray[t]
            }

            function s(e) {
                for (var t = {
                        nameArray: [],
                        combinationArray: []
                    }, i = 0; i < e.length; i++) t.nameArray.push(e[i]["@key"]), t.combinationArray.push(e[i]["@value"].split(","));
                return t
            }
            var l = e("game/data/setupData"),
                u = e("game/data/reelModel"),
                c = e("game/utils/miscUtils");
            return {
                parseReelSetKeys: t,
                getReelSetFromTriggerOutcome: i,
                storePreviousFreeSpinsReelSet: o,
                getDebugReelset: a,
                parseFreeSpinsReelCombinations: s,
                getReelSetFromBaseGameForMidFreeSpinsRecovery: n,
                getReelStops: r
            }
        }), define("game/views/reels/reelsController", ["require", "skbJet/component/gameMsgBus/GameMsgBus", "game/commonUI/slot/slotUI", "game/data/gameEvents", "game/data/stateEvents", "game/data/winDataModel", "game/data/gameDataModel", "game/data/setupData", "game/data/reelModel", "game/utils/miscUtils", "game/views/reels/reelsUtils"], function(e) {
            "use strict";
            var t = e("skbJet/component/gameMsgBus/GameMsgBus"),
                i = e("game/commonUI/slot/slotUI"),
                n = e("game/data/gameEvents"),
                r = e("game/data/stateEvents"),
                o = e("game/data/winDataModel"),
                a = e("game/data/gameDataModel"),
                s = e("game/data/setupData"),
                l = e("game/data/reelModel"),
                u = (e("game/utils/miscUtils"), e("game/views/reels/reelsUtils")),
                c = function() {
                    function e(e) {
                        A.onGameInit(e)
                    }

                    function c(e) {
                        C ? I = e : A.onBeforeRequest(e)
                    }

                    function h() {
                        r.publish(r.FROM_RECOVERY_GAME_IN_PROGRESS_NEXT)
                    }

                    function p(e, t) {
                        void 0 === t && (t = "normal");
                        var i = "midFreeSpins" === t;
                        if (o.parsePrizeData(e, a.currentGameState === s.FREE_SPINS || i), i) {
                            var n = o.parseMidFreeSpinsRecoveryPrizeData(e),
                                r = o.getPrizeData();
                            r.perWinlineData = n, l.setFreeSpinsEntrySpinData(r)
                        }
                        var c = e.response.OutcomeDetail.Stage === s.BASE_GAME && e.response.OutcomeDetail.NextStage === s.FREE_SPINS;
                        if (c && !i) {
                            l.freeSpinsStartReelSetNum = u.getReelSetFromTriggerOutcome(e.response.TriggerOutcome, s.FREE_SPINS);
                            var r = o.getPrizeData();
                            l.setFreeSpinsEntrySpinData(r)
                        }
                        l.freeSpinsReelSetCurrent = l.freeSpinsReelSetFromPreviousResponse, l.freeSpinsReelSetFromPreviousResponse = u.storePreviousFreeSpinsReelSet(e.response.TriggerOutcome), A.onResolveStage(e, c, i)
                    }

                    function f(e) {
                        A.hideStaticWinlineSymbols(e)
                    }

                    function d() {
                        A.fadeNonWinSymbols()
                    }

                    function _() {
                        A.resetNonWinSymbols()
                    }

                    function m(e) {
                        A.hideStaticSDSymbols(e)
                    }

                    function g(e) {
                        e && e.fromMaxWinFreeSpinsExit ? A.showStaticWinlineSymbols(!1, !0) : A.showStaticWinlineSymbols(), o.rgPresentationEnabledOnCurrentSpin && n.publish(n.RESET_NO_WIN_SYMBOLS)
                    }

                    function v() {
                        A.hideAllReels()
                    }

                    function y() {
                        C = !0, A.startFreeSpinsReels()
                    }

                    function b() {
                        C = !1, A.freeSpinsFlyInComplete(I, l.freeSpinsReelSetFromPreviousResponse)
                    }

                    function x() {
                        A.exitFreeSpinsReels()
                    }

                    function S(e) {
                        var t = e.gameState;
                        A.setStage(t)
                    }

                    function T(e) {
                        A.setReelWilds(e.wildsArray)
                    }

                    function w(e) {
                        n.publish(n.RECOVERY_SHOW_PLAY), r.publish(r.FROM_RECOVERY_GAME_IN_PROGRESS);
                        var t = e.response.OutcomeDetail.Stage === s.FREE_SPINS;
                        a.recoveryType = e.response.OutcomeDetail.Stage === s.FREE_SPINS ? a.recoveryTypes.FREE_SPINS_MID : a.recoveryTypes.FREE_SPINS_START, e.response.OutcomeDetail.Stage === s.FREE_SPINS && e.response.OutcomeDetail.NextStage === s.BASE_GAME && (a.recoveryType = a.recoveryTypes.FREE_SPINS_EXIT);
                        var i = t ? "midFreeSpins" : "normal";
                        p(e, i), "midFreeSpins" === i && (l.freeSpinsEntrySpinData.stops = u.getReelStops(e.response.PopulationOutcome, s.BASE_GAME), l.freeSpinsEntrySpinData.reelSetNum = u.getReelSetFromBaseGameForMidFreeSpinsRecovery(e.response.TriggerOutcome), r.publish(n.SHOW_FREE_SPINS, {
                            midFreeSpinsRecovery: !0
                        }))
                    }

                    function E() {}

                    function P() {
                        r.publish(r.FROM_ABORT_NEXT_STAGE), i.baseGame.autoSpin.active = !1, i.baseGame.autoSpin.count = 0
                    }

                    function R() {
                        A.resetAbortedSpin()
                    }
                    var O, A, I, C = !1;
                    this.init = function(i) {
                        O = this, A = i, t.subscribe(n.PLATFORM_GAME_INIT, e), t.subscribe(n.ON_BEFORE_REQUEST, c), t.subscribe(n.ON_START_PROGRESS_NEXT_STAGE, h), t.subscribe(n.ON_RESOLVE_STAGE, p), t.subscribe(n.HIDE_STATIC_WINLINE_SYMBOLS, f), t.subscribe(n.FADE_NO_WIN_SYMBOLS, d), t.subscribe(n.RESET_NO_WIN_SYMBOLS, _), t.subscribe(n.HIDE_STATIC_SD_SYMBOLS, m), t.subscribe(n.SHOW_STATIC_SYMBOLS, g), t.subscribe(n.SET_REEL_WILDS, T), t.subscribe(n.SHOW_FREE_SPINS, v), t.subscribe(n.EXIT_FREE_SPINS, x), t.subscribe(n.ENTER_FREE_SPINS, y), t.subscribe(r.STATE_CHANGED, S), t.subscribe(n.FREE_SPINS_EXIT_FLY_IN, b), t.subscribe(n.ON_START_PROGRESS_STAGE, w), t.subscribe(n.ON_START_PROGRESS_NEXT_STAGE, E), t.subscribe(n.ON_ABORT_NEXT_STAGE, P), t.subscribe(n.ON_RESET_NEXT_STAGE, R)
                    }
                };
            return c.prototype.constructor = c, c
        }), define("game/utils/basicCustomButton", ["require", "com/pixijs/pixi", "game/utils/textUtils"], function(e) {
            "use strict";
            var t = e("com/pixijs/pixi"),
                i = e("game/utils/textUtils"),
                n = function() {
                    function e(e, i, n) {
                        var r = new t.Graphics;
                        r.beginFill(i), r.drawRoundedRect(0, 0, e[0], e[1], n), r.endFill();
                        var o = new t.Sprite(r.generateCanvasTexture());
                        return s.addChild(o), o
                    }

                    function n() {
                        h && a(!1, !1, !0)
                    }

                    function r() {
                        h && a(!0, !1, !1)
                    }

                    function o() {
                        h && a(!1, !0, !1)
                    }

                    function a(e, t, i) {
                        l.visible = e, u.visible = t, c.visible = i
                    }
                    t.Container.call(this);
                    var s, l, u, c, h, p;
                    this.setEnabled = function(e) {
                        h = s.interactive = s.buttonMode = e
                    }, this.getEnabled = function() {
                        return h
                    }, this.init = function(t, i, a, p, f) {
                        void 0 === t && (t = [20, 30]), void 0 === i && (i = 3948615), void 0 === a && (a = 10), void 0 === p && (p = [.01, .3, .5]), void 0 === f && (f = !0), h = f, s = this, l = e(t, i, a), l.alpha = p[0], u = e(t, i, a), u.alpha = p[1], c = e(t, i, a), c.alpha = p[2], u.visible = c.visible = !1, s.interactive = s.buttonMode = !0, s.on("pointerdown", n.bind(s)), s.on("pointerup", r.bind(s)), s.on("pointerupoutside", r.bind(s)), s.on("pointerover", o.bind(s)), s.on("pointerout", r.bind(s))
                    }, this.setText = function(e, t, n) {
                        void 0 === t && (t = 50), void 0 === n && (n = -10), void 0 === p ? p = i.addBasicText(s, e, [0, 0], t) : p.text = e, p.x = (s.width >> 1) - (p.width >> 1), p.y = n
                    }, this.show = function() {
                        s.visible = !0
                    }, this.hide = function() {
                        s.visible = !1
                    }
                };
            return n.prototype = Object.create(t.Container.prototype), n.prototype.constructor = n, n
        }), define("game/views/reels/reelsView", ["require", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "game/phoenix/phoenixReels", "skbJet/component/currencyHelper/currencyHelper", "com/gsap/TweenMax", "skbJet/component/gameMsgBus/GameMsgBus", "game/data/gameEvents", "game/data/audioRef", "game/data/setupData", "game/data/winDataModel", "game/data/gameDataModel", "game/data/stateEvents", "game/data/reelModel", "game/data/paytableModel", "game/utils/miscUtils", "game/utils/textUtils", "game/configs/baseReelConfig", "game/configs/fsReelConfig", "game/configs/spinSettingsConfig", "game/views/reels/reelsController", "game/views/reels/reelsUtils", "game/utils/basicCustomButton"], function(e) {
            "use strict";
            var t = e("skbJet/component/gladPixiRenderer/gladPixiRenderer"),
                i = e("game/phoenix/phoenixReels"),
                n = e("skbJet/component/currencyHelper/currencyHelper"),
                r = e("com/gsap/TweenMax"),
                o = e("skbJet/component/gameMsgBus/GameMsgBus"),
                a = e("game/data/gameEvents"),
                s = e("game/data/audioRef"),
                l = e("game/data/setupData"),
                u = e("game/data/winDataModel"),
                c = e("game/data/gameDataModel"),
                h = e("game/data/stateEvents"),
                p = e("game/data/reelModel"),
                f = e("game/data/paytableModel"),
                d = e("game/utils/miscUtils"),
                _ = e("game/utils/textUtils"),
                m = e("game/configs/baseReelConfig"),
                g = e("game/configs/fsReelConfig"),
                v = e("game/configs/spinSettingsConfig"),
                y = e("game/views/reels/reelsController"),
                b = e("game/views/reels/reelsUtils"),
                x = e("game/utils/basicCustomButton"),
                S = function() {
                    function e(e, i) {
                        var r = t.lib._reelRef.sprites;
                        t.lib._reelRef.pixiContainer.visible = !1, e.symbolSlotWidth = n.formatFloat(r._reelSymbol_1_1._currentStyle._width);
                        e.symbolSlotHeight = 138, e.symbolSpacingW = n.formatFloat(r._reelSymbol_2_1._currentStyle._left) - n.formatFloat(r._reelSymbol_1_1._currentStyle._left) - e.symbolSlotWidth, e.symbolSpacingH = n.formatFloat(r._reelSymbol_1_2._currentStyle._top) - n.formatFloat(r._reelSymbol_1_1._currentStyle._top) - e.symbolSlotHeight, e.options.pos.x = 0, e.options.pos.y = 1;
                        for (var o = 0; o < e.options.reels.length; o++) e.options.reels[o].x = n.formatFloat(r["_reelSymbol_" + (o + 1) + "_1"]._currentStyle._left), e.options.reels[o].y = n.formatFloat(r["_reelSymbol_" + (o + 1) + "_1"]._currentStyle._top);
                        if (void 0 === e.StripInfo[i])
                            for (var a = H.StripInfo, o = 0; o < a.length; o++) e.StripInfo[a[o]["@name"]] = a[o].Strip;
                        if (void 0 === e.freeSpinsCombinations)
                            for (var s = H.KeyValuePairInfo, o = 0; o < s.length; o++) "FreeSpin.ReelSetCombinations" === s[o]["@name"] && (p.freeSpinsReelSetCombinations = e.fsReelSetCombinations = b.parseFreeSpinsReelCombinations(s[o].Mapping));
                        var l = c.getPrefix();
                        for (var u in e.spriteMap) e.spriteMap[u] = l + e.spriteMap[u]
                    }

                    function S(e) {
                        var t = c.getPrefix();
                        e.setTrails([t + "SD-Trail", t + "Bonus-Trail"]), e.setTrailsEnabled(!0)
                    }

                    function T(e, t, i, n) {
                        void 0 === e && (e = !1);
                        var r = e ? J : P(),
                            o = !e && R();
                        V.visible = o, K.visible = !o, 3 === Q && U && (U.text = "ReelSet: " + (o ? "BaseGame" : "FreeSpin"));
                        var a = (f.betPerPattern, e && p.freeSpinsStartReelSetNum ? p.freeSpinsStartReelSetNum : n || "1"),
                            s = E();
                        t && (K.visible = !1, a = i.reelSet, s = i.stops), p.reelSetNum = a, 3 === Q && B && (B.text = p.reelSetNum, G.text = E() + " - switchToCurrentGameType"), r.setReels({
                            reelset: a,
                            stopLocations: s
                        }), w(r)
                    }

                    function w(e) {
                        var i = t.getTicker();
                        z && (i.remove(z), z = null), z = function() {
                            e.process(i.elapsedMS)
                        }, i.add(z)
                    }

                    function E() {
                        var e = [];
                        if (W.PopulationOutcome.length) {
                            for (var t = 0; t < W.PopulationOutcome.length; t++) {
                                var i = W.PopulationOutcome[t];
                                if ("Reels" === i["@name"].split(".")[1] && i["@stage"] === X)
                                    for (var n = 0; n < i.Entry.length; n++) e.push(parseInt(i.Entry[n]["@stripIndex"]))
                            }
                            return p.stopLocations = e, e
                        }
                        var i = W.PopulationOutcome;
                        if (i["@stage"] === X)
                            for (var n = 0; n < i.Entry.length; n++) e.push(parseInt(i.Entry[n]["@stripIndex"]));
                        return e
                    }

                    function P() {
                        return R() ? Y : J
                    }

                    function R() {
                        return X === l.BASE_GAME
                    }

                    function O(e) {
                        var t = {
                            s01: "s01",
                            s02: "s02",
                            s03: "s03",
                            s04: "s04",
                            s05: "s05",
                            s06: "s06",
                            r00: "r00",
                            r01: "r01",
                            r02: "r02",
                            r03: "r03",
                            r04: "r04",
                            r05: "r05",
                            b01: "b01",
                            w01: "w01"
                        };
                        if (e && !1 === te) {
                            if (ee.length > 0)
                                for (var i = 0; i < ee.length; i++) t[ee[i]] && (t[ee[i]] = "w01");
                            for (var n in t) n.indexOf("r") > -1 && (t[n] = "w01")
                        } else ee = [];
                        return t
                    }

                    function A(e, t) {
                        "STOPPED" === t && (a.publish(a.PLAY_SOUND, {
                            soundName: s.REEL_STOP,
                            column: e
                        }), a.publish(a.REEL_STOPPED, {
                            reelNum: e
                        }))
                    }

                    function I(e) {
                        var t = "";
                        if (e) {
                            for (var i in m.spriteMap) {
                                var n = m.spriteMap[i];
                                e.indexOf(n) > -1 && (t = i)
                            }
                            t.length
                        }
                        return t
                    }

                    function C() {
                        for (var e = v.reelStrategy.reelSpeed, t = [0, 0, 0, 0, 0, 0], i = 0; i < e.length; i++) {
                            var n = m.symbolSlotHeight / Z;
                            t[i] = e[i] * n
                        }
                        return t
                    }

                    function M(e) {
                        for (var t = [
                                [0, 0, 0, 0, 0, 0],
                                [0, 0, 1, 0, 1, 2]
                            ], i = [], n = 0; n < 6; n++) i.push(t[1 !== e[n] ? 0 : 1][n]);
                        return j = i, i
                    }

                    function D() {
                        var e = function(t) {
                            var i = R() ? q : $,
                                n = i.getAnimOverlayMap(),
                                r = n;
                            r[0 === t ? r.length - 1 : t - 1].alpha = 1, r[t].alpha = .2, t++, t >= r.length && (t = 0), setTimeout(function() {
                                e(t)
                            }, 3e3)
                        };
                        e(0)
                    }

                    function N() {
                        var e = function(t) {
                            P().setReels({
                                reelset: t + 1 + "",
                                stopLocations: E()
                            }), t++, t >= 24 && (t = 0), setTimeout(function() {
                                e(t)
                            }, 3e3)
                        };
                        e(0)
                    }

                    function L() {
                        var e = t.lib._reelFore.pixiContainer,
                            i = new x,
                            n = new x;
                        i.init([30, 30], 16777215, 10, [.8, 1, .5]), n.init([30, 30], 16777215, 10, [.8, 1, .5]), e.addChild(i), e.addChild(n), i.y = n.y = 10, i.x = 10, n.x = 180, i.setText("-"), n.setText("+"), B = _.addBasicText(e, p.reelSetNum, [50, 10], 25, 16777215);
                        var r = function() {
                            B.text = p.reelSetNum, P().setReels({
                                reelset: p.reelSetNum,
                                stopLocations: E()
                            })
                        };
                        i.on("click", function() {
                            b.getDebugReelset(!1), r()
                        }), n.on("click", function() {
                            b.getDebugReelset(!0), r()
                        }), G = _.addBasicText(e, E() + " - init", [220, 10], 25, 16777215), U = _.addBasicText(e, "ReelSet: BaseGame", [10, 40], 25, 16777215);
                        var a = new x;
                        a.init([120, 30], 16777215, 10, [.8, 1, .5]), e.addChild(a), a.y = 10, a.x = c.gladWidth - 130, a.setText("BigWin-Demo", 15, 7), a.on("click", function() {
                            o.publish("debugBigWin"), a.visible = !1
                        });
                        var s = new x;
                        s.init([120, 30], 16777215, 9, [.8, 1, .5]), e.addChild(s), s.y = 45, s.x = c.gladWidth - 130, s.setText("FS-IntroPanel-Demo", 15, 7), s.on("click", function() {
                            o.publish("debugFSIntroPanel"), s.visible = !1
                        });
                        var u = new x;
                        u.init([120, 30], 16777215, 9, [.8, 1, .5]), e.addChild(u), u.y = 80, u.x = c.gladWidth - 130, u.setText("FS-Congrats-Demo", 15, 7), u.on("click", function() {
                            o.publish("debugFSCongratsPanel"), u.visible = !1
                        });
                        var f = new x;
                        f.init([120, 30], 16777215, 10, [.8, 1, .5]), e.addChild(f), f.y = 115, f.x = c.gladWidth - 130, f.setText("FREE SPIN DEBUG", 15, 7), f.on("click", function() {
                            c.freeSpinsDebugEnabled ? (h.publish(c.freeSpinPendingEvent), c.freeSpinPendingEvent = "") : (c.freeSpinsDebugEnabled = !0, f.setText("FREE SPIN CONT.", 15, 7))
                        });
                        var d = new x;
                        d.init([120, 30], 16777215, 10, [.8, 1, .5]), e.addChild(d), d.y = 150, d.x = c.gladWidth - 130, d.setText("SOLAR DISC FLY IN", 15, 7), d.on("click", function() {
                            d.visible = !1, p.freeSpinsReelSetFromPreviousResponse = "FreeSpin20_1", X = l.FREE_SPINS, k.startFreeSpinsReels(!0)
                        });
                        var m = new x;
                        m.init([120, 30], 16777215, 10, [.8, 1, .5]), e.addChild(m), m.y = 185, m.x = c.gladWidth - 130, m.setText("SWITCH REELS", 15, 7), m.on("click", function() {
                            V.visible = !V.visible, K.visible = !K.visible;
                            var e = V.visible ? Y : J,
                                t = V.visible,
                                i = function() {
                                    return parseInt(20 * Math.random())
                                };
                            e.setReels({
                                reelset: t ? "1" : "FreeSpin1_1",
                                stopLocations: [i(), i(), i(), i(), i(), i()]
                            });
                            for (var n = t ? q : $, r = n.getAnimOverlayMap(), o = 0; o < r.length; o++) r[o].visible = Math.random() > .5
                        })
                    }
                    var k, F, B, G, U, j, W = null,
                        H = null,
                        X = null,
                        z = null,
                        Y = null,
                        V = null,
                        q = null,
                        J = null,
                        K = null,
                        $ = null,
                        Q = 0,
                        Z = 94,
                        ee = [],
                        te = !0;
                    this.init = function() {
                        k = this, F = new y, F.init(k)
                    }, this.onGameInit = function(n) {
                        p.init(n);
                        var r = t.lib._reelMid.pixiContainer;
                        W = n.GameLogicResponse, H = n.PaytableResponse, X = W.OutcomeDetail.Stage, X === l.FREE_SPINS && W.OutcomeDetail.NextStage === l.BASE_GAME && (X = l.BASE_GAME), c.stageAtLoad = X, te = X === l.BASE_GAME, e(m, l.BASE_GAME), e(g, l.FREE_SPINS), Y = i(t.getPixiRenderer(), m), S(Y), J = i(t.getPixiRenderer(), g), S(J), V = Y.getContainer(), V.name = "basegameReels", K = J.getContainer(), K.name = "freespinReels", r.addChild(V), r.addChild(K), q = Y.getWinPresentationLayer(), $ = J.getWinPresentationLayer();
                        var o = m.symbolSpacingH + m.symbolSlotHeight;
                        p.flyInAnimTime = o / l.FREE_SPINS_REVERSE_REEL_SPEED;
                        var a = "1",
                            s = X === l.FREE_SPINS,
                            u = {};
                        if (s) var u = {
                            reelSet: d.getElementFromName(n.GameLogicResponse.TriggerOutcome, "FreeSpin.ReelSetTrigger").Trigger["@name"],
                            stops: b.getReelStops(n.GameLogicResponse.PopulationOutcome, l.FREE_SPINS)
                        };
                        else if (n.GameLogicResponse.TriggerOutcome) {
                            var h;
                            h = d.getElementFromName(n.GameLogicResponse.TriggerOutcome, "BaseGame.ReelSetTrigger"), h && h.Trigger && (a = h.Trigger["@name"])
                        }
                        T(!1, s, u, a), Q > 0 && (1 === Q && D(), 2 === Q && N(), 3 === Q && L(), 4 === Q && setTimeout(function() {
                            L(), p.freeSpinsReelSetFromPreviousResponse = "FreeSpin20_1", k.freeSpinsIntro([0, 1, 0, 1, 0, 0])
                        }, 4e3))
                    }, this.setStage = function(e) {
                        X = e
                    }, this.onBeforeRequest = function(e, t, i) {
                        void 0 === i && (i = !1);
                        var n = c.freeSpinsExit;
                        c.freeSpinsExit = !1;
                        var r = n ? p.freeSpinsEntrySpinData.stops : E(),
                            o = n ? p.freeSpinsEntrySpinData.reelSetNum : p.reelSetNum;
                        c.currentGameState === l.FREE_SPINS && "0" === u.freeSpinCount && (r = j, o = p.freeSpinsReelSetFromPreviousResponse), void 0 !== t && (o = t);
                        var a = O(!i),
                            s = {
                                startTicks: [0, 0, 0, 0, 0, 0],
                                startTimer: [0, 0, 0, 0, 0, 0],
                                reelSpeed: C(),
                                stopLocations: r,
                                reelset: X,
                                symbolsMap: a
                            },
                            f = P();
                        f.setReels({
                            reelset: o,
                            stopLocations: r,
                            symbolsMap: a
                        }), n && w(f), f.setTrailsEnabled(!0), f.spin(s, function() {
                            h.publish(h.FROM_BEFORE_REQUEST)
                        }), f.resetOutGoingSymbols(O(), l.CLEAR_OUTGOING_SYMBOLS_DELAY), 3 === Q && B && (B.text = o, G.text = v.reelResolve.stopLocations + " - beforeRequest"), te = !1
                    }, this.onResolveStage = function(e, t, i) {
                        void 0 === t && (t = !1), W = e.response, X = W.OutcomeDetail.Stage;
                        var n = u.bonusAndSolarDiscInfo.bonusInfo.hasBonus;
                        v.reelResolve.stopTicks = n ? v.bonusStopTicks : v.plainStopTicks, v.reelResolve.stopLocations = E();
                        var r = b.getReelSetFromTriggerOutcome(e.response.TriggerOutcome, X, i);
                        p.reelSetNum = r, i && (K.visible = !0), t && (p.freeSpinsEntrySpinData.stops = v.reelResolve.stopLocations, p.freeSpinsEntrySpinData.reelSetNum = r), 3 === Q && B && (B.text = p.reelSetNum, G.text = v.reelResolve.stopLocations + " - resolve"), v.reelResolve.reelset = r, v.reelResolve.symbolsMap = O(), P().resolve(v.reelResolve, function() {
                            h.publish(h.FROM_RESOLVE_STAGE, {
                                isFreeSpinsEntry: t
                            }), a.publish(a.ON_START_ROLLUP)
                        }, A)
                    }, this.hideStaticWinlineSymbols = function(e) {
                        var t = R() ? q : $;
                        e.stageOverride && (t = e.stageOverride === l.BASE_GAME ? q : $);
                        for (var i = t.getAnimOverlayMap(), n = e.activeSymbolArray, r = 0; r < n.length; r++) {
                            i[l.WIN_PRES_LAYOUT[n[r]]].visible = !1
                        }
                    }, this.hideStaticSDSymbols = function(e) {
                        for (var t = R() ? q : $, i = t.getAnimOverlayMap(), n = e.activeSymbolArray, r = 0; r < n.length; r++) {
                            i[l.WIN_PRES_LAYOUT[n[r]]].visible = !1
                        }
                    }, this.fadeNonWinSymbols = function() {
                        var e = R() ? V : K;
                        r.to(e, .3, {
                            alpha: .5
                        })
                    }, this.resetNonWinSymbols = function() {
                        (R() ? V : K).alpha = 1
                    }, this.showStaticWinlineSymbols = function(e, t) {
                        void 0 === e && (e = !1);
                        var i = R() ? q : $;
                        if (t) {
                            var n = u.freeSpinsOriginSpinData.bonusAndSolarDiscInfo.solarDiscInfo.solarDiscs;
                            i = q, ee = [];
                            for (var r = 0; r < n.length; r++) ee.push(n[r].changeSymbol)
                        }
                        for (var o = i.getAnimOverlayMap(), r = 0; r < o.length; r++) o[r].visible = !0;
                        if (!e && ee.length > -1 && !te)
                            for (var a = m.locationsMap, r = 0; r < a.length; r++) {
                                var s = i.getCellTextureRef(a[r]),
                                    l = I(s[0]);
                                (ee.indexOf(l) > -1 || l.indexOf("r") > -1) && (i.setCellAnimation(a[r], m.spriteMap.w01, 1, 0), i.setCellAnimation(a[r], m.spriteMap.w01, 1, 1))
                            }
                    }, this.setReelWilds = function(e) {
                        ee = e
                    }, this.hideAllReels = function() {
                        r.to(V, l.FREE_SPINS_TRANSITION_TIME, {
                            alpha: 0,
                            onComplete: function() {
                                V.visible = !1
                            }
                        })
                    }, this.startFreeSpinsReels = function(e) {
                        if (e) p.freeSpinsReelSetFromPreviousResponse = "FreeSpin20_1", k.freeSpinsIntro([0, 1, 0, 1, 0, 0], !0);
                        else {
                            for (var t = u.freeSpinsEntryData.sdColumns, i = [0, 0, 0, 0, 0, 0], n = 0; n < i.length; n++) t.indexOf(n) > -1 && (i[n] = 1);
                            k.freeSpinsIntro(i)
                        }
                    }, this.exitFreeSpinsReels = function() {
                        V.visible = !0, V.alpha = 1, K.visible = !1;
                        var e = Y;
                        e.resetOutGoingSymbols(O(), 0), e.setReels({
                            reelset: p.freeSpinsEntrySpinData.reelSetNum,
                            stopLocations: p.freeSpinsEntrySpinData.stops
                        }), k.showStaticWinlineSymbols(), a.publish(a.EXIT_FREE_SPINS_SHOW_WINLINES)
                    }, this.freeSpinsIntro = function(e) {
                        this.showStaticWinlineSymbols(!0);
                        var i = [0, 0, 0, 0, 0, 0],
                            n = 0;
                        p.flyInCountPerReel = [0, 0, 0, 0, 0, 0], p.flyInsPerReelComplete = [!1, !1, !1, !1, !1, !1];
                        for (var o = 0; o < e.length; o++) 1 === e[o] && (n++, i[o] = l.FREE_SPINS_REVERSE_REEL_SPEED);
                        p.flyInCount = n * l.FREE_SPINS_FLYING_DISCS_PER_REEL + 2, V.visible = !1, K.visible = !0, K.alpha = 0, r.to(K, 1, {
                            alpha: 1
                        }), ee = [];
                        var a = O(),
                            s = M(e),
                            u = {
                                startTicks: [0, 0, 0, 0, 0, 0],
                                startTimer: [0, 0, 0, 0, 0, 0],
                                reelSpeed: i,
                                stopLocations: s,
                                reelset: X,
                                freeSpinsIntro: !0,
                                symbolsMap: a
                            },
                            c = P();
                        c.setReels({
                            reelset: p.freeSpinsReelSetFromPreviousResponse,
                            stopLocations: s,
                            symbolsMap: a
                        });
                        for (var h = $.getAnimationLayer(), o = 0; o < h.length; o++)
                            for (var f = 0; f < h[o].length; f++) {
                                var d = h[o][f],
                                    _ = d._texture.textureCacheIds[1];
                                _.indexOf("Solar-Disc") > -1 && (d.visible = !1)
                            }
                        var m = t.getTicker();
                        z && (m.remove(z), z = null), z = function() {
                            c.process(m.elapsedMS)
                        }, m.add(z), c.setTrailsEnabled(!1), setTimeout(function() {
                            c.spin(u, function() {})
                        }, l.FREE_SPINS_PAUSE_BEFORE_INTRO_BACK_SPIN)
                    }, this.freeSpinsFlyInComplete = function(e, i) {
                        var n = P(),
                            r = t.getTicker();
                        z && (r.remove(z), z = null), setTimeout(function() {
                            z = function() {
                                n.process(r.elapsedMS)
                            }, r.add(z), k.onBeforeRequest(e, i, !0)
                        }, l.FREE_SPINS_PAUSE_BEFORE_INTRO_FIRST_SPIN)
                    }, this.resetAbortedSpin = function() {
                        P().cancelSpin(function() {
                            h.publish(h.FROM_RESET_NEXT_STAGE)
                        })
                    }
                };
            return S.prototype.constructor = S, S
        }), define("game/views/reels/anticipation", ["require", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "game/data/audioRef", "com/gsap/TweenMax", "com/pixijs/pixi", "game/data/gameEvents", "game/data/setupData", "game/data/winDataModel", "game/data/gameDataModel", "game/utils/miscUtils"], function(e) {
            "use strict";
            var t = e("skbJet/component/gameMsgBus/GameMsgBus"),
                i = e("skbJet/component/gladPixiRenderer/gladPixiRenderer"),
                n = e("game/data/audioRef"),
                r = e("com/gsap/TweenMax"),
                o = e("com/pixijs/pixi"),
                a = e("game/data/gameEvents"),
                s = e("game/data/setupData"),
                l = e("game/data/winDataModel"),
                u = e("game/data/gameDataModel"),
                c = e("game/utils/miscUtils"),
                h = function() {
                    function e() {
                        y = i.lib._reelBack.sprites._baseReelBG.pixiContainer;
                        var e = i.lib._reelBack.sprites._fsReelBG.pixiContainer,
                            t = i.lib._reelFore.sprites._baseReelFrame.pixiContainer;
                        v = y.height, b = m(y);
                        for (var n = 0; n < 5; n++) {
                            x.push(c.spriteFromTexture(u.getPrefix() + "Anticipation-Bar(Cropped)")), y.addChild(x[n]), x[n].height = v;
                            var r = x[n].width;
                            x[n].x = r + r * n, x[n].visible = E, S.push(c.createMovieClip(u.getPrefix() + "Anticipation-Sparkle-00", 0, 23, 2, 1)), t.addChild(S[n]), S[n].loop = !0, S[n].visible = E, S[n].x = r + r * n - 20, S[n].y = 40 + (v - S[n].height >> 1), T.push(c.createMovieClip(u.getPrefix() + "Column-Sparkle-00", 1, 38, 2, .5)), y.addChild(T[n]), T[n].loop = !0, T[n].visible = E, T[n].x = x[n].x + (x[n].width >> 1) - (T[n].width >> 1), T[n].y = x[n].y + (v >> 1) - (T[n].height >> 1), w.push(c.createMovieClip(u.getPrefix() + "Column-Sparkle-00", 1, 38, 2, .5)), e.addChild(w[n]), w[n].loop = !0, w[n].visible = E, w[n].x = x[n].x + (x[n].width >> 1) - (w[n].width >> 1), w[n].y = x[n].y + (v >> 1) - (w[n].height >> 1)
                        }
                    }

                    function h() {
                        for (var e = 0; e < x.length; e++) S[e].gotoAndStop(1), x[e].visible = S[e].visible = !1, w[e].visible && (w[e].alpha = 0, r.to(w[e], s.FREE_SPINS_BG_TRANSITION_TIME, {
                            alpha: 1
                        }))
                    }

                    function p(e) {
                        if (e.sdColumns.length > 0)
                            for (var t = e.sdColumns, i = 0; i < t.length; i++) T[t[i] - 1].visible = !0, T[t[i] - 1].gotoAndPlay(1), w[t[i] - 1].visible = !0, w[t[i] - 1].gotoAndPlay(1)
                    }

                    function f() {
                        for (var e = 0; e < x.length; e++) S[e].gotoAndStop(1), T[e].gotoAndStop(1), w[e].gotoAndStop(1), x[e].visible = T[e].visible = w[e].visible = S[e].visible = !1
                    }

                    function d(e) {
                        var t = e.reelNum,
                            i = l.bonusAndSolarDiscInfo.bonusInfo,
                            o = l.bonusAndSolarDiscInfo.solarDiscInfo,
                            s = _(o);
                        i.hasBonus && (0 === t ? a.publish(a.PLAY_SOUND, {
                            soundName: n.BONUS_ARRIVED
                        }) : t > 0 && (r.to(S[t - 1], .5, {
                            alpha: 0,
                            onUpdate: function() {
                                x[t - 1].alpha = S[t - 1].alpha
                            },
                            onComplete: function() {
                                x[t - 1].visible = S[t - 1].visible = !1, S[t - 1].gotoAndStop(0)
                            }
                        }), s.length > 0 && s.indexOf(t - 1) > -1 && (T[t - 1].visible = !0, T[t - 1].gotoAndPlay(1), w[t - 1].visible = !0, w[t - 1].gotoAndPlay(1))), t < 5 && (x[t].alpha = S[t].alpha = 0, x[t].visible = S[t].visible = !0, r.to(x[t], .5, {
                            alpha: 1
                        }), r.to(S[t], .5, {
                            alpha: 1
                        }), S[t].gotoAndPlay(1)))
                    }

                    function _(e) {
                        var t = [];
                        if (e.hasSolarDiscs)
                            for (var i = 0; i < e.solarDiscs.length; i++) {
                                var n = e.solarDiscs[i].cellID;
                                t.push(parseInt(n.charAt(n.indexOf("C") + 1)) - 1)
                            }
                        return t
                    }

                    function m(e) {
                        var t = new o.Graphics;
                        t.beginFill(16711935), t.lineStyle(0), t.moveTo(0, 0), t.lineTo(1, 0);
                        var n = e.width >> 1,
                            r = e.height >> 1;
                        return t.moveTo(e.x - n, e.y - r), t.lineTo(e.x + n, e.y - r), t.lineTo(e.x + n, e.y + r), t.lineTo(e.x - n, e.y + r), t.lineTo(e.x - n, e.y - r), t.endFill(), i.lib._reelBack.pixiContainer.addChild(t), e.mask = t, t
                    }
                    var g, v, y, b, x = [],
                        S = [],
                        T = [],
                        w = [],
                        E = !1;
                    this.init = function() {
                        g = this, t.subscribe(a.PLATFORM_GAME_INIT, e), t.subscribe(a.SHOW_FREE_SPINS, h), t.subscribe(a.REEL_STOPPED, d), t.subscribe(a.EXIT_FREE_SPINS, f), t.subscribe(a.SHOW_BASE_GAME, f), t.subscribe(a.RECOVERY_SET_ANTICIPATION, p)
                    }
                };
            return h.prototype.constructor = h, h
        }), define("game/views/winlines/winlineController", ["require", "skbJet/component/gameMsgBus/GameMsgBus", "game/commonUI/slot/slotUI", "game/data/gameEvents", "game/data/stateEvents", "game/data/setupData", "game/data/winDataModel", "game/data/paytableModel", "game/data/gameDataModel", "game/utils/miscUtils", "game/data/reelModel"], function(e) {
            "use strict";
            var t = e("skbJet/component/gameMsgBus/GameMsgBus"),
                i = e("game/commonUI/slot/slotUI"),
                n = e("game/data/gameEvents"),
                r = e("game/data/stateEvents"),
                o = e("game/data/setupData"),
                a = e("game/data/winDataModel"),
                s = e("game/data/paytableModel"),
                l = e("game/data/gameDataModel"),
                u = (e("game/utils/miscUtils"), e("game/data/reelModel")),
                c = function() {
                    function e(e) {
                        O.onGameInit(e)
                    }

                    function c(e) {
                        A = u.getStopSymbols(u.reelSetNum, !0), d(e)
                    }

                    function h() {}

                    function p(e) {
                        A = u.getStopSymbols(u.reelSetNum, !0);
                        var t = "onStartGameInProgressStage" === e.state;
                        if (d(e, t), t) {
                            if (l.recoveryType === l.recoveryTypes.FREE_SPINS_START) {
                                r.publish(r.FROM_EXIT_STAGE);
                                var e = a.freeSpinsOriginSpinData;
                                O.setupBeforeAndAfterFreeSpins(e.stopSymbols, e.winlineInfo, e.bonusAndSolarDiscInfo, !0)
                            }
                            l.recoveryType === l.recoveryTypes.FREE_SPINS_MID && O.setupMidFreeSpins()
                        }
                    }

                    function f(e) {
                        A = u.getStopSymbols(u.reelSetNum, !0), d(e)
                    }

                    function d(e, t, i) {
                        void 0 === t && (t = !1), void 0 === i && (i = !1), C = M[0];
                        var n = e.response.HighlightOutcome,
                            r = [],
                            c = [],
                            h = s.stage,
                            p = l.recoveryType === l.recoveryTypes.FREE_SPINS_MID;
                        t && !i && p ? h = o.BASE_GAME : i && p && (h = o.FREE_SPINS);
                        for (var f = 0; f < n.length; f++)
                            if (0 === n[f]["@name"].indexOf(h) && n[f].Highlight && n[f]["@name"].match(/Lines$/)) {
                                var _ = n[f].Highlight;
                                Array.isArray(_) || (_ = [_]);
                                for (var g = 0; g < _.length; g++) {
                                    for (var v = new Array(_[g].Cell.length), y = 0; y < _[g].Cell.length; y++) v[y] = _[g].Cell[y]["@name"];
                                    c.push({
                                        mode: "line",
                                        line: _[g]["@name"],
                                        boxLocations: v,
                                        prizeValue: m(e, h, _[g]["@name"])
                                    })
                                }
                            }
                        if (c.length > 0) {
                            for (var b = {
                                    mode: "spag",
                                    lines: []
                                }, f = 0; f < c.length; f++) b.lines.push(c[f].line);
                            r.push(b), c = P(c);
                            for (var f = 0; f < c.length; f++) r.push(c[f])
                        }
                        var x = [];
                        if (r.length > 0) {
                            for (var f = 1; f < r.length; f++) {
                                var S = [],
                                    T = r[f];
                                S.push(parseInt(T.line.slice(5, T.line.length)) - 1), S.push(T.boxLocations.length), x.push(S)
                            }
                            I = x, C = a.bonusAndSolarDiscInfo.solarDiscInfo.hasSolarDiscs ? M[3] : M[1]
                        } else a.bonusAndSolarDiscInfo.solarDiscInfo.hasSolarDiscs && (C = M[2]);
                        a.bonusAndSolarDiscInfo.solarDiscInfo.hasSolarDiscs && a.bonusAndSolarDiscInfo.bonusInfo.hasBonus && (a.freeSpinsOriginSpinData = {
                            bonusAndSolarDiscInfo: a.bonusAndSolarDiscInfo,
                            stopSymbols: A,
                            winlineInfo: x,
                            totalPrizeBaseGame: a.totalPrizeBaseGame,
                            totalPrizeFreeSpinSingleSpin: a.totalPrizeFreeSpinSingleSpin,
                            totalPrizeFreeSpinCumulative: a.totalPrizeFreeSpinCumulative,
                            totalPrizeAll: a.totalPrizeAll,
                            perWinlineData: a.perWinlineData
                        }), t && !i && (a.freeSpinsOriginSpinData = {
                            bonusAndSolarDiscInfo: a.parseBonusAndSolarDiscInfo(e),
                            stopSymbols: u.getStopSymbols(u.freeSpinsEntrySpinData.reelSetNum, !0, u.freeSpinsEntrySpinData.stops),
                            winlineInfo: x,
                            totalPrizeBaseGame: a.totalPrizeBaseGame,
                            totalPrizeFreeSpinSingleSpin: a.totalPrizeFreeSpinSingleSpin,
                            totalPrizeFreeSpinCumulative: a.totalPrizeFreeSpinCumulative,
                            totalPrizeAll: a.totalPrizeAll,
                            perWinlineData: a.recoveryGetBaseGamePerWinlineData(e)
                        }), t && !i && p && d(e, !0, !0)
                    }

                    function _() {
                        if (O.clearWinlines(!0), a.winType !== a.MAX_WIN) {
                            var e = a.freeSpinsOriginSpinData;
                            O.setupBeforeAndAfterFreeSpins(e.stopSymbols, e.winlineInfo, e.bonusAndSolarDiscInfo)
                        }
                    }

                    function m(e, t, i) {
                        for (var n = 0, r = e.response.PrizeOutcome, o = 0; o < r.length; o++)
                            if (r[o]["@name"] === t + ".Lines" && r[o].Prize)
                                if (Array.isArray(r[o].Prize)) {
                                    for (var s = 0; s < r[o].Prize.length; s++)
                                        if (r[o].Prize[s]["@name"] === i) {
                                            n = Number(r[o].Prize[s]["@totalPay"]);
                                            break
                                        }
                                } else if (r[o].Prize["@name"] === i) {
                            n = Number(r[o].Prize["@totalPay"]);
                            break
                        }
                        return n = a.keepDecimal(n)
                    }

                    function g(e) {
                        e.option && "sound" !== e.option && v()
                    }

                    function v() {
                        O.clearWinlines(!0), n.publish(n.SHOW_STATIC_SYMBOLS)
                    }

                    function y() {
                        (l.currentGameState === o.BASE_GAME && i.baseGame.autoSpin.active || l.currentGameState === o.FREE_SPINS) && O.skipWin()
                    }

                    function b() {
                        l.currentGameState === o.FREE_SPINS && O.clearWinlines(!0)
                    }

                    function x() {
                        O.solarDiscAnimComplete()
                    }

                    function S() {
                        O.solarDiscAnimToWildComplete()
                    }

                    function T(e) {
                        var t = e.reelNum,
                            i = a.bonusAndSolarDiscInfo.bonusInfo,
                            n = a.bonusAndSolarDiscInfo.solarDiscInfo.hasSolarDiscs;
                        if (0 === t && i.hasBonus && O.showBonus(i.bonusCellNum), 5 === t && i.hasBonus && !n && O.stopBonus(i.bonusCellNum), n) {
                            for (var r = a.bonusAndSolarDiscInfo.solarDiscInfo, o = r.solarDiscs, s = [], l = 0; l < o.length; l++) s.push(o[l].colNum);
                            var u = s.indexOf(t);
                            u > -1 && o[u].colNum === t && O.doSolarDiscLensFlare(o[u].cellNum)
                        }
                    }

                    function w() {
                        a.winType === a.MAX_WIN ? (O.clearWinlines(!0), O.setReelWildsAfterMaxWin(), n.publish(n.MAX_WIN_ACHIEVED), n.publish(n.PLATFORM_STOP_AUTO_SPIN), r.publish(r.FROM_START_ROLLUP)) : C === M[3] ? O.startSolarDiscs(A, I) : C === M[1] ? (O.setWinlinesPending(I), O.animateSymbols(A), n.publish(n.START_ROLLUP)) : C === M[2] ? O.startSolarDiscs(A, []) : r.publish(r.FROM_START_ROLLUP)
                    }

                    function E(e) {
                        var t = !!e.fromBaseGameSkipAndNoAutoPlay;
                        l.currentGameState !== o.BASE_GAME || i.baseGame.autoSpin.active || (n.publish(n.SKIP_HIDE), r.publish(r.FROM_START_ROLLUP), t = !0), O.startWinlinesAfterRollup(t)
                    }

                    function P(e) {
                        if (e.length > 1)
                            for (var t = 0; t < e.length; t++)
                                for (var i = 0; i < e.length - 1 - t; i++) {
                                    var n = e[i].prizeValue,
                                        r = e[i + 1].prizeValue;
                                    if (n < r) {
                                        var o = e[i + 1];
                                        e[i + 1] = e[i], e[i] = o
                                    }
                                }
                        return e
                    }
                    var R, O, A, I, C, M = ["noWin", "win", "solarNoWin", "solarWin"];
                    this.init = function(i) {
                        R = this, O = i, t.subscribe(n.PLATFORM_GAME_INIT, e), t.subscribe(n.ON_RESOLVE_STAGE, c), t.subscribe(n.ON_START_ROLLUP, w), t.subscribe(n.ON_END_GAME, h), t.subscribe(n.ON_EXIT_STAGE, p), t.subscribe(n.ON_IN_PROGRESS_STAGE, f), t.subscribe(n.SD_ANIM_OUT_COMPLETE, x), t.subscribe(n.SD_ANIM_TO_WILD_COMPLETE, S), t.subscribe(n.ON_START_PROGRESS_STAGE, p), t.subscribe(n.SHOW_WINLINES, E), t.subscribe(r.START_BASE_SPIN, v), t.subscribe(r.FROM_BEFORE_REQUEST, b), t.subscribe(n.BET_INCREMENT, v), t.subscribe(n.BET_DECREMENT, v), t.subscribe(n.PLATFORM_CONSOLE_BET_UPDATE, g), t.subscribe(n.SHOW_FREE_SPINS, v), t.subscribe("UI.BetConfigOpen", v), t.subscribe(n.SKIP_WIN, y), t.subscribe(n.EXIT_FREE_SPINS_SHOW_WINLINES, _), t.subscribe(n.REEL_STOPPED, T)
                    }
                };
            return c.prototype.constructor = c, c
        }), define("game/views/winlines/winlineAnims", ["require", "com/pixijs/pixi", "com/gsap/TweenMax", "game/data/gameDataModel", "game/data/setupData", "game/utils/miscUtils"], function(e) {
            "use strict";
            var t = e("com/pixijs/pixi"),
                i = e("com/gsap/TweenMax"),
                n = e("game/data/gameDataModel"),
                r = e("game/data/setupData"),
                o = e("game/utils/miscUtils"),
                a = function() {
                    function e(e, t) {
                        a.addChild(e), e.x = -(e.width >> 1), e.y = -(e.height >> 1), t ? e.gotoAndStop(0) : e.gotoAndPlay(0)
                    }
                    t.Container.call(this);
                    var a, s, l, u, c;
                    this.init = function() {
                        a = this, u = o.createMovieClip(n.getPrefix() + "Static-Win-Frame-00", 0, 0, 2, .5), e(u, !0), c = o.createMovieClip(n.getPrefix() + "Static-Win-Frame-Square-00", 0, 0, 2, .5), e(c, !0), l = o.createMovieClip(n.getPrefix() + "Circular-Win-Box-00", 0, 47, 2, .5), e(l, !1), s = o.createMovieClip(n.getPrefix() + "Rectangle-Win-Box-00", 0, 47, 2, .5), e(s, !1)
                    }, this.show = function(e, t) {
                        var n = e === r.SQUARE ? s : l;
                        t && (n = e === r.SQUARE ? c : u), n.visible = !0, n.playing || (n.alpha = 0, i.to(n, .3, {
                            alpha: 1
                        }))
                    }, this.hide = function() {
                        s.visible = c.visible = l.visible = u.visible = !1
                    }
                };
            return a.prototype = Object.create(t.Container.prototype), a.prototype.constructor = a, a
        }), define("game/views/winlines/solarDiscAnim", ["require", "com/pixijs/pixi", "com/pixijs/pixi-particles", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "game/data/audioRef", "game/data/setupData", "game/utils/miscUtils", "com/gsap/TweenMax", "game/data/gameEvents", "game/data/gameDataModel", "game/data/winDataModel", "game/utils/sdParticles", "game/utils/sdParticleConfigs"], function(e) {
            "use strict";
            var t = e("com/pixijs/pixi"),
                i = (e("com/pixijs/pixi-particles"), e("skbJet/component/gladPixiRenderer/gladPixiRenderer")),
                n = e("game/data/audioRef"),
                r = e("game/data/setupData"),
                o = e("game/utils/miscUtils"),
                a = e("com/gsap/TweenMax"),
                s = e("game/data/gameEvents"),
                l = e("game/data/gameDataModel"),
                u = e("game/data/winDataModel"),
                c = e("game/utils/sdParticles"),
                h = e("game/utils/sdParticleConfigs"),
                p = function() {
                    function e(e, t) {
                        (void 0 === t ? m : t).addChild(e), e.x = -(e.width >> 1), e.y = -(e.height >> 1), e.gotoAndPlay && e.gotoAndStop(0)
                    }

                    function p() {
                        setTimeout(function() {
                            u.sdRevealCount === k ? d(O) : p()
                        }, 250)
                    }

                    function f() {
                        if (!L) {
                            for (var e = 0; e < D.length; e++) {
                                var t = -N[e];
                                a.to(D[e], .5 * M, {
                                    scaleX: -1,
                                    scaleY: -1,
                                    y: t,
                                    alpha: 0
                                })
                            }
                            a.to(w, .25 * M, {
                                alpha: 0,
                                onComplete: function() {
                                    w.visible = !1
                                }
                            })
                        }
                    }

                    function d(e) {
                        if (!L) {
                            s.publish(s.PLAY_SOUND, {
                                soundName: n.SOLAR_DISC_FLASH
                            }), void 0 !== x && null !== x || (x = c.createEmitter(T, t, h.solarDisc1(), i, R)), x.emit = !0;
                            var o = r.SD_DELAY_BEFORE_START_SPIN;
                            s.publish(s.PORTRAIT_LOGO_FLASH), a.to(y, C, {
                                scaleX: 0,
                                delay: o,
                                onComplete: function() {
                                    a.to(y, C, {
                                        scaleX: 1
                                    })
                                }
                            }), b = I[e], b.scaleX = 0, b.visible = !0, a.to(b, C, {
                                scaleX: 1,
                                delay: C + o,
                                onComplete: function() {
                                    L || s.publish(s.SD_ANIM_OUT_COMPLETE)
                                }
                            }), setTimeout(function() {
                                L || (s.publish(s.PLAY_SOUND, {
                                    soundName: n.SOLAR_DISC_TURN
                                }), g.gotoAndPlay(1))
                            }, 1e3 * o)
                        }
                    }

                    function _(e, i) {
                        var n = new t.Graphics;
                        n.beginFill(i), n.lineStyle(0), n.drawCircle(0, 0, e), n.endFill();
                        var r = new t.Sprite(n.generateCanvasTexture()),
                            o = new t.Sprite;
                        o.addChild(r), r.x = -(r.width >> 1), r.y = -(r.height >> 1);
                        var a = new t.filters.BlurFilter;
                        return a.blur = 2, r.filters = [a], m.addChild(o), o.alpha = .6, o
                    }
                    t.Container.call(this);
                    var m, g, v, y, b, x, S, T, w, E, P, R, O, A = ["Basic-Puma", "Basic-Bear", "Basic-Vase", "Basic-Mask", "Basic-Key", "Basic-Coin", "Basic-Wild"],
                        I = [],
                        C = r.SD_SPIN_TIME,
                        M = r.SD_LENSFLARE_TIME,
                        D = [],
                        N = [-300, -150, 150, 250, 500, 650],
                        L = !1,
                        k = 0;
                    this.init = function(i) {
                        m = this, m.visible = !1, R = l.getPrefix(), y = new t.Sprite, m.addChild(y), v = o.spriteFromTexture(R + "Basic-Solar-Disc-full", "centre"), e(v, y), v.visible = !0, v.x = i.x + (i.width >> 1), v.y = i.y + (i.height >> 1), v.scaleX = v.scaleY = .95, T = new t.Container, m.addChild(T), E = o.spriteFromTexture(R + "Donut", "centre"), m.addChild(E), P = o.spriteFromTexture(R + "Donut", "centre"), m.addChild(P), E.visible = P.visible = !1, g = o.createMovieClip(R + "Solar-Rotate-", 1, 26, 2, 1, !1, !0), e(g), g.loop = !1;
                        for (var n = 0; n < A.length; n++) I.push(o.spriteFromTexture(R + A[n], "centre")), I[n].visible = !1, m.addChild(I[n]);
                        D = [_(40, 9287676), _(30, 16383889), _(30, 16564084), _(40, 16383889), o.spriteFromTexture(R + "Rainbow", "centre"), o.spriteFromTexture(R + "Solar-Sparkle", "centre")];
                        for (var n = 0; n < D.length; n++) D[n].y = N[n], m.addChild(D[n]);
                        w = _(g.width >> 1, 16777215), w.visible = !1, w.alpha = 0
                    }, this.startSolarDiscAnim = function(e, t, i, n) {
                        m.visible = !0, k = n, O = e, setTimeout(function() {
                            u.sdRevealCount === k ? d(O) : p()
                        }, i)
                    }, this.startLensFlare = function(e, t, i) {
                        L = !1, s.publish(s.PLAY_SOUND, {
                            soundName: n.SOLAR_DISC_LAND
                        }), g.visible = !0, y.visible = !0, void 0 === i && (i = 0), m.visible = !0, a.delayedCall(.001 * i, function() {
                            for (var e = 0; e < D.length; e++) D[e].y = N[e], D[e].alpha = .8, D[e].scaleX = D[e].scaleY = e > D.length - 3 ? 2 : 1, a.to(D[e], .5 * M, {
                                scaleX: 0,
                                scaleY: 0,
                                y: 0
                            });
                            s.publish(s.SOLAR_DISC_LANDED), w.visible = !0, w.alpha = 0, a.to(w, .25 * M, {
                                alpha: 1,
                                delay: .25 * M
                            }), a.delayedCall(.5 * M, f)
                        })
                    }, this.donutBurst = function() {
                        if (!L) {
                            var e = r.SD_DONUT_DELAY,
                                o = r.SD_DONUTA_ANIM_TIME;
                            setTimeout(function() {
                                s.publish(s.PLAY_SOUND, {
                                    soundName: n.SOLAR_DISC_BURST
                                })
                            }, 650), setTimeout(function() {
                                void 0 !== S && null !== S || (S = c.createEmitter(T, t, h.solarDisc2(), i, R)), S.emit = !0
                            }, 300), E.scaleX = E.scaleY = P.scaleX = P.scaleY = .1, E.alpha = 1, E.visible = P.visible = !0, P.alpha = .7, a.to(E, o, {
                                scaleX: 2,
                                scaleY: 2,
                                ease: window.Power3.easeIn,
                                delay: e,
                                onComplete: function() {
                                    E.visible = !1
                                }
                            }), a.to(E, .2 * o, {
                                alpha: 0,
                                delay: .8 * o
                            }), a.to(P, o, {
                                scaleX: 1.5,
                                scaleY: 1.5,
                                ease: window.Power3.easeIn,
                                delay: e + .5,
                                onComplete: function() {
                                    P.visible = !1
                                }
                            }), a.to(P, .2 * o, {
                                alpha: 0,
                                delay: .8 * o
                            }), w.visible = !0, w.alpha = 0, a.to(w, .3, {
                                alpha: 1,
                                repeat: 1,
                                yoyo: !0,
                                delay: 500,
                                onComplete: function() {
                                    w.visible = !1
                                }
                            })
                        }
                    }, this.skipWin = function() {
                        L = !0, a.killTweensOf(y), a.killTweensOf(w), a.killTweensOf(b), a.killTweensOf(E), a.killTweensOf(P), E.visible = P.visible = y.visible = w.visible = !1, g.gotoAndStop(0), y.alpha = 1, b && (b.scaleX = 1, b = !1), x && (x.killSDEmitter(), x = null), S && (S.killSDEmitter(), S = null);
                        for (var e = 0; e < D.length; e++) a.killTweensOf(D[e]);
                        this.hide()
                    }, this.show = function() {}, this.hide = function() {
                        a.killTweensOf(y), g.gotoAndStop(0), m.visible = !1, y.alpha = 1, b && (b.scaleX = 1, b.visible = !1), x && (x.killSDEmitter(), x = null);
                        for (var e = 0; e < I.length; e++) I[e].visible = !1
                    }, this.hideOnWild = function() {
                        a.killTweensOf(y), g.gotoAndStop(0), a.to(y, .5, {
                            alpha: 0,
                            onComplete: function() {
                                g.visible = !1, y.alpha = 1, y.visible = !1
                            }
                        }), b && (b.scaleX = 1, b.visible = !1)
                    }, this.reset = function() {
                        for (var e = 0; e < I.length; e++) I[e].visible = !1;
                        g.gotoAndStop(0)
                    }
                };
            return p.prototype = Object.create(t.Container.prototype), p.prototype.constructor = p, p
        }), define("game/views/winlines/symbolAnims", ["require", "com/pixijs/pixi", "com/pixijs/pixi-particles", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "game/data/audioRef", "game/utils/miscUtils", "com/gsap/TweenMax", "game/data/gameEvents", "game/data/setupData", "game/data/gameDataModel", "game/data/winDataModel", "game/views/winlines/solarDiscAnim", "game/utils/sdParticles", "game/utils/sdParticleConfigs"], function(e) {
            "use strict";
            var t = e("com/pixijs/pixi"),
                i = (e("com/pixijs/pixi-particles"), e("skbJet/component/gladPixiRenderer/gladPixiRenderer")),
                n = e("game/data/audioRef"),
                r = e("game/utils/miscUtils"),
                o = e("com/gsap/TweenMax"),
                a = e("game/data/gameEvents"),
                s = e("game/data/setupData"),
                l = e("game/data/gameDataModel"),
                u = e("game/data/winDataModel"),
                c = e("game/views/winlines/solarDiscAnim"),
                h = e("game/utils/sdParticles"),
                p = e("game/utils/sdParticleConfigs"),
                f = function() {
                    function e(e, t, i, n) {
                        void 0 === t && (t = !1), m.addChild(e);
                        var r = [
                                [0, 3],
                                [1, 3],
                                [3, -3],
                                [-3, 0],
                                [-3, 3],
                                [-1, -2]
                            ],
                            o = [
                                [0, 3],
                                [1, 3],
                                [3, -3],
                                [-3, 0],
                                [-3, 3],
                                [-1, -2]
                            ],
                            a = [0, 0];
                        i > -1 && (a = r[i]), n > -1 && (a = o[n]), e.x = -(e.width >> 1) + a[0], e.y = -(e.height >> 1) + a[1], e.gotoAndPlay && e.gotoAndStop(0), e.visible = t
                    }

                    function f(e) {
                        var t = Math.random() > .5,
                            i = Math.random() * s.SD_SHAKE_MAX;
                        return (t ? i : -i) * e >> 0
                    }

                    function d(e) {
                        if (e.indexOf("s") > -1) {
                            return parseInt(e.slice(1, e.length)) - 1
                        }
                        if (e.indexOf("r") > -1) return 6
                    }

                    function _() {
                        if (N) {
                            var e = function() {
                                setTimeout(function() {
                                    T && (T.gotoAndStop(0), T.visible = !1);
                                    var t = M[L];
                                    t.visible = !0, t.gotoAndPlay(0), T = t, L++, L > M.length - 1 && (L = 0), e()
                                }, 3e3)
                            };
                            e()
                        }
                    }
                    t.Container.call(this);
                    var m, g, v, y, b, x, S, T, w, E, P, R, O = !1,
                        A = ["Puma-Gold-s", "Bear-Gold-s", "Vase-Gold-s", "Mask-Gold-s", "Key-Gold-s", "Coin-Gold-s"],
                        I = [],
                        C = ["Puma-Match-s", "Bear-Match-s", "Vase-Match-s", "Mask-Match-s", "Key-Match-s", "Coin-Match-s"],
                        M = [],
                        D = [],
                        N = !1,
                        L = 0,
                        k = !1;
                    this.getIsWild = function() {
                        return b || O
                    }, this.init = function() {
                        m = this, E = l.getPrefix();
                        for (var i = 0; i < C.length; i++) M.push(r.createMovieClip(E + C[i], 2, 90, 2, .5, !0)), e(M[i], !1, -1, i);
                        g = new c, g.init(M[0]), m.addChild(g), g.y--, g.originXY = [g.x, g.y];
                        for (var i = 0; i < C.length; i++) I.push(r.createMovieClip(E + A[i], 2, 90, 2, .5, !0)), e(I[i], !1, i), I[i].loop = !1, I[i].originXY = [I[i].x, I[i].y];
                        v = new t.Container, D.push(r.spriteFromTexture(E + "Wild-Appearing-glow", "centre")), D.push(r.spriteFromTexture(E + "Basic-Wild", "centre")), D.push(r.spriteFromTexture(E + "Wild-Appearing-Shine", "centre")), v.addChild(D[0]), v.addChild(D[1]), v.addChild(D[2]), v.visible = !1, m.addChild(v), y = r.createMovieClip(E + "Wild-Letters00", 0, 47, 2, .5), e(y), y.y -= 1, x = r.createMovieClip(E + "Bonus-Appearing-s", 1, 30, 2, .5), e(x), x.loop = !1, S = r.createMovieClip(E + "Bonus-Idle-s", 1, 89, 2, .3, !0), e(S), S.x--, S.y--, _()
                    }, this.startSolarDiscAnim = function(e, t, i) {
                        k = !1;
                        var n = e.indexOf("r") > -1 ? 6 : parseInt(e.slice(-1)) - 1;
                        g.startSolarDiscAnim(n, !1, t, i), O = !0
                    }, this.startLensFlare = function() {
                        g.startLensFlare()
                    }, this.startWildReveal = function() {
                        v.visible = !0, D[0].scaleX = D[0].scaleY = .6, D[1].scaleX = D[1].scaleY = .2, D[2].scaleX = D[2].scaleY = .2, D[0].alpha = D[1].alpha = D[2].alpha = 1;
                        O ? g.hideOnWild() : (void 0 !== R && null !== R || (R = h.createEmitter(v, t, p.solarDisc1(), i, E)), R.emit = !0), o.to(D[0], .5, {
                            scaleX: 1.5,
                            scaleY: 1.5,
                            onComplete: function() {
                                o.to(D[0], 1, {
                                    scaleX: .8,
                                    scaleY: .8,
                                    alpha: 0,
                                    onComplete: function() {
                                        O && (a.publish(a.SD_ANIM_TO_WILD_COMPLETE), u.sdRevealCount++)
                                    }
                                })
                            }
                        }), o.to(D[1], .5, {
                            scaleX: 1.3,
                            scaleY: 1.3,
                            onComplete: function() {
                                o.to(D[1], 1, {
                                    scaleX: 1,
                                    scaleY: 1
                                })
                            }
                        }), o.to(D[2], .5, {
                            scaleX: 1.3,
                            scaleY: 1.3,
                            onComplete: function() {
                                o.to(D[2], 1, {
                                    scaleX: 1,
                                    scaleY: 1,
                                    alpha: 0
                                })
                            }
                        })
                    }, this.jumpToWild = function(e, t) {
                        void 0 === t && (t = !1), m.hide(), b = !0, y[e ? "gotoAndPlay" : "gotoAndStop"](0), t && y.gotoAndStop(0), y.visible = !0
                    }, this.show = function() {}, this.hide = function() {
                        for (var e = 0; e < I.length; e++) I[e].visible = M[e].visible = !1, I[e].gotoAndStop(0), M[e].gotoAndStop(0), I[e].originXY && (I[e].x = I[e].originXY[0], I[e].y = I[e].originXY[1]), M[e].originXY && (M[e].x = M[e].originXY[0], M[e].y = M[e].originXY[1]);
                        g.hide(), O = !1, v.visible = !1, y.visible = !1, b = !1, x.visible = !1, S.visible = !1, S.gotoAndStop(0), g.x = g.originXY[0], g.y = g.originXY[1], R && (R.killSDEmitter(), R = null)
                    }, this.reset = function() {}, this.animateBasic = function(e, t, i, r) {
                        if (k = !1, i > 0 && (O = !1), void 0 === t && (t = !1), void 0 === r && (r = !1), r && O && (b = !1), b || t && i > 0) 2 === i ? (y.gotoAndStop(0), y.visible = !1, m.startWildReveal()) : (v.visible = !1, u.rgPresentationEnabledOnCurrentSpin ? y.gotoAndStop(0) : y.gotoAndPlay(0), y.visible = !0);
                        else {
                            b = t || O;
                            var l = d(e);
                            if (l > -1) {
                                var c = b ? I[6 === l ? 0 : l] : M[l];
                                c.visible || (c.visible = l < 6, u.rgPresentationEnabledOnCurrentSpin && !b ? c.gotoAndStop(0) : c.gotoAndPlay(0), w = c, b && (a.publish(a.SHOW_LOGO_WILD_SYMBOL, {
                                    symbolNum: l
                                }), a.publish(a.PLAY_SOUND, {
                                    soundName: n.SOLAR_DISC_TURN_GOLD
                                }), c.onComplete = function() {
                                    P = {
                                        value: 0
                                    }, O ? (g.donutBurst(), o.to(P, .001 * s.SD_SHAKE_TIME, {
                                        value: 1,
                                        onUpdate: function() {
                                            var e = f(P.value),
                                                t = f(P.value);
                                            c.x = c.originXY[0] + e, c.y = c.originXY[1] + t, g.x = g.originXY[0] + e, g.y = g.originXY[1] + t
                                        },
                                        onComplete: function() {
                                            c.x = c.originXY[0], c.y = c.originXY[1], g.x = g.originXY[0], g.y = g.originXY[1], k || m.startWildReveal()
                                        }
                                    })) : o.to(P, .001 * s.SD_SHAKE_TIME, {
                                        value: 1,
                                        onComplete: function() {
                                            k || m.startWildReveal()
                                        }
                                    })
                                }))
                            }
                        }
                    }, this.animateBonus = function() {
                        x.visible = !0, x.gotoAndPlay(0), x.onComplete = function() {
                            x.visible = !1, S.visible = !0, S.gotoAndPlay(0)
                        }
                    }, this.stopBonus = function() {
                        S.gotoAndStop(0)
                    }, this.skipWin = function() {
                        o.killTweensOf(P), k = !0, g.skipWin(), b && (v.visible = !1, y.gotoAndPlay(0), y.visible = !0)
                    }, this.debugSolarDisc = function() {
                        g.startSolarDiscAnim()
                    }
                };
            return f.prototype = Object.create(t.Container.prototype), f.prototype.constructor = f, f
        }), define("game/views/winlines/winlineView", ["require", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/currencyHelper/currencyHelper", "game/commonUI/slot/slotUI", "com/pixijs/pixi", "game/data/setupData", "game/data/gameEvents", "com/gsap/TweenMax", "game/data/stateEvents", "game/utils/miscUtils", "game/utils/textUtils", "game/views/winlines/winlineController", "game/views/winlines/winlineAnims", "game/views/winlines/symbolAnims", "game/configs/baseReelConfig", "game/data/winDataModel", "game/data/gameDataModel"], function(e) {
            "use strict";
            var t = e("skbJet/component/gladPixiRenderer/gladPixiRenderer"),
                i = e("skbJet/component/currencyHelper/currencyHelper"),
                n = e("game/commonUI/slot/slotUI"),
                r = e("com/pixijs/pixi"),
                o = e("game/data/setupData"),
                a = e("game/data/gameEvents"),
                s = e("com/gsap/TweenMax"),
                l = e("game/data/stateEvents"),
                u = e("game/utils/miscUtils"),
                c = e("game/utils/textUtils"),
                h = e("game/views/winlines/winlineController"),
                p = e("game/views/winlines/winlineAnims"),
                f = e("game/views/winlines/symbolAnims"),
                d = e("game/configs/baseReelConfig"),
                _ = e("game/data/winDataModel"),
                m = e("game/data/gameDataModel"),
                g = function() {
                    function e() {
                        var e = t.lib._reelBack.sprites._baseReelBG.pixiContainer,
                            i = new r.Graphics;
                        i.beginFill(16711935), i.lineStyle(0), i.moveTo(0, 0), i.lineTo(1, 0);
                        var n = e.width >> 1,
                            o = e.height >> 1;
                        return i.moveTo(e.x - n, e.y - o), i.lineTo(e.x + n, e.y - o), i.lineTo(e.x + n, e.y + o), i.lineTo(e.x - n, e.y + o), i.lineTo(e.x - n, e.y - o), i.endFill(), t.lib._gameLayer.pixiContainer.addChild(i), A.mask = i, i
                    }

                    function g(e) {
                        G = e.PaytableResponse.PatternInfo.Pattern;
                        for (var t = G.length, i = 0; i < t; i++) W.push([]);
                        for (var i = 0; i < t; i++) {
                            var n = parseInt(G[i]["@name"].split(" ")[1]) - 1;
                            n < t && n > -1 && (W[n] = v(G[i].Cell))
                        }
                    }

                    function v(e) {
                        for (var t = [], i = 0; i < e.length; i++) t.push(u.cellFromLocationID(e[i]["@name"]));
                        return t
                    }

                    function y(e) {
                        for (var t = [], i = 0; i < e.length; i++) {
                            t.push(e[i].changeSymbol);
                            var n = b(e[i].cellID);
                            t.push(n)
                        }
                        a.publish(a.SET_REEL_WILDS, {
                            wildsArray: t
                        })
                    }

                    function b(e) {
                        return e = e.toLowerCase(), ["r00", "r01", "r02", "r03", "r04", "r05"][parseInt(e.charAt(e.indexOf("c") + 1))]
                    }

                    function x() {
                        C = setTimeout(function() {
                            var e = [];
                            if (U[j]) {
                                e = S(U[j][0], U[j][1]), j++, j > U.length - 1 && (j = 0, !1 === oe && (ae || setTimeout(function() {
                                    a.publish(a.SKIP_HIDE), l.publish(l.FROM_START_ROLLUP)
                                }, o.WINLINE_SHOW_TIME), oe = !0));
                                oe && (n.baseGame.autoSpin.active || m.currentGameState === o.FREE_SPINS) || x()
                            }
                            R.hideAll(e)
                        }, o.WINLINE_SHOW_TIME)
                    }

                    function S(e, t) {
                        for (var i, n = [], r = 0; r < t; r++) {
                            i = W[e][r];
                            var a = k[i].getIsWild() ? o.SQUARE : o.CIRCLE;
                            B[i].show(a, _.rgPresentationEnabledOnCurrentSpin), n.push(i)
                        }
                        for (M.visible = !0, M.text = T(e), M.style.fontSize = M.defaultFontSize; M.width > z && M.style.fontSize > 10;) M.style.fontSize--;
                        var l = B[i].x - Y[0] - (M.width >> 1),
                            u = B[i].y - Y[1] + X[0];
                        return M.scaleX = M.scaleY = H, M.x = B[i].x - Y[0] - (M.width >> 1), M.y = B[i].y - Y[1] + X[1], s.to(M, .001 * o.WINLINE_PRIZE_PULSE_TIME, {
                            alpha: 1,
                            y: u,
                            x: l,
                            scaleX: 1,
                            scaleY: 1,
                            ease: window.Linear.easeNone
                        }), n
                    }

                    function T(e) {
                        for (var t = ie ? _.freeSpinsOriginSpinData.perWinlineData : _.perWinlineData, n = 0, r = 0; r < t.length; r++)
                            if (t[r].lineNum === e + 1) return n = t[r].linePrize, i.formatBalance(i.fromStakeUnits(n))
                    }

                    function w() {
                        1 === V && E(), 2 === V && P()
                    }

                    function E() {
                        setTimeout(function() {
                            R.hideAll();
                            for (var e = 0; e < W[q].length; e++) {
                                var t = W[q][e];
                                B[t].show(2 * Math.random() < 1 ? o.CIRCLE : o.SQUARE)
                            }
                            q++, q >= W.length && (q = 0), E()
                        }, 3e3)
                    }

                    function P() {
                        k[0].debugSolarDisc()
                    }
                    r.Container.call(this);
                    var R, O, A, I, C, M, D, N, L, k = [],
                        F = [],
                        B = [],
                        G = null,
                        U = [],
                        j = 0,
                        W = [],
                        H = .85,
                        X = [0, 7],
                        z = 174,
                        Y = [12, 3],
                        V = 0,
                        q = 0,
                        J = [],
                        K = [],
                        $ = 0,
                        Q = 0,
                        Z = 0,
                        ee = !1,
                        te = !1,
                        ie = !1,
                        ne = o.SD_START_DELAY,
                        re = !1,
                        oe = !1,
                        ae = !1;
                    this.init = function() {
                        R = this, O = new h, O.init(R)
                    }, this.onGameInit = function(i) {
                        g(i), A = t.lib._winlines.pixiContainer, I = e();
                        for (var n = 0, r = 0, o = t.lib._reelRef.sprites._reelSymbol_1_1.pixiContainer, a = [o.x - (o.width >> 1), o.y - (o.height >> 1)], s = [d.symbolSlotWidth, d.symbolSlotHeight], l = 0; l < 24; l++) {
                            var u = new f;
                            k.push(u), u.init(), A.addChild(u);
                            var h = new p;
                            B.push(h), h.init(), A.addChild(h), h.x = u.x = a[0] + s[0] * n + (s[0] >> 1) + Y[0], h.y = u.y = a[1] + s[1] * r + (s[1] >> 1) + Y[1], u.x -= 12, n++, n > 5 && (n = 0, r++)
                        }
                        M = c.addBasicText(A, "XXX.XX", [0, 0], 50, [16579973, 16777215, 16579973], "Oswald", "left", 8, 5186052), M.defaultFontSize = 50, R.hideAll(), w()
                    }, this.setupMidFreeSpins = function() {
                        for (var e = _.bonusAndSolarDiscInfo.solarDiscInfo, t = [], i = [], n = [], r = 0; r < e.solarDiscs.length; r++) {
                            i.push(e.solarDiscs[r].cellNum), k[i[r]].jumpToWild(!1, !1);
                            var o = e.solarDiscs[r].changeSymbolCellNums;
                            if (n.push(e.solarDiscs[r].colNum), o.length > 0)
                                for (var a = 0; a < o.length; a++) k[o[a]].jumpToWild(!1, !1), t.push(o[a]); - 1 === t.indexOf(i[r]) && t.push(i[r])
                        }
                    }, this.setupBeforeAndAfterFreeSpins = function(e, t, i, n) {
                        void 0 === n && (n = !1), ee = !1, D = t, N = e;
                        var r = [];
                        m.freeSpinsExit = !0, m.freeSpinsExit = ie = !!i;
                        var s = i.solarDiscInfo,
                            l = [],
                            u = [];
                        if (t.length > 0)
                            for (var c = 0; c < t.length; c++)
                                for (var h = 0; h < t[c][1]; h++) {
                                    var p = W[t[c][0]][h]; - 1 === u.indexOf(p) && u.push(p)
                                }
                        for (var f = [], c = 0; c < s.solarDiscs.length; c++) {
                            r.push(s.solarDiscs[c].cellNum);
                            var d = u.indexOf(r[c]) > -1;
                            k[r[c]].jumpToWild(d, n);
                            var g = s.solarDiscs[c].changeSymbolCellNums;
                            if (l.push(s.solarDiscs[c].colNum), g.length > 0)
                                for (var h = 0; h < g.length; h++) d = u.indexOf(g[h]) > -1, k[g[h]].jumpToWild(d, n), f.push(g[h]); - 1 === f.indexOf(r[c]) && f.push(r[c])
                        }
                        t.length > 0 && !n && (R.setActiveSymbolArray(t), L = t, re = !0, a.publish(a.START_ROLLUP), R.animateSymbols(N)), a.publish(a.HIDE_STATIC_WINLINE_SYMBOLS, {
                            activeSymbolArray: f,
                            stageOverride: o.BASE_GAME
                        }), a.publish(a.RECOVERY_SET_ANTICIPATION, {
                            sdColumns: l
                        }), n && R.showBonus(_.bonusAndSolarDiscInfo.bonusInfo.bonusCellNum), y(s.solarDiscs)
                    }, this.setReelWildsAfterMaxWin = function() {
                        y(_.bonusAndSolarDiscInfo.solarDiscInfo.solarDiscs)
                    }, this.startSolarDiscs = function(e, t, i) {
                        ee = !1, D = t, N = e;
                        var n = [],
                            r = [];
                        m.freeSpinsExit = ie = !!i;
                        var o = i ? i.solarDiscInfo : _.bonusAndSolarDiscInfo.solarDiscInfo,
                            s = [];
                        _.sdRevealCount = 0;
                        for (var l = 0; l < o.solarDiscs.length; l++) {
                            n.push(o.solarDiscs[l].cellNum);
                            var u = l * ne;
                            k[n[l]].startSolarDiscAnim(o.solarDiscs[l].changeSymbol, u, l), s.push(o.solarDiscs[l].changeSymbol), r.push(o.solarDiscs[l].changeSymbolCellNums), r[l].push(o.solarDiscs[l].cellNum)
                        }
                        $ = 0, Z = o.solarDiscs.length, J = s, K = r, a.publish(a.HIDE_STATIC_SD_SYMBOLS, {
                            activeSymbolArray: n
                        }), y(o.solarDiscs)
                    }, this.solarDiscAnimComplete = function() {
                        if (!ee) {
                            $++, Q++;
                            var e = Q - 1,
                                t = K.length > 0 && K[e].length > 0;
                            if (Q <= Z && t)
                                for (var i = K[e], n = 0; n < i.length; n++) k[i[n]].animateBasic(J[e], !0, 0, ie)
                        }
                    }, this.solarDiscAnimToWildComplete = function() {
                        ee || ($++, $ === 2 * Z && D.length > 0 ? _.stage !== o.BASE_GAME || _.nextStage !== o.FREE_SPINS || ie ? setTimeout(function() {
                            ee || (R.setActiveSymbolArray(D), L = D, re = !0, a.publish(a.START_ROLLUP), R.animateSymbols(N))
                        }, o.SD_PAUSE_BEFORE_WILD_ANIM) : l.publish(l.FROM_EXIT_STAGE) : $ === 2 * Z && D.length < 1 && (_.bonusAndSolarDiscInfo.bonusInfo.hasBonus ? setTimeout(function() {
                            l.publish(l.FROM_EXIT_STAGE)
                        }, Z > 1 ? ne : 0) : setTimeout(function() {
                            l.publish(l.FROM_START_ROLLUP)
                        }, Z > 1 ? ne : 0)))
                    }, this.doSolarDiscLensFlare = function(e) {
                        k[e].startLensFlare()
                    }, this.showBonus = function(e) {
                        k[e].animateBonus()
                    }, this.stopBonus = function(e) {
                        k[e].stopBonus()
                    }, this.setWinlinesPending = function(e) {
                        re = !0, L = e, R.setActiveSymbolArray(e)
                    }, this.startWinlinesAfterRollup = function(e) {
                        re && (re = !1, ae = e, R.startWinlines(L), _.rgPresentationEnabledOnCurrentSpin && a.publish(a.RESET_NO_WIN_SYMBOLS))
                    }, this.setActiveSymbolArray = function(e) {
                        if (!(_.isBaseGamePatternPay && m.currentGameState === o.BASE_GAME || _.isFreeSpinsPatternPay && m.currentGameState === o.FREE_SPINS)) {
                            F = [];
                            for (var t = 0; t < e.length; t++)
                                for (var i = 0; i < e[t][1]; i++) {
                                    var n = W[e[t][0]][i]; - 1 === F.indexOf(n) && F.push(n)
                                }
                        }
                    }, this.startWinlines = function(e) {
                        if (_.isBaseGamePatternPay && m.currentGameState === o.BASE_GAME || _.isFreeSpinsPatternPay && m.currentGameState === o.FREE_SPINS) {
                            for (var t = 0; t < k.length; t++) k[t].jumpToWild(!0);
                            a.publish(a.PATTERN_PAY)
                        } else te = !0, U = e, S(U[0][0], U[0][1]), R.setActiveSymbolArray(e), e.length > 1 ? (j = 0, j++, x()) : ae || (C = setTimeout(function() {
                            a.publish(a.SKIP_HIDE), l.publish(l.FROM_START_ROLLUP)
                        }, o.WINLINE_SHOW_TIME))
                    }, this.clearWinlines = function(e) {
                        if (ae = !1, re = !1, L = null, oe = !1, void 0 === e && (e = !1), clearTimeout(C), R.hideAll(), U = [], e) {
                            a.publish(a.WINLINES_CLEARED), ie = !1, ee = !1, te = !1, F = [], j = 0;
                            for (var t = 0; t < k.length; t++) k[t].hide();
                            J = [], K = [], $ = 0, Q = 0, Z = 0, D = null, N = null
                        }
                    }, this.animateSymbols = function(e) {
                        for (var t = 0; t < F.length; t++) {
                            var i = F[t],
                                n = e[F[t]];
                            if (ee) {
                                k[i].skipWin();
                                for (var r = !1, o = 0; o < K.length; o++) K[o].indexOf(i) > -1 && (r = !0);
                                n.indexOf("r") > -1 || k[i].animateBasic(n, r, 1)
                            } else k[i].animateBasic(n)
                        }
                        if (ee)
                            for (var s = [], t = 0; t < K.length; t++)
                                for (var o = 0; o < K[t].length; o++) {
                                    var l = K[t][o]; - 1 === F.indexOf(l) && (s.push(l), k[l].skipWin(), k[l].animateBasic(null, !0, 2))
                                }
                        _.rgPresentationEnabledOnCurrentSpin && a.publish(a.FADE_NO_WIN_SYMBOLS), a.publish(a.HIDE_STATIC_WINLINE_SYMBOLS, {
                            activeSymbolArray: F
                        })
                    }, this.skipWin = function() {
                        this.clearWinlines(!0), a.publish(a.SHOW_STATIC_SYMBOLS), oe = !0
                    }, this.hideAll = function(e) {
                        void 0 === e && (e = []);
                        for (var t = 0; t < B.length; t++) e.indexOf(t) > -1 || B[t].hide();
                        e.length < 1 && (M.visible = !1)
                    }
                };
            return g.prototype = Object.create(r.Container.prototype), g.prototype.constructor = g, g
        }), define("game/views/ui/uiController", ["require", "skbJet/component/gameMsgBus/GameMsgBus", "game/commonUI/slot/slotUI", "game/commonUI/slot/betData", "skbJet/component/currencyHelper/currencyHelper", "game/data/gameEvents", "game/data/setupData", "game/data/winDataModel", "game/data/gameDataModel", "game/data/stateEvents", "game/data/audioRef", "game/utils/miscUtils"], function(e) {
            "use strict";
            var t = e("skbJet/component/gameMsgBus/GameMsgBus"),
                i = e("game/commonUI/slot/slotUI"),
                n = e("game/commonUI/slot/betData"),
                r = e("skbJet/component/currencyHelper/currencyHelper"),
                o = e("game/data/gameEvents"),
                a = e("game/data/setupData"),
                s = e("game/data/winDataModel"),
                l = e("game/data/gameDataModel"),
                u = e("game/data/stateEvents"),
                c = e("game/data/audioRef"),
                h = (e("game/utils/miscUtils"), function() {
                    function e(e) {
                        S.setup(e), i.baseGame.spin.on("pointertap", function() {
                            o.publish(o.PLAY_SOUND, {
                                soundName: c.SPIN_BUTTON_PUSH
                            }), u.publish(u.START_BASE_SPIN), i.baseGame.autoSpin.enabled = !1, i.baseGame.betConfig.enabled = !1
                        }), i.baseGame.skip.on("pointertap", function() {
                            s.winType === s.MAX_WIN ? (o.publish(o.MAX_WIN_CLOSE), "10" === s.freeSpinCount && "0" === s.freeSpinsRemaining ? (u.publish(u.FROM_EXIT_STAGE), setTimeout(function() {
                                u.publish(u.FROM_FREE_SPIN_EXIT_ROLLUP)
                            }, 10)) : l.currentGameState === a.FREE_SPINS && u.publish(u.FROM_FREE_SPIN_EXIT_ROLLUP), i.baseGame.skip.visible = !1) : o.publish(o.SKIP_WIN)
                        }), i.baseGame.play.on("pointertap", function(e) {
                            o.publish(o.PLAY_SOUND, {
                                soundName: c.BUTTON_PUSH
                            });
                            var t = l.currentState;
                            "FreeSpin.exitStage" === t || "Recovery.gameInProgressNext" === t ? (o.publish(o.SHOW_FREE_SPINS), o.publish(o.HIDE_PRESS_BUTTON_MESSAGE)) : "Recovery.gameInProgress" === t && l.recoveryType === l.recoveryTypes.FREE_SPINS_MID ? (o.publish(o.PLAY_FROM_FREE_SPINS_RECOVERY), u.publish(u.FROM_IN_PROGRESS_STAGE)) : "FreeSpin.resetNextStage" === t && u.publish(u.FROM_IN_PROGRESS_STAGE), e.target.visible = !1
                        });
                        var t = i.baseGame.betConfig;
                        t.controls.children[1].children[2].on("pointertap", function() {
                            setTimeout(function() {
                                var e = n.betPerPattern === parseInt(n.betInfo[n.betInfo.length - 1]);
                                o.publish(o.PLAY_SOUND, {
                                    soundName: e ? c.MAX_BET : c.BUTTON_STAKE_UP
                                })
                            }, 10)
                        }), t.controls.children[1].children[3].on("pointertap", function() {
                            o.publish(o.PLAY_SOUND, {
                                soundName: c.BUTTON_STAKE_DOWN
                            })
                        }), t.children[1].on("pointertap", function() {
                            o.publish(o.PLAY_SOUND, {
                                soundName: c.BUTTON_PUSH
                            })
                        }), t.closeButton.on("pointertap", function() {
                            o.publish(o.PLAY_SOUND, {
                                soundName: c.BUTTON_PUSH
                            })
                        }), i.baseGame.autoSpin._startButton.on("pointertap", function() {
                            o.publish(o.PLAY_SOUND, {
                                soundName: c.BUTTON_PUSH
                            })
                        }), i.baseGame.autoSpin._stopButton.on("pointertap", function() {
                            o.publish(o.PLAY_SOUND, {
                                soundName: c.BUTTON_PUSH
                            })
                        })
                    }

                    function h() {
                        u.publish(u.FROM_BEGIN_NEW_GAME)
                    }

                    function p() {
                        S.spinStarted(), t.publish(o.PLATFORM_TO_PLATFORM, {
                            channel: "Game",
                            topic: "Game.DeductStake",
                            data: r.fromStakeUnits(n.totalBet)
                        })
                    }

                    function f() {
                        S.showFreeSpins()
                    }

                    function d(e) {
                        var t = s.winType === s.MAX_WIN;
                        switch (e.state) {
                            case "BaseGame.beginNewGame":
                                S.showButton(!t, !1, !1), t ? t && (S.showButton(!1, !0, !1), i.baseGame.betConfig.enabled = !1, i.baseGame.skip.visible = !0) : S.onBeginNewGame();
                                break;
                            case "BaseGame.spin":
                            case "FreeSpin.inProgress":
                                t ? i.baseGame.betConfig.enabled = !1 : S.showButton(!1, !1, !1);
                                break;
                            case "FreeSpin.exitStage":
                                S.showButton(!1, !1, !0)
                        }
                    }

                    function _() {
                        S.showButton(!1, !0, !1), i.baseGame.betConfig.enabled = !1, i.baseGame.skip.visible = !0
                    }

                    function m() {
                        S.showButton(!1, !0, !1)
                    }

                    function g() {
                        S.showButton(!1, !1, !1)
                    }

                    function v() {
                        i.baseGame.prompt.visible = !1, i.baseGame.autoSpin.enabled = !1, S.showButton(!1, !1, !0)
                    }

                    function y() {
                        l.currentGameState === a.FREE_SPINS && (i.baseGame.prompt.visible = !1, S.showButton(!1, !1, !0))
                    }

                    function b() {
                        S.showButton(!0, !1, !1), i.baseGame.betConfig.enabled = !0, S.onBeginNewGame()
                    }

                    function x() {
                        S.orientationChanged()
                    }
                    var S;
                    this.init = function(i) {
                        S = i, t.subscribe(o.PLATFORM_GAME_INIT, e), t.subscribe(u.START_BASE_SPIN, p), t.subscribe(o.ON_BEGIN_NEW_GAME, h), t.subscribe(o.SHOW_FREE_SPINS, f), t.subscribe(u.STATE_CHANGED, d), t.subscribe(o.START_ROLLUP, m), t.subscribe(o.SKIP_HIDE, g), t.subscribe(o.RECOVERY_SHOW_PLAY, v), t.subscribe(u.FROM_RESET_NEXT_STAGE, y), t.subscribe(o.MAX_WIN_COMPLETE, b), t.subscribe(o.ORIENTATION_CHANGED, x), t.subscribe(o.SHOW_MAX_WIN_PLAYBUTTON, _)
                    }
                });
            return h.prototype.constructor = h, h
        }), define("game/views/ui/playMessage", ["require", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "com/gsap/TweenMax", "game/data/gameDataModel", "game/data/stateEvents", "game/data/gameEvents", "game/data/audioRef", "game/utils/miscUtils", "game/utils/textUtils"], function(e) {
            "use strict";
            var t = e("skbJet/component/gameMsgBus/GameMsgBus"),
                i = e("skbJet/component/gladPixiRenderer/gladPixiRenderer"),
                n = e("skbJet/component/pixiResourceLoader/pixiResourceLoader"),
                r = e("com/gsap/TweenMax"),
                o = e("game/data/gameDataModel"),
                a = e("game/data/stateEvents"),
                s = e("game/data/gameEvents"),
                l = e("game/data/audioRef"),
                u = e("game/utils/miscUtils"),
                c = e("game/utils/textUtils"),
                h = function() {
                    function e(e) {
                        void 0 === e && (e = !1), d.visible || (d.visible = !0, r.killTweensOf(d), d.y = d.origY - 50, d.alpha = 0, r.to(d, g, {
                            y: d.origY,
                            alpha: 1,
                            ease: window.Linear.easeNone
                        }), e || (s.publish(s.PLAY_SOUND, {
                            soundName: l.FREESPINS_BELL
                        }), s.publish(s.PLAY_SOUND, {
                            soundName: l.FREE_SPINS_AWARDED
                        }), s.publish(s.PLAY_SOUND, {
                            soundName: l.FREESPINS_INTRO_LOOP
                        })))
                    }

                    function h(t) {
                        !v || t && t.type === s.HIDE_PRESS_BUTTON_MESSAGE ? (d.visible = !1, r.killTweensOf(d)) : v && (v = !1, e(!0))
                    }
                    var p, f, d, _, m, g = 1,
                        v = !1;
                    this.init = function() {
                        p = this, t.subscribe(a.STATE_CHANGED, function(t) {
                            "FreeSpin.exitStage" === t.state && e()
                        }), t.subscribe(s.SHOW_FREE_SPINS, h), t.subscribe(s.RECOVERY_SHOW_PLAY, function() {
                            v = !0
                        }), t.subscribe(s.PLAY_FROM_FREE_SPINS_RECOVERY, h), t.subscribe(s.HIDE_PRESS_BUTTON_MESSAGE, h), m = n.i18n.Game;
                        var r = o.getPrefix(!0),
                            l = i.lib._reelBack.sprites._baseReelBG;
                        d = u.spriteFromTexture(r + "Message-Bar", "centre"), f = i.lib._messagePanelLayer.sprites._playMessageLayer.pixiContainer, f.addChild(d), d.x = l._currentStyle._left + (l._currentStyle._width >> 1), d.y = d.origY = l._currentStyle._top + l._currentStyle._height - (d.height >> 1), _ = c.addBasicText(d, m.freeSpinsPressToPlay, [0, -15], 30, 16777215), _.x -= _.width >> 1, h()
                    }
                };
            return h.prototype.constructor = h, h
        }), define("game/views/freeSpins/freeSpinsIntroMessage", ["require", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "com/gsap/TweenMax", "game/data/gameDataModel", "game/data/gameEvents", "game/utils/miscUtils", "game/utils/textUtils"], function(e) {
            "use strict";
            var t = e("skbJet/component/gameMsgBus/GameMsgBus"),
                i = e("skbJet/component/gladPixiRenderer/gladPixiRenderer"),
                n = e("skbJet/component/pixiResourceLoader/pixiResourceLoader"),
                r = e("com/gsap/TweenMax"),
                o = e("game/data/gameDataModel"),
                a = e("game/data/gameEvents"),
                s = e("game/utils/miscUtils"),
                l = e("game/utils/textUtils"),
                u = function() {
                    function e() {
                        p.visible = !0, r.killTweensOf(p), p.y = p.origY - 50, p.alpha = 0, r.to(p, _, {
                            y: p.origY,
                            alpha: 1,
                            ease: window.Linear.easeNone
                        })
                    }

                    function u(e) {
                        e ? (p.alpha = 0, p.visible = !1) : (r.killTweensOf(p), r.to(p, _, {
                            alpha: 0,
                            ease: window.Linear.easeNone,
                            onComplete: function() {
                                p.visible = !1
                            }
                        }))
                    }
                    var c, h, p, f, d, _ = 1;
                    this.init = function() {
                        c = this, t.subscribe(a.ENTER_FREE_SPINS, e), t.subscribe(a.FREE_SPINS_EXIT_FLY_IN, u), d = n.i18n.Game;
                        var r = o.getPrefix(!0),
                            _ = i.lib._reelBack.sprites._baseReelBG;
                        p = s.spriteFromTexture(r + "Red-Banner", "centre"), h = i.lib._messagePanelLayer.sprites._playMessageLayer.pixiContainer, h.addChild(p), p.x = _._currentStyle._left + (_._currentStyle._width >> 1), p.y = p.origY = _._currentStyle._top + _._currentStyle._height + 35, f = l.addBasicText(p, d.freeSpinsIntroMessage, [0, -20], 30, [16579973, 16777215, 16579973], "Oswald", "left", 8, 5186052), l.textFitWidth(f, 1e3, !1), f.x -= f.width >> 1, u(!0)
                    }
                };
            return u.prototype.constructor = u, u
        }), define("game/views/bigWin/patternPayMessage", ["require", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/currencyHelper/currencyHelper", "com/gsap/TweenMax", "game/data/gameDataModel", "game/data/setupData", "game/data/gameEvents", "game/utils/miscUtils", "game/utils/textUtils"], function(e) {
            "use strict";
            var t = e("skbJet/component/gameMsgBus/GameMsgBus"),
                i = e("skbJet/component/gladPixiRenderer/gladPixiRenderer"),
                n = e("skbJet/component/pixiResourceLoader/pixiResourceLoader"),
                r = e("skbJet/component/currencyHelper/currencyHelper"),
                o = e("com/gsap/TweenMax"),
                a = e("game/data/gameDataModel"),
                s = e("game/data/setupData"),
                l = e("game/data/gameEvents"),
                u = e("game/utils/miscUtils"),
                c = e("game/utils/textUtils"),
                h = function() {
                    function e(e) {
                        b = r.formatBalance(e.winUnformatted)
                    }

                    function h() {
                        g.text = v.patternPay.replace("{0}", b), c.textFitWidth(g, 1e3, !1), g.x = -(g.width >> 1), m.visible = !0, o.killTweensOf(m), m.y = m.origY - 50, m.alpha = 0, o.to(m, x, {
                            y: m.origY,
                            alpha: 1,
                            ease: window.Linear.easeNone
                        }), a.currentGameState === s.FREE_SPINS && (y = setTimeout(function() {
                            l.publish(l.SKIP_WIN)
                        }, 3e3))
                    }

                    function p() {
                        clearTimeout(y)
                    }

                    function f(e) {
                        e ? (m.alpha = 0, m.visible = !1) : (o.killTweensOf(m), o.to(m, x, {
                            alpha: 0,
                            ease: window.Linear.easeNone,
                            onComplete: function() {
                                m.visible = !1
                            }
                        }))
                    }
                    var d, _, m, g, v, y, b, x = 1;
                    this.init = function() {
                        d = this, t.subscribe(l.PATTERN_PAY, h), t.subscribe(l.WINLINES_CLEARED, f), t.subscribe(l.UPDATE_FOOTER, e), t.subscribe(l.SKIP_WIN, p), v = n.i18n.Game;
                        var r = a.getPrefix(!0),
                            o = i.lib._reelBack.sprites._baseReelBG;
                        m = u.spriteFromTexture(r + "Red-Banner", "centre"),
                            _ = i.lib._messagePanelLayer.sprites._playMessageLayer.pixiContainer, _.addChild(m), m.x = o._currentStyle._left + (o._currentStyle._width >> 1), m.y = m.origY = o._currentStyle._top + o._currentStyle._height + 35, g = c.addBasicText(m, " ", [0, -20], 30, [16579973, 16777215, 16579973], "Oswald", "left", 8, 5186052), f(!0)
                    }
                };
            return h.prototype.constructor = h, h
        }), define("skbJet/componentManchester/rgsModel/proxyFix", [], function() {
            function e(e, t, i) {
                var n;
                if (i = i || "@name", e instanceof Array) {
                    for (n = 0; n < e.length; ++n)
                        if (e[n][i] === t) return e[n]
                } else if (e[i] === t) return e
            }

            function t(e) {
                return e
            }

            function i(e) {
                return e instanceof Array ? e : void 0 !== e ? [e] : []
            }

            function n(e) {
                return parseFloat(e) || 0
            }

            function r(e) {
                return parseInt(e, 10) || 0
            }

            function o(e) {
                return "true" === e
            }

            function a(e) {
                return e instanceof Array ? e : e ? [e] : []
            }
            return Object.freeze({
                namedNode: e,
                singleNode: t,
                multipleNode: i,
                toNumber: n,
                toInt: r,
                toBoolean: o,
                array: a
            })
        }), define("skbJet/componentManchester/rgsModel/proxyCachedNode", ["require", "./proxyFix"], function(e) {
            "use strict";

            function t(e, t) {
                var i = e.call(t);
                return i instanceof Object && (i = Object.freeze(i)), i
            }
            var i = e("./proxyFix");
            return function(e, n) {
                function r(r, o, a) {
                    var s, l = e[r];
                    if (a = a || "", p[r] || (p[r] = Object.create(null)), !n[r]) throw new Error("No model for " + r);
                    return p[r][a] || (l && (s = i.namedNode(l, a, o)), s && (p[r][a] = t(n[r], s))), p[r][a]
                }

                function o(r) {
                    var o = e[r];
                    if (!n[r]) throw new Error("No model for " + r);
                    return p[r] || (o = i.multipleNode(o), p[r] = o && Object.freeze(o.map(function(e) {
                        return t(n[r], e)
                    }))), p[r]
                }

                function a(r, o) {
                    var a = e[r];
                    if (!n[r]) throw new Error("No model for " + r);
                    if (!p[r]) {
                        var s;
                        a = i.multipleNode(a), a && (a.forEach(function(e) {
                            var i = t(n[r], e);
                            void 0 !== i && (s = s || {}, s[e[o]] = i)
                        }), s instanceof Object && (s = Object.freeze(s))), p[r] = s
                    }
                    return p[r]
                }

                function s(r) {
                    var o = e[r];
                    if (!n[r]) throw new Error("No model for " + r);
                    return !p[r] && o && (p[r] = t(n[r], i.singleNode(o))), p[r]
                }

                function l(e, t) {
                    return function(i) {
                        return r(e, t, i)
                    }
                }

                function u(e) {
                    return function() {
                        return s(e)
                    }
                }

                function c(e) {
                    return function() {
                        return o(e)
                    }
                }

                function h(e, t) {
                    return function() {
                        return a(e, t)
                    }
                }
                var p = Object.create(null);
                return Object.freeze({
                    named: l,
                    single: u,
                    multiple: c,
                    mapped: h
                })
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/ActionInput", [], function() {
            "use strict";
            return function() {
                return {
                    Action: this.Action
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/Balances", [], function() {
            "use strict";
            return function() {
                return this
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/HighlightOutcome", ["require", "./../proxyFix", "./../proxyCachedNode"], function(e) {
            "use strict";

            function t(e) {
                return e["#text"] ? 0 === e["#text"].length ? [] : e["#text"].split(",") : Object.freeze(i.multipleNode(e.Cell).map(function(e) {
                    return e["@name"]
                }, {}))
            }
            var i = e("./../proxyFix"),
                n = e("./../proxyCachedNode"),
                r = {
                    Highlight: function() {
                        return {
                            type: this["@type"],
                            cells: t(this)
                        }
                    }
                };
            return function() {
                var e = n(this, r);
                return {
                    type: this["@type"],
                    Highlight: e.mapped("Highlight", "@name").call(this)
                }
            }
        }), define("skbJet/componentManchester/rgsModel/proxyNode", ["require", "./proxyFix"], function(e) {
            "use strict";

            function t(e, t) {
                var i = e.call(t);
                return i instanceof Object && (i = Object.freeze(i)), i
            }
            var i = e("./proxyFix");
            return function(e, n) {
                function r(r) {
                    var o = e[r];
                    if (o) return o = i.multipleNode(o), Object.freeze(o.map(function(e) {
                        return t(n[r], e)
                    }))
                }

                function o(t) {
                    var r = e[t];
                    return Object.freeze(n[t].call(i.singleNode(r)))
                }

                function a(r, o) {
                    var a = e[r],
                        s = {};
                    if (a) return a = i.multipleNode(a), a.forEach(function(e) {
                        s[e[o]] = t(n[r], e)
                    }), Object.freeze(s)
                }
                return Object.freeze({
                    single: o,
                    multiple: r,
                    mapped: a
                })
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/JackpotOutcome", ["require", "./../proxyFix", "./../proxyNode"], function(e) {
            "use strict";
            var t = e("./../proxyFix"),
                i = e("./../proxyNode"),
                n = {
                    Jackpot: function() {
                        return {
                            id: this["@id"],
                            level: t.toInt(this["@level"]),
                            value: t.toNumber(this["@value"])
                        }
                    }
                };
            return function() {
                return i(this, n).mapped("Jackpot", "@name")
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/LadderOutcome", ["require", "./../proxyFix"], function(e) {
            "use strict";
            var t = e("./../proxyFix");
            return function() {
                return {
                    Ladder: {
                        Value: t.toInt(this.Ladder["#text"]),
                        Level: t.namedNode(this.Ladder["@level"])
                    }
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/MultiplierOutcome", ["require", "./../proxyFix", "./../proxyCachedNode"], function(e) {
            "use strict";
            var t = e("./../proxyFix"),
                i = e("./../proxyCachedNode"),
                n = {
                    Multiplier: function() {
                        return t.toNumber(this["#text"])
                    }
                };
            return function() {
                return {
                    Multiplier: i(this, n).named("Multiplier")
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/OutcomeDetail", ["require", "./../proxyFix"], function(e) {
            "use strict";
            var t = e("./../proxyFix");
            return function() {
                return {
                    Stage: this.Stage,
                    NextStage: this.NextStage,
                    Balance: t.toNumber(this.Balance),
                    GameStatus: this.GameStatus,
                    Settled: t.toNumber(this.Settled),
                    Pending: t.toNumber(this.Pending),
                    Payout: t.toNumber(this.Payout)
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/PatternSliderInput", ["require", "./../proxyFix"], function(e) {
            "use strict";
            var t = e("./../proxyFix");
            return function() {
                return {
                    BetPerPattern: t.toNumber(this.BetPerPattern),
                    PatternsBet: t.toNumber(this.PatternsBet)
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/PickerOutcome", ["require", "./../proxyFix", "./../proxyNode", "./../proxyCachedNode"], function(e) {
            "use strict";
            var t = e("./../proxyFix"),
                i = e("./../proxyNode"),
                n = e("./../proxyCachedNode"),
                r = {
                    Feature: function() {
                        var e = this["@value"],
                            i = this["@type"];
                        switch (i) {
                            case "credits":
                            case "multiplier":
                                e = t.toInt(e)
                        }
                        return {
                            type: i,
                            value: e
                        }
                    }
                },
                o = {
                    Pick: function() {
                        var e = i(this, r);
                        return {
                            name: this["@name"],
                            picked: t.toBoolean(this["@picked"]),
                            Feature: e.multiple("Feature")
                        }
                    }
                },
                a = {
                    Layer: function() {
                        var e = i(this, o);
                        return {
                            index: t.toInt(this["@index"]),
                            Pick: e.multiple("Pick")
                        }
                    }
                };
            return function() {
                return {
                    Layer: n(this, a).named("Layer")
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/PickerSummaryOutcome", ["require", "./../proxyFix"], function(e) {
            "use strict";
            var t = e("./../proxyFix");
            return function() {
                return {
                    awarded: t.toInt(this.Awarded),
                    incrementTriggered: t.toBoolean(this.IncrementTriggered),
                    initAwarded: t.toInt(this.InitAwarded),
                    maxPicksAwarded: t.toBoolean(this.MaxPicksAwarded),
                    pickCount: t.toInt(this.PickCount),
                    picksRemaining: t.toInt(this.PicksRemaining),
                    CurrentLayer: Object.freeze({
                        index: t.toInt(this.CurrentLayer["@index"]),
                        name: this.CurrentLayer["@name"]
                    })
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/PopulationOutcome", ["require", "./../proxyFix"], function(e) {
            "use strict";
            var t = e("./../proxyFix");
            return function() {
                if (this["#text"]) return this["#text"].split(",");
                var e = t.multipleNode(this.Entry);
                return {
                    stop: e.map(function(e) {
                        return t.toInt(e["@stripIndex"])
                    }),
                    map: e.reduce(function(e, i) {
                        return t.multipleNode(i.Cell).forEach(function(t) {
                            e[t["@name"]] = t["#text"]
                        }), e
                    }, {})
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/PatternOutcome", ["require", "./../proxyFix"], function(e) {
            "use strict";
            var t = e("./../proxyFix");
            return function() {
                return this["#text"] ? this["#text"].split(",") : {
                    map: t.multipleNode(this.Pattern).reduce(function(e, i) {
                        return t.multipleNode(i.Cell).forEach(function(t) {
                            e[t["@name"]] = t["#text"]
                        }), e
                    }, {})
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/PrizeOutcome", ["require", "./../proxyFix", "./../proxyCachedNode"], function(e) {
            "use strict";
            var t = e("./../proxyFix"),
                i = e("./../proxyCachedNode"),
                n = {
                    Prize: function() {
                        return {
                            betMultiplier: t.toInt(this["@betMultiplier"]),
                            multiplier: t.toInt(this["@multiplier"]),
                            name: this["@name"],
                            pay: t.toNumber(this["@pay"]),
                            payName: this["@payName"],
                            symbolCount: t.toInt(this["@symbolCount"]),
                            totalPay: t.toNumber(this["@totalPay"]),
                            ways: t.toInt(this["@ways"])
                        }
                    }
                };
            return function() {
                var e = i(this, n);
                return {
                    multiplier: t.toInt(this["@multiplier"]),
                    pay: t.toNumber(this["@pay"]),
                    stage: this["@stage"],
                    totalPay: t.toNumber(this["@totalPay"]),
                    type: this["@type"],
                    Prize: e.multiple("Prize").call(this)
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/TriggerOutcome", ["require", "./../proxyNode"], function(e) {
            "use strict";
            var t = e("./../proxyNode"),
                i = {
                    Trigger: function() {
                        return {
                            name: this["@name"],
                            priority: this["@priority"],
                            stageConnector: this["@stageConnector"]
                        }
                    }
                };
            return function() {
                var e = t(this, i);
                return {
                    component: this["@component"],
                    stage: this["@stage"],
                    Triggers: e.mapped("Trigger", "@name")
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/AwardCapOutcome", ["require", "./../proxyFix"], function(e) {
            "use strict";
            var t = e("./../proxyFix");
            return function() {
                return {
                    AwardCapExceeded: t.toBoolean(this.AwardCapExceeded)
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/FreeSpinOutcome", ["require", "./../proxyFix"], function(e) {
            "use strict";
            var t = e("./../proxyFix");
            return function() {
                return {
                    Awarded: t.toInt(this.Awarded),
                    Count: t.toInt(this.Count),
                    Countdown: t.toInt(this.Countdown),
                    IncrementTriggered: t.toBoolean(this.IncrementTriggered),
                    InitAwarded: t.toInt(this.InitAwarded),
                    MaxAwarded: t.toBoolean(this.MaxAwarded),
                    MaxSpinsHit: t.toBoolean(this.MaxSpinsHit),
                    TotalAwarded: t.toInt(this.TotalAwarded)
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/PickerInput", ["require", "./../proxyFix"], function(e) {
            "use strict";
            var t = e("./../proxyFix");
            return function() {
                var e = [],
                    i = t.multiple(this.Pick).reduce(function(t, i) {
                        var n = i["@name"];
                        return t[n] = i["#text"], e.push(n), t
                    }, {});
                return Object.freeze({
                    names: Object.freeze(e),
                    Picks: Object.freeze(i)
                })
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/PlayerHistoryOutcome", ["require", "./../proxyCachedNode", "./../proxyFix"], function(e) {
            "use strict";
            var t = e("./../proxyCachedNode"),
                i = e("./../proxyFix"),
                n = {
                    PlayerHistory: function() {
                        return i.multipleNode(this.PastResult).reduce(function(e, t) {
                            return e[t["@index"]] = t["#text"], e
                        }, [])
                    }
                };
            return function() {
                return {
                    PlayerHistory: t(this, n).named("PlayerHistory")
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/KeyValuePairOutcome", ["require", "./../proxyNode"], function(e) {
            "use strict";
            var t = e("./../proxyNode"),
                i = {
                    Mapping: function() {
                        return this["@value"]
                    }
                };
            return function() {
                return t(this, i).mapped("Mapping", "@key")
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/PromotionalFreeSpin", ["require", "./../proxyFix"], function(e) {
            "use strict";
            var t = e("./../proxyFix");
            return function() {
                return {
                    count: t.toInt(this["@count"])
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/WagerInput", ["require", "./../proxyFix"], function(e) {
            "use strict";
            var t = e("./../proxyFix");
            return function() {
                var e = t.multipleNode(this.Wager).map(function(e) {
                    return Object.freeze({
                        name: e["@name"],
                        wager: t.toInt(e["#text"])
                    })
                });
                return Object.freeze({
                    Wager: Object.freeze(e)
                })
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse", ["require", "./proxyCachedNode", "./GameLogicResponse/ActionInput", "./GameLogicResponse/Balances", "./GameLogicResponse/HighlightOutcome", "./GameLogicResponse/JackpotOutcome", "./GameLogicResponse/LadderOutcome", "./GameLogicResponse/MultiplierOutcome", "./GameLogicResponse/OutcomeDetail", "./GameLogicResponse/PatternSliderInput", "./GameLogicResponse/PickerOutcome", "./GameLogicResponse/PickerSummaryOutcome", "./GameLogicResponse/PopulationOutcome", "./GameLogicResponse/PatternOutcome", "./GameLogicResponse/PrizeOutcome", "./GameLogicResponse/TriggerOutcome", "./GameLogicResponse/AwardCapOutcome", "./GameLogicResponse/FreeSpinOutcome", "./GameLogicResponse/PickerInput", "./GameLogicResponse/PlayerHistoryOutcome", "./GameLogicResponse/KeyValuePairOutcome", "./GameLogicResponse/PromotionalFreeSpin", "./GameLogicResponse/WagerInput"], function(e) {
            "use strict";
            var t = e("./proxyCachedNode"),
                i = Object.freeze({
                    ActionInput: e("./GameLogicResponse/ActionInput"),
                    Balances: e("./GameLogicResponse/Balances"),
                    HighlightOutcome: e("./GameLogicResponse/HighlightOutcome"),
                    JackpotOutcome: e("./GameLogicResponse/JackpotOutcome"),
                    LadderOutcome: e("./GameLogicResponse/LadderOutcome"),
                    MultiplierOutcome: e("./GameLogicResponse/MultiplierOutcome"),
                    OutcomeDetail: e("./GameLogicResponse/OutcomeDetail"),
                    PatternSliderInput: e("./GameLogicResponse/PatternSliderInput"),
                    PickerOutcome: e("./GameLogicResponse/PickerOutcome"),
                    PickerSummaryOutcome: e("./GameLogicResponse/PickerSummaryOutcome"),
                    PopulationOutcome: e("./GameLogicResponse/PopulationOutcome"),
                    PatternOutcome: e("./GameLogicResponse/PatternOutcome"),
                    PrizeOutcome: e("./GameLogicResponse/PrizeOutcome"),
                    TriggerOutcome: e("./GameLogicResponse/TriggerOutcome"),
                    AwardCapOutcome: e("./GameLogicResponse/AwardCapOutcome"),
                    FreeSpinOutcome: e("./GameLogicResponse/FreeSpinOutcome"),
                    PickerInput: e("./GameLogicResponse/PickerInput"),
                    PlayerHistoryOutcome: e("./GameLogicResponse/PlayerHistoryOutcome"),
                    KeyValuePairOutcome: e("./GameLogicResponse/KeyValuePairOutcome"),
                    PromotionalFreeSpin: e("./GameLogicResponse/PromotionalFreeSpin"),
                    WagerInput: e("./GameLogicResponse/WagerInput")
                });
            return function(e) {
                var n = t(e, i);
                return Object.freeze({
                    ActionInput: n.named("ActionInput"),
                    Balances: n.single("Balances")(),
                    HighlightOutcome: n.named("HighlightOutcome"),
                    JackpotOutcome: n.mapped("JackpotOutcome", "@name"),
                    LadderOutcome: n.named("LadderOutcome"),
                    MultiplierOutcome: n.named("MultiplierOutcome"),
                    OutcomeDetail: n.single("OutcomeDetail")(),
                    PatternSliderInput: n.single("PatternSliderInput"),
                    PickerOutcome: n.named("PickerOutcome"),
                    PickerSummaryOutcome: n.named("PickerSummaryOutcome"),
                    PopulationOutcome: n.named("PopulationOutcome"),
                    PatternOutcome: n.named("PatternOutcome"),
                    PrizeOutcome: n.named("PrizeOutcome"),
                    TriggerOutcome: n.named("TriggerOutcome"),
                    AwardCapOutcome: n.named("AwardCapOutcome"),
                    FreeSpinOutcome: n.named("FreeSpinOutcome"),
                    PickerInput: n.named("PickerInput"),
                    PlayerHistoryOutcome: n.named("PlayerHistoryOutcome"),
                    KeyValuePairOutcome: n.named("KeyValuePairOutcome"),
                    PromotionalFreeSpin: n.single("PromotionalFreeSpin"),
                    WagerInput: n.named("WagerInput")
                })
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/AwardCapInfo", ["require", "./../proxyFix"], function(e) {
            "use strict";
            var t = e("./../proxyFix");
            return function() {
                return t.toNumber(this.CurrencyCap.AwardCap)
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/PaytableStatistics", [], function() {
            "use strict";
            return function() {
                return {
                    description: this["@description"],
                    maxRTP: this["@maxRTP"],
                    minRTP: this["@minRTP"],
                    name: this["@name"],
                    type: this["@type"]
                }
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/PatternSliderInfo", ["require", "./../proxyFix", "./../proxyCachedNode"], function(e) {
            "use strict";
            var t = e("./../proxyFix"),
                i = e("./../proxyCachedNode"),
                n = {
                    BetInfo: function() {
                        return {
                            min: this["@min"],
                            max: this["@max"],
                            Step: t.multipleNode(this.Step)
                        }
                    },
                    PatternInfo: function() {
                        return {
                            min: this["@min"],
                            max: this["@max"],
                            Step: t.multipleNode(this.Step)
                        }
                    }
                };
            return function() {
                var e = i(this, n);
                return {
                    BetInfo: e.single("BetInfo"),
                    PatternInfo: e.single("PatternInfo")
                }
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/StripInfo", ["require", "./../proxyFix"], function(e) {
            "use strict";
            var t = e("./../proxyFix");
            return function() {
                return t.multipleNode(this.Strip).map(function(e) {
                    if (e["#text"]) return e["#text"].split(",");
                    var i = t.multipleNode(e.Stop);
                    return Object.keys(i).map(function(e) {
                        return i[e]["@symbolID"]
                    })
                })
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/LadderInfo", ["require", "./../proxyCachedNode"], function(e) {
            "use strict";
            var t = e("./../proxyCachedNode"),
                i = {
                    InputEvents: function() {
                        return {
                            isExtraIncrement: this["@isExtraIncrement"],
                            ladderIncrement: this["@ladderIncrement"]
                        }
                    },
                    OutputEvents: function() {
                        return {
                            minTriggerCount: this["@minTriggerCount"],
                            extraIncrement: this["@extraIncrement"]
                        }
                    }
                };
            return function() {
                var e = t(this, i);
                return {
                    InputEvents: e.mapped("InputEvents", "@triggerName"),
                    OutputEvents: e.mapped("OutputEvents", "@triggerName")
                }
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/TriggerInfo", ["require", "./../proxyFix", "./../proxyNode"], function(e) {
            "use strict";

            function t(e) {
                var t = e["@category"];
                if (!(r[t] instanceof Function)) throw new Error('No compiler for Condition with @category "' + t + '"');
                return r[t](e)
            }
            var i = e("./../proxyFix"),
                n = e("./../proxyNode"),
                r = {
                    TRIGGER: function(e) {
                        return function(t) {
                            return e["@value"] === t
                        }
                    },
                    OR: function(e) {
                        var n = i.multipleNode(e.Condition).map(function(e) {
                            return t(e)
                        });
                        return function(e) {
                            return n.some(function(t) {
                                return t(e)
                            })
                        }
                    },
                    AND: function(e) {
                        var n = i.multipleNode(e.Condition).map(function(e) {
                            return t(e)
                        });
                        return function(e) {
                            return n.every(function(t) {
                                return t(e)
                            })
                        }
                    },
                    NOT: function(e) {
                        var i = t(e.Condition);
                        return function(e) {
                            return !i(e)
                        }
                    }
                },
                o = {
                    Trigger: function() {
                        return {
                            priority: i.toInt(this["@priority"]),
                            Condition: t(this.Condition)
                        }
                    }
                };
            return function() {
                return {
                    Trigger: n(this, o).mapped("Trigger", "@name")
                }
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/KeyValuePairInfo", ["require", "./../proxyNode"], function(e) {
            "use strict";
            var t = e("./../proxyNode"),
                i = {
                    Mapping: function() {
                        return this["@value"]
                    }
                };
            return function() {
                return t(this, i).mapped("Mapping", "@key")
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/KeyValueListInfo", ["require", "./../proxyFix", "./../proxyNode"], function(e) {
            "use strict";
            var t = e("./../proxyFix"),
                i = e("./../proxyNode"),
                n = {
                    Mapping: function() {
                        return t.multipleNode(this.Entry).map(function(e) {
                            return e["@value"]
                        })
                    }
                };
            return function() {
                return i(this, n).mapped("Mapping", "@key")
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/MultiplierInfo", ["require", "./../proxyFix", "./../proxyNode", "./../proxyCachedNode"], function(e) {
            "use strict";
            var t = e("./../proxyFix"),
                i = e("./../proxyNode"),
                n = e("./../proxyCachedNode"),
                r = {
                    Action: function() {
                        return {
                            strategy: this["@strategy"],
                            value: t.toInt(this["@value"])
                        }
                    }
                },
                o = {
                    Trigger: function() {
                        return {
                            Action: i(this, r).multiple("Action")
                        }
                    }
                };
            return function() {
                return {
                    Trigger: n(this, o).named("Trigger")
                }
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/PickerInfo", ["require", "./../proxyFix", "./../proxyNode"], function(e) {
            "use strict";
            var t = e("./../proxyFix"),
                i = e("./../proxyNode"),
                n = {
                    Layer: function() {
                        return t.multipleNode(this.Pick).reduce(function(e, t) {
                            return e[t["@name"]] = t["@cellName"], e
                        }, {})
                    }
                };
            return function() {
                var e = i(this, n);
                return {
                    InitialLayer: t.toInt(this.InitialLayer),
                    InitialPickCount: t.toInt(this.InitialPickCount),
                    MaxPicksPerTurn: t.toInt(this.MaxPicksPerTurn),
                    MaxTotalPicks: t.toInt(this.MaxTotalPicks),
                    MinPicks: t.toInt(this.MinPicks),
                    Layers: e.mapped("Layer", "@index")
                }
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/PrizeInfo", ["require", "./../proxyFix", "./../proxyNode"], function(e) {
            "use strict";
            var t = e("./../proxyFix"),
                i = e("./../proxyNode"),
                n = {
                    PrizePay: function() {
                        return t.toInt(this["@value"])
                    }
                },
                r = {
                    Prize: function() {
                        var e = i(this, n);
                        return {
                            name: this["@name"],
                            PrizePay: e.mapped("PrizePay", "@count")
                        }
                    }
                };
            return function() {
                return {
                    Prize: i(this, r).multiple("Prize")
                }
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/SelectiveStackingInfo", ["require", "./../proxyNode"], function(e) {
            "use strict";
            var t = e("./../proxyNode"),
                i = {
                    SelectiveStackingSymbolList: function() {
                        return this["@name"]
                    }
                };
            return function() {
                var e = t(this, i);
                return {
                    DefaultSchema: this.DefaultSchema,
                    SelectiveStackingSymbolList: e.multiple("SelectiveStackingSymbolList")
                }
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/Jackpot", ["require", "./../proxyNode"], function(e) {
            "use strict";
            var t = e("./../proxyNode"),
                i = {
                    BetBandMap: function() {
                        return {
                            bandId: this["@bandId"]
                        }
                    }
                };
            return function() {
                var e = t(this, i);
                return {
                    id: this["@id"],
                    BetBandMap: e.mapped("BetBandMap", "@totalBet")
                }
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/ChipValues", [], function() {
            "use strict";
            return function() {
                return {
                    min: this["@min"],
                    max: this["@min"],
                    Chip: this.Chip
                }
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/GameData", ["require", "./../proxyCachedNode", "./ChipValues", "./KeyValuePairInfo"], function(e) {
            "use strict";
            var t = e("./../proxyCachedNode"),
                i = Object.freeze({
                    ChipValues: e("./ChipValues"),
                    KeyValuePairInfo: e("./KeyValuePairInfo")
                });
            return function() {
                var e = t(this, i);
                return Object.freeze({
                    ChipValues: e.single("ChipValues"),
                    KeyValuePairInfo: e.named("KeyValuePairInfo")
                })
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/TableInfo", ["require", "./../proxyFix", "./../proxyCachedNode"], function(e) {
            "use strict";
            var t = e("./../proxyFix"),
                i = e("./../proxyCachedNode"),
                n = {
                    Chips: function() {
                        return t.multipleNode(this.Chip)
                    }
                };
            return function() {
                return {
                    Chips: i(this, n).named("Chips", "@currency"),
                    MaxSpotBetDivider: t.toNumber(this.MaxSpotBetDivider),
                    MinChipValue: t.toNumber(this.MinChipValue),
                    SideBetMax: t.toNumber(this.SideBetMax),
                    SideBetMin: t.toNumber(this.SideBetMin),
                    TableMax: t.toNumber(this.TableMax),
                    TableMin: t.toNumber(this.TableMin)
                }
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/GameBetInfo", ["require", "./../proxyFix"], function(e) {
            "use strict";
            var t = e("./../proxyFix");
            return function() {
                return {
                    MinChipValue: t.toNumber(this.MinChipValue),
                    MinBet: t.toNumber(this.MinBet),
                    MaxBet: t.toNumber(this.MaxBet),
                    MinSideBet: t.toNumber(this.MinSideBet),
                    MaxSideBet: t.toNumber(this.MaxSideBet)
                }
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/PersonalProgressiveInfo", ["require", "./../proxyFix"], function(e) {
            "use strict";
            var t = e("./../proxyFix");
            return function() {
                return {
                    precision: t.toNumber(this["@precision"]),
                    strategy: this["@strategy"]
                }
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse", ["require", "./proxyCachedNode", "./PaytableResponse/AwardCapInfo", "./PaytableResponse/PaytableStatistics", "./PaytableResponse/PatternSliderInfo", "./PaytableResponse/StripInfo", "./PaytableResponse/LadderInfo", "./PaytableResponse/TriggerInfo", "./PaytableResponse/KeyValuePairInfo", "./PaytableResponse/KeyValueListInfo", "./PaytableResponse/MultiplierInfo", "./PaytableResponse/PickerInfo", "./PaytableResponse/PrizeInfo", "./PaytableResponse/SelectiveStackingInfo", "./PaytableResponse/Jackpot", "./PaytableResponse/GameData", "./PaytableResponse/TableInfo", "./PaytableResponse/GameBetInfo", "./PaytableResponse/PersonalProgressiveInfo"], function(e) {
            "use strict";
            var t = e("./proxyCachedNode"),
                i = Object.freeze({
                    AwardCapInfo: e("./PaytableResponse/AwardCapInfo"),
                    PaytableStatistics: e("./PaytableResponse/PaytableStatistics"),
                    PatternSliderInfo: e("./PaytableResponse/PatternSliderInfo"),
                    StripInfo: e("./PaytableResponse/StripInfo"),
                    LadderInfo: e("./PaytableResponse/LadderInfo"),
                    TriggerInfo: e("./PaytableResponse/TriggerInfo"),
                    KeyValuePairInfo: e("./PaytableResponse/KeyValuePairInfo"),
                    KeyValueListInfo: e("./PaytableResponse/KeyValueListInfo"),
                    MultiplierInfo: e("./PaytableResponse/MultiplierInfo"),
                    PickerInfo: e("./PaytableResponse/PickerInfo"),
                    PrizeInfo: e("./PaytableResponse/PrizeInfo"),
                    SelectiveStackingInfo: e("./PaytableResponse/SelectiveStackingInfo"),
                    Jackpot: e("./PaytableResponse/Jackpot"),
                    GameData: e("./PaytableResponse/GameData"),
                    TableInfo: e("./PaytableResponse/TableInfo"),
                    GameBetInfo: e("./PaytableResponse/GameBetInfo"),
                    PersonalProgressiveInfo: e("./PaytableResponse/PersonalProgressiveInfo")
                });
            return function(e) {
                var n = t(e, i);
                return Object.freeze({
                    AwardCapInfo: n.single("AwardCapInfo"),
                    PaytableStatistics: n.single("PaytableStatistics"),
                    PatternSliderInfo: n.single("PatternSliderInfo"),
                    StripInfo: n.named("StripInfo"),
                    LadderInfo: n.named("LadderInfo"),
                    TriggerInfo: n.named("TriggerInfo"),
                    KeyValuePairInfo: n.named("KeyValuePairInfo"),
                    KeyValueListInfo: n.named("KeyValueListInfo"),
                    MultiplierInfo: n.named("MultiplierInfo"),
                    PickerInfo: n.named("PickerInfo"),
                    PrizeInfo: n.named("PrizeInfo"),
                    SelectiveStackingInfo: n.single("SelectiveStackingInfo"),
                    Jackpot: n.single("Jackpot"),
                    GameData: n.single("GameData"),
                    TableInfo: n.named("TableInfo"),
                    GameBetInfo: n.single("GameBetInfo"),
                    PersonalProgressiveInfo: n.single("PersonalProgressiveInfo")
                })
            }
        }), define("skbJet/componentManchester/rgsModel/CurrencyResponse", ["require", "./proxyFix"], function(e) {
            "use strict";
            var t = e("./proxyFix");
            return function(e) {
                return function(i, n, r) {
                    function o(e) {
                        return (e * r).toFixed(c)
                    }

                    function a(e, t) {
                        var i, n = o(e).split("."),
                            r = (+n[0]).toString(),
                            a = n[1] || 0;
                        if (f)
                            for (; i = r.match(/^(\d+)(\d\d\d)(.*)$/);) r = i[1].concat(f, i[2], i[3]);
                        return t = t && 0 == +a, h.concat(r, t ? "" : d, t ? "" : a, p)
                    }
                    n = n.toLowerCase();
                    var s = e.filter(function(e) {
                        return e["@currencyCode"] === i
                    });
                    s = s.find(function(e) {
                        return e["@language"] && e["@language"].toLowerCase() === n
                    }) || s.find(function(e) {
                        return void 0 === e["@language"]
                    });
                    var l = s["@currencyCode"],
                        u = "true" === s.MAJOR_SYMBOL_PADDING_SPACE ? " " : "",
                        c = t.toInt(s.DECIMAL_PRECISION),
                        h = "left" === s.MAJOR_SYMBOL_ALIGNMENT ? s.MAJOR_SYMBOL + u : "",
                        p = "right" === s.MAJOR_SYMBOL_ALIGNMENT ? u + s.MAJOR_SYMBOL : "",
                        f = ("yes" === s.USE_THOUSANDS_SEPARATOR ? s.THOUSANDS_SEPARATOR : "").replace("_", " "),
                        d = (c ? s.DECIMAL_SEPARATOR : "").replace("_", " ");
                    return r = r || Math.pow(10, -c), Object.freeze({
                        toString: function() {
                            return l
                        },
                        toStakeUnits: function(e) {
                            return e / r
                        },
                        toCurrency: o,
                        formatFloat: function(e, t) {
                            return a(e / r, t)
                        },
                        format: a,
                        formatShort: function(e) {
                            return a(e, 1)
                        },
                        formatLong: function(e) {
                            return a(e, 0)
                        }
                    })
                }
            }
        }), define("skbJet/componentManchester/rgsModel/rgsModel", ["require", "skbJet/component/gameMsgBus/GameMsgBus", "./GameLogicResponse", "./PaytableResponse", "./CurrencyResponse"], function(e) {
            "use strict";

            function t(e) {
                s.gameLogic = r(e.GameLogicResponse), s.paytable = o(e.PaytableResponse), s.currency = a(e.CurrencyResponse)
            }

            function i(e) {
                s.gameLogic = r(e.response)
            }
            var n = e("skbJet/component/gameMsgBus/GameMsgBus"),
                r = e("./GameLogicResponse"),
                o = e("./PaytableResponse"),
                a = e("./CurrencyResponse"),
                s = Object.seal({
                    gameLogic: {},
                    paytable: {},
                    currency: {}
                });
            return n.subscribe("platformMsg/ClientService/Game.Init", t), n.subscribe("onResolveStage", i), s
        }), define("game/views/ui/betController", ["require", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/currencyHelper/currencyHelper", "game/commonUI/slot/slotUI", "skbJet/componentManchester/rgsModel/rgsModel", "game/commonUI/slot/betData", "game/data/paytableModel", "game/data/winDataModel", "game/data/gameDataModel", "game/data/gameEvents", "game/data/stateEvents", "game/utils/miscUtils", "game/data/setupData"], function(e) {
            "use strict";
            var t = e("skbJet/component/gameMsgBus/GameMsgBus"),
                i = e("skbJet/component/currencyHelper/currencyHelper"),
                n = e("game/commonUI/slot/slotUI"),
                r = e("skbJet/componentManchester/rgsModel/rgsModel"),
                o = e("game/commonUI/slot/betData"),
                a = e("game/data/paytableModel"),
                s = e("game/data/winDataModel"),
                l = e("game/data/gameDataModel"),
                u = e("game/data/gameEvents"),
                c = e("game/data/stateEvents"),
                h = (e("game/utils/miscUtils"), e("game/data/setupData")),
                p = function() {
                    function e(e) {
                        a.init(e), T = a.patternInfo = r.paytable.PatternSliderInfo().PatternInfo(), w = a.patternsBet = r.gameLogic.PatternSliderInput().PatternsBet, E = a.betPerPattern = r.gameLogic.PatternSliderInput().BetPerPattern, S = a.betValues = r.paytable.PatternSliderInfo().BetInfo().Step, y()
                    }

                    function p() {
                        t.publish(u.PLATFORM_TO_PLATFORM, {
                            channel: "Game",
                            topic: "Game.PlayData",
                            data: {
                                ActionInput: {
                                    Action: "play"
                                },
                                PatternSliderInput: {
                                    BetPerPattern: o.betPerPattern,
                                    PatternsBet: o.patternsBet
                                }
                            }
                        }), c.publish(c.FROM_MAKE_REQUEST)
                    }

                    function f(e) {
                        e.nextStage === h.BASE_GAME && (s.winType === s.MAX_WIN ? (s.resetWinType(), l.freeSpinsExit = !0, c.publish(c.FROM_START_ROLLUP)) : (s.parsePrizeData(e, !1), c.publish(c.FROM_EXIT_STAGE))), a.stage = e.nextStage
                    }

                    function d() {
                        var e = s.winType,
                            t = 0,
                            i = 0;
                        "BaseGame.response" !== l.currentState && "FreeSpin.resolveSpin" !== l.currentState || e !== s.NO_WIN && (t = h.WINLINE_SHOW_TIME * s.perWinlineData.length, i = l.currentGameState === h.BASE_GAME ? s.totalPrizeBaseGame : s.totalPrizeFreeSpinSingleSpin, u.publish(u.UPDATE_FOOTER, {
                            winUnformatted: i,
                            rollupTime: t
                        })), "Recovery.gameInProgress" === l.currentState && e !== s.NO_WIN && (t = h.WINLINE_SHOW_TIME * s.perWinlineData.length, i = l.currentGameState === h.BASE_GAME ? s.totalPrizeBaseGame : s.totalPrizeFreeSpinSingleSpin, u.publish(u.UPDATE_FOOTER, {
                            winUnformatted: i,
                            rollupTime: t
                        }))
                    }

                    function _(e) {
                        "BaseGame.resolveSpin" === l.currentState && s.freeSpinsRemaining === s.freeSpinsTotal || d(e)
                    }

                    function m() {
                        "BaseGame.enterNextStage" === l.currentState ? c.publish(c.FROM_END_GAME) : l.completeSpinEvent("betController.js", s.freeSpinsRemaining)
                    }

                    function g(e) {
                        if ("BaseGame.startExitRollup" === l.currentState) {
                            var t = s.totalPrizeAll,
                                i = s.freeSpinsOriginSpinData.perWinlineData.length;
                            if (t > 0) {
                                var n = h.WINLINE_SHOW_TIME * i,
                                    r = t;
                                u.publish(u.UPDATE_FOOTER, {
                                    winUnformatted: r,
                                    rollupTime: n,
                                    isFreeSpinsExit: !0
                                })
                            }
                        }
                        v(e)
                    }

                    function v(e) {
                        "BaseGame.beginNewGame" === e.state ? (n.baseGame.autoSpin.active || b(!0), x.showAll()) : "FreeSpin.exitStage" === e.state || "Recovery.gameInProgress" === e.state ? x.hideAll() : "BaseGame.enterNextStage" === e.state ? x.showAll() : b(!1)
                    }

                    function y() {
                        t.publish(u.PLATFORM_TO_PLATFORM, {
                            channel: "Game",
                            topic: "Game.Register",
                            data: {
                                options: [{
                                    name: "stake",
                                    text: "Stake",
                                    type: "stake",
                                    enabled: 0,
                                    value: 0,
                                    valueText: "0"
                                }]
                            }
                        }), t.publish(u.PLATFORM_TO_PLATFORM, {
                            channel: "Game",
                            topic: "Game.Control",
                            data: {
                                name: "stake",
                                event: "change",
                                params: [i.fromStakeUnits(o.totalBet), i.formatBalance(i.fromStakeUnits(o.totalBet))]
                            }
                        }), t.publish(u.PLATFORM_TO_PLATFORM, {
                            channel: "Game",
                            topic: "Game.Register",
                            data: {
                                options: [{
                                    type: "list",
                                    name: "patternsBet",
                                    text: "Lines",
                                    enabled: 1,
                                    valueText: T.Step,
                                    values: T.Step,
                                    value: w
                                }]
                            }
                        }), t.publish(u.PLATFORM_TO_PLATFORM, {
                            channel: "Game",
                            topic: "Game.Register",
                            data: {
                                options: [{
                                    type: "list",
                                    name: "betPerPattern",
                                    text: "Coin Value",
                                    enabled: 1,
                                    valueText: S.map(function(e) {
                                        return i.formatBalance(i.fromStakeUnits(e))
                                    }),
                                    values: S,
                                    value: E
                                }]
                            }
                        }), t.publish(u.PLATFORM_TO_PLATFORM, {
                            channel: "Game",
                            topic: "Game.Control",
                            data: {
                                name: "patternsBet",
                                event: "enable",
                                params: [0]
                            }
                        }), b(!1)
                    }

                    function b(e) {
                        t.publish("toPlatform", {
                            channel: "Game",
                            topic: "Game.Control",
                            data: {
                                name: "betPerPattern",
                                event: "enable",
                                params: [e ? 1 : 0]
                            }
                        })
                    }
                    var x, S, T, w, E;
                    this.init = function(i, n) {
                        x = i, e(n), t.subscribe(u.ON_MAKE_REQUEST, p), t.subscribe(u.ON_ENTER_NEXT_STAGE, f), t.subscribe(u.ON_START_PROGRESS_NEXT_STAGE, f), t.subscribe(u.ON_RESOLVE_STAGE, d), t.subscribe(u.ON_END_GAME, m), t.subscribe(u.ON_IN_PROGRESS_STAGE, d), t.subscribe(u.ON_EXIT_STAGE, _), t.subscribe(u.ON_START_PROGRESS_STAGE, d), t.subscribe(c.STATE_CHANGED, g)
                    }
                };
            return p.prototype.constructor = p, p
        }), define("game/views/ui/betView", ["require", "game/utils/miscUtils", "game/views/ui/betController", "game/commonUI/slot/slotUI"], function(e) {
            "use strict";
            var t = (e("game/utils/miscUtils"), e("game/views/ui/betController")),
                i = e("game/commonUI/slot/slotUI"),
                n = function() {
                    var e, n;
                    this.init = function(i) {
                        e = this, n = new t, n.init(e, i)
                    }, this.hideAll = function() {
                        i.baseGame.betConfig.visible = !1
                    }, this.showAll = function() {
                        i.baseGame.betConfig.visible = !0
                    }
                };
            return n.prototype.constructor = n, n
        }), define("game/views/ui/footer", ["require", "skbJet/component/gameMsgBus/GameMsgBus", "game/commonUI/slot/slotUI", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/currencyHelper/currencyHelper", "com/gsap/TweenMax", "game/data/gameEvents", "game/data/winDataModel", "game/data/gameDataModel", "game/data/paytableModel", "game/data/stateEvents", "game/data/setupData", "game/utils/miscUtils"], function(e) {
            "use strict";
            var t = e("skbJet/component/gameMsgBus/GameMsgBus"),
                i = e("game/commonUI/slot/slotUI"),
                n = e("skbJet/component/pixiResourceLoader/pixiResourceLoader"),
                r = e("skbJet/component/currencyHelper/currencyHelper"),
                o = e("com/gsap/TweenMax"),
                a = e("game/data/gameEvents"),
                s = e("game/data/winDataModel"),
                l = e("game/data/gameDataModel"),
                u = e("game/data/paytableModel"),
                c = e("game/data/stateEvents"),
                h = e("game/data/setupData"),
                p = (e("game/utils/miscUtils"), function() {
                    function e() {
                        x = n.i18n.Game, i.baseGame.footer.balance.label = x.consoleBalance, i.baseGame.footer.win.label = x.consoleWin, i.baseGame.footer.bet.label = x.consoleBet, i.baseGame.footer.promoSpins.label = x.promoFreeSpins, i.freeSpins.footer.spins.label = x.consoleSpins, i.freeSpins.footer.win.label = x.consoleWin, i.freeSpins.footer.bonusWin.label = x.consoleBonus
                    }

                    function p(e) {
                        e.balanceFormatted && (i.baseGame.footer.balance.value = e.balanceFormatted), e.winUnformatted && (S = e.winUnformatted, w = .001 * e.rollupTime, I = !1, e.isFreeSpinsExit && (I = e.isFreeSpinsExit), E && f()), e.betFormatted && (T = e.betUnformatted, e.betFormatted !== i.baseGame.footer.bet.value && (_(), i.baseGame.footer.bet.value = e.betFormatted))
                    }

                    function f() {
                        if (!O)
                            if (S > 0) {
                                E = !1;
                                var e = S,
                                    t = 0;
                                C = !1;
                                var n = d(e);
                                w = n;
                                var u = 0;
                                R = {
                                        prize: t,
                                        bonusPrize: 0
                                    },
                                    l.currentGameState === h.FREE_SPINS && (R.bonusPrize = t = s.totalPrizeFreeSpinCumulative - s.totalPrizeFreeSpinSingleSpin, e = s.totalPrizeFreeSpinSingleSpin, u = s.totalPrizeFreeSpinCumulative);
                                var c = S <= r.fromStakeUnits(s.totalBet),
                                    p = S < 5 * r.fromStakeUnits(s.totalBet);
                                a.publish(a.START_BIG_WIN_ROLLUP, {
                                    winUnformatted: e,
                                    rollupTime: n,
                                    isFreeSpinsExit: I,
                                    bellOnly: C,
                                    isSmallWin: p,
                                    noRollup: c
                                }), o.to(R, n, {
                                    ease: window.Linear.easeNone,
                                    prize: e,
                                    bonusPrize: u,
                                    onUpdate: function() {
                                        l.currentGameState === h.FREE_SPINS && R.bonusPrize > 0 && (i.freeSpins.footer.bonusWin.value = r.formatBalance(R.bonusPrize))
                                    },
                                    onComplete: function() {
                                        l.currentGameState === h.FREE_SPINS ? (i.freeSpins.footer.win.value = r.formatBalance(R.prize), R.bonusPrize > 0 && (i.freeSpins.footer.bonusWin.value = r.formatBalance(R.bonusPrize))) : i.baseGame.footer.win.value = r.formatBalance(R.prize)
                                    }
                                })
                            } else E = !0
                    }

                    function d(e) {
                        I && s.detectWinType({}, !0, e);
                        var t = l.currentGameState === h.BASE_GAME,
                            i = s.winType,
                            n = A.indexOf(i) > -1 && t;
                        P = h.ROLLUP_FADE_TIME;
                        var r = n ? 3 : 1,
                            o = Math.log(S) / Math.LN10 * r,
                            a = Math.max(o, h.ROLLUP_MIN_TIME[n ? 1 : 0]),
                            u = .001 * h.ROLLUP_BIG_WIN_BELL_TIME,
                            c = .001 * h.ROLLUP_BIG_WIN_MINIMUM_MUSIC_TIME;
                        return n && a < u + c && a > u && (C = !0, a = u), a > h.ROLLUP_MAX_TIME[n ? 1 : 0] && (a = h.ROLLUP_MAX_TIME[n ? 1 : 0]), a
                    }

                    function _() {
                        o.killTweensOf(R), i.baseGame.footer.win.value = " ", i.freeSpins.footer.win.value = " ", E = !1, S = 0, w = 0, O = !1
                    }

                    function m() {
                        s.winType !== s.NO_WIN && (o.killTweensOf(R), l.currentGameState === h.FREE_SPINS ? (i.freeSpins.footer.win.value = r.formatBalance(s.totalPrizeFreeSpinSingleSpin), s.totalPrizeFreeSpinCumulative > 0 && (i.freeSpins.footer.bonusWin.value = r.formatBalance(s.totalPrizeFreeSpinCumulative))) : i.baseGame.footer.win.value = r.formatBalance(S), a.publish(a.SKIP_HIDE), c.publish(c.FROM_START_ROLLUP))
                    }

                    function g(e) {
                        void 0 === e && (e = !1), i.freeSpins.footer.visible = !0, i.baseGame.footer.visible = !1, i.freeSpins.footer.spins.value = parseInt(s.freeSpinCount) + 1 + x.consoleSpinsPlayedOf + s.freeSpinsTotal, i.freeSpins.footer.bonusWin.value = " ", e && s.totalPrizeFreeSpinCumulative > 0 && (i.freeSpins.footer.bonusWin.value = r.formatBalance(s.totalPrizeFreeSpinCumulative))
                    }

                    function v() {
                        i.freeSpins.footer.visible = !1, i.baseGame.footer.visible = !0
                    }

                    function y(e) {
                        "FreeSpin.request" === e.state ? (i.freeSpins.footer.spins.value = parseInt(s.freeSpinCount, 10) + 1 + n.i18n.Game.consoleSpinsPlayedOf + s.freeSpinsTotal, _()) : "BaseGame.exitStage" === e.state && _()
                    }

                    function b() {
                        i.baseGame.footer.win.value = r.formatBalance(u.maxWinNum), i.freeSpins.footer.bonusWin.value = r.formatBalance(u.maxWinNum)
                    }
                    var x, S, T, w, E, P, R = {
                            prize: 0
                        },
                        O = !1,
                        A = [s.BIG_WIN, s.HUGE_WIN, s.MASSIVE_WIN, s.MEGA_WIN],
                        I = !1,
                        C = !1;
                    this.init = function() {
                        e(), t.subscribe(a.UPDATE_FOOTER, p), t.subscribe(a.START_ROLLUP, f), t.subscribe(c.START_BASE_SPIN, _), t.subscribe(a.SKIP_WIN, m), t.subscribe(a.ENTER_FREE_SPINS, g), t.subscribe(a.SHOW_FREE_SPINS, function(e) {
                            e.midFreeSpinsRecovery && g(!0)
                        }), t.subscribe(a.EXIT_FREE_SPINS, v), t.subscribe(c.STATE_CHANGED, y), t.subscribe(a.MAX_WIN_ACHIEVED, b)
                    }
                });
            return p.prototype.constructor = p, p
        }), define("game/views/ui/autoplay", ["require", "skbJet/component/gameMsgBus/GameMsgBus", "game/data/stateEvents", "game/data/gameEvents", "game/data/winDataModel", "game/commonUI/slot/slotUI"], function(e) {
            "use strict";
            var t = e("skbJet/component/gameMsgBus/GameMsgBus"),
                i = e("game/data/stateEvents"),
                n = e("game/data/gameEvents"),
                r = e("game/data/winDataModel"),
                o = e("game/commonUI/slot/slotUI"),
                a = function() {
                    function e(e) {
                        if ("FreeSpin.exitStage" === e.state) o.baseGame.autoSpin.active = !1, o.baseGame.autoSpin.count = 0;
                        else if ("BaseGame.beginNewGame" === e.state) {
                            var t = r.winType === r.MAX_WIN;
                            o.baseGame.autoSpin.active || t || (o.baseGame.autoSpin.enabled = !0)
                        }
                    }

                    function a() {
                        o.baseGame.autoSpin.enabled = !0
                    }
                    this.getSpinsRemaining = function() {
                        return o.baseGame.autoSpin.count
                    }, this.init = function() {
                        t.subscribe(i.STATE_CHANGED, e), t.subscribe(n.MAX_WIN_COMPLETE, a), t.subscribe("UI.AutoSpinStart", this.doNextSpin)
                    }, this.doNextSpin = function() {
                        i.publish(i.START_BASE_SPIN)
                    }
                };
            return a.prototype.constructor = a, a
        }), define("game/views/ui/uiView", ["require", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "game/data/setupData", "game/utils/miscUtils", "game/views/ui/uiController", "game/views/ui/playMessage", "game/views/freeSpins/freeSpinsIntroMessage", "game/views/bigWin/patternPayMessage", "game/views/ui/betView", "game/views/ui/footer", "game/views/ui/autoplay", "game/data/gameDataModel", "game/data/paytableModel", "game/commonUI/slot/slotUI", "com/gsap/plugins/PixiPlugin"], function(e) {
            "use strict";
            var t = e("skbJet/component/gladPixiRenderer/gladPixiRenderer"),
                i = e("skbJet/component/pixiResourceLoader/pixiResourceLoader"),
                n = e("game/data/setupData"),
                r = (e("game/utils/miscUtils"), e("game/views/ui/uiController")),
                o = e("game/views/ui/playMessage"),
                a = e("game/views/freeSpins/freeSpinsIntroMessage"),
                s = e("game/views/bigWin/patternPayMessage"),
                l = e("game/views/ui/betView"),
                u = e("game/views/ui/footer"),
                c = e("game/views/ui/autoplay"),
                h = e("game/data/gameDataModel"),
                p = e("game/data/paytableModel"),
                f = e("game/commonUI/slot/slotUI");
            e("com/gsap/plugins/PixiPlugin");
            var d = function() {
                function e(e, t) {
                    void 0 === t && (t = !0), f.baseGame.spin.visible = e, p.autoSpinSupported && f.baseGame.autoSpin && void 0 !== f.baseGame.autoSpin.visible && (f.baseGame.autoSpin.visible = t)
                }
                var d, _, m, g, v, y, b, x, S;
                this.init = function() {
                    d = this, v = i.i18n.Game, f.baseGame.betConfig.totalBet.label = v.consoleBet, f.baseGame.betConfig.meterBar.betPerPattern.label = v.selectorBetPerPattern, f.baseGame.betConfig.meterBar.patternsBet.label = v.selectorPatternsBet, f.baseGame.prompt.text = v.betPrompt, f.set({
                        gameLayer: t.lib._gameLayer.pixiContainer
                    }), _ = new r, _.init(d)
                }, this.setup = function(i) {
                    e(!1, !1), f.baseGame.skip.visible = !1, f.freeSpins.skip.visible = !1, f.baseGame.play.visible = !1, f.freeSpins.play.visible = !1, b = new o, b.init(), x = new a, x.init(), S = new s, S.init(), m = new l, m.init(i), g = new u, g.init(), f.freeSpins.footer.visible = !1, y = new c, y.init(i), t.lib._ui.pixiContainer.addChild(f.container)
                }, this.spinStarted = function() {
                    f.baseGame.spin.enabled = !1
                }, this.onBeginNewGame = function() {
                    f.baseGame.autoSpin.active && y.getSpinsRemaining() > 0 ? y.doNextSpin() : f.baseGame.spin.enabled = !0
                }, this.showFreeSpins = function() {
                    e(!1, !1)
                }, this.showButton = function(t, i, r) {
                    h.currentGameState === n.FREE_SPINS ? e(t, t) : (e(!i && !r), f.baseGame.spin.enabled = t), f.baseGame.skip.visible = i, f.baseGame.play.visible = r
                }, this.orientationChanged = function() {
                    h.currentGameState === n.FREE_SPINS && e(!1, !1)
                }
            };
            return d.prototype.constructor = d, d
        }), define("game/stateMachine/SMController", ["require", "skbJet/component/gameMsgBus/GameMsgBus", "game/data/gameDataModel", "game/data/winDataModel", "game/data/setupData", "game/utils/miscUtils", "game/data/stateEvents"], function(e) {
            "use strict";
            var t = e("skbJet/component/gameMsgBus/GameMsgBus"),
                i = e("game/data/gameDataModel"),
                n = e("game/data/winDataModel"),
                r = e("game/data/setupData"),
                o = e("game/utils/miscUtils"),
                a = e("game/data/stateEvents"),
                s = function() {
                    function e(e) {
                        if (void 0 === e.isFreeSpinsEntry && (e.isFreeSpinsEntry = !1), e.type === a.FROM_BEGIN_NEW_GAME || e.type === a.FROM_START_GAME_INITIAL) o.log("Receieved: '" + e.type + "' and setting STATE TRANSITION TO: 'BaseGame.beginNewGame' - No NEXT_STATE dispatch until START_BASE_SPIN", "SUPER_IMPORTANT"), u.setCurrentState("BaseGame.beginNewGame");
                        else if (e.type === a.FROM_RECOVERY_GAME_IN_PROGRESS) o.log("Receieved: '" + e.type + "' and setting STATE TRANSITION TO: 'Recovery.gameInProgress' - No NEXT_STATE dispatch until FROM_RESOLVE_STAGE", "SUPER_IMPORTANT"), u.setCurrentState("Recovery.gameInProgress");
                        else if (d && e.type !== a.FROM_BEGIN_NEW_GAME) l(e.type), d = !1, a.publish(a.NEXT_STATE);
                        else if (e.type === a.FROM_ABORT_NEXT_STAGE) u.setCurrentState((h === r.FREE_SPINS ? "FreeSpin" : "BaseGame") + ".abortNextStage"), a.publish(a.NEXT_STATE);
                        else if (e.type === a.FROM_RESET_NEXT_STAGE) h === r.FREE_SPINS ? u.setCurrentState("FreeSpin.resetNextStage") : u.setCurrentState("BaseGame.beginNewGame");
                        else if (s(e.type)) {
                            for (var t = -1, _ = p[f][2].indexOf(e.type), m = 0; m < p.length; m++)
                                if (p[m][0] === p[f][3][_]) {
                                    o.log("STATE TRANSITION FROM: '" + c + "' TO: '" + p[m][0] + "'", "SUPER_IMPORTANT"), f = t = m, c = i.currentState = p[m][0], h = i.currentGameState = c.split(".")[0], e.isFreeSpinsEntry, e.type === a.FROM_START_ROLLUP && "FreeSpin.startRollup" === c && parseInt(n.freeSpinsRemaining) > 0 && setTimeout(function() {
                                        a.publish(a.FROM_IN_PROGRESS_STAGE)
                                    }, 10);
                                    var g = e.type === a.FROM_RESOLVE_STAGE && h === r.BASE_GAME && !e.isFreeSpinsEntry,
                                        v = e.type === a.FROM_EXIT_STAGE && "BaseGame.exitStage" === c,
                                        y = e.type === a.FROM_FREE_SPIN_EXIT_ROLLUP && "BaseGame.startExitRollup" === c && n.winType !== n.MAX_WIN,
                                        b = "Recovery.gameInProgressNext" === c && i.recoveryType === i.recoveryTypes.FREE_SPINS_START;
                                    g || v || y || b ? o.log("SKIPPING NEXT_STATE for: normalBaseSpinFromResolve:" + g + ", freeSpinsExit:" + v + ", returnToBaseGame:" + y + ", freeSpinsRecoveryOnFirstSpin:" + b) : a.publish(a.NEXT_STATE), a.publish(a.STATE_CHANGED, {
                                        state: c,
                                        gameState: h
                                    });
                                    break
                                } - 1 === t && o.log("ERROR - ACCEPTABLE STATE ATTEMPTED FROM: '" + e.type + "' BUT TRANSITION STATE NOT FOUND", "WARNING")
                        }
                    }

                    function s(e) {
                        return p[f][2].indexOf(e) > -1 || (o.log("ERROR - UNACCEPTABLE STATE ATTEMPTED FROM: '" + c + "' to: '" + e + "')'", "WARNING"), !1)
                    }

                    function l(e) {
                        for (var t = -1, i = 0; i < p.length; i++)
                            if (e === p[i][1]) {
                                t = i, u.setCurrentState(p[i][0]), o.log("SETTING STATE (" + c + ") FROM FIRST EVENT: '" + e + "'", "SUPER_IMPORTANT");
                                break
                            } - 1 === t && o.log("ERROR - ATTEMPTED TO SET STATE FROM EVENT: '" + e + "'", "WARNING")
                    }
                    var u, c, h, p = [
                            ["StartUp.beforeShowStage", a.FROM_BEFORE_SHOW_STAGE, [a.FROM_START_GAME_INITIAL, a.FROM_BEFORE_REQUEST],
                                ["StartUp.startGameInitial", "BaseGame.request"]
                            ],
                            ["StartUp.startGameInitial", a.FROM_START_GAME_INITIAL, [a.START_BASE_SPIN],
                                ["BaseGame.spin"]
                            ],
                            ["Recovery.gameInProgress", a.FROM_RECOVERY_GAME_IN_PROGRESS, [a.FROM_EXIT_STAGE, a.FROM_IN_PROGRESS_STAGE],
                                ["FreeSpin.exitStage", "FreeSpin.inProgress"]
                            ],
                            ["Recovery.gameInProgressNext", a.FROM_RECOVERY_GAME_IN_PROGRESS_NEXT, [a.FROM_ENTER_NEXT_STAGE, a.FROM_BEFORE_REQUEST],
                                ["FreeSpin.enterNextStage", "FreeSpin.request"]
                            ],
                            ["BaseGame.beginNewGame", a.FROM_BEGIN_NEW_GAME, [a.START_BASE_SPIN],
                                ["BaseGame.spin"]
                            ],
                            ["BaseGame.spin", a.START_BASE_SPIN, [a.FROM_BEFORE_REQUEST],
                                ["BaseGame.request"]
                            ],
                            ["BaseGame.request", a.FROM_BEFORE_REQUEST, [a.FROM_MAKE_REQUEST],
                                ["BaseGame.response"]
                            ],
                            ["BaseGame.response", a.FROM_MAKE_REQUEST, [a.FROM_RESOLVE_STAGE, a.FROM_ABORT_NEXT_STAGE],
                                ["BaseGame.resolveSpin", "BaseGame.abortNextStage"]
                            ],
                            ["BaseGame.resolveSpin", a.FROM_RESOLVE_STAGE, [a.FROM_START_ROLLUP, a.FROM_EXIT_STAGE],
                                ["BaseGame.startRollup", "FreeSpin.exitStage"]
                            ],
                            ["BaseGame.startRollup", a.FROM_START_ROLLUP, [a.FROM_END_GAME],
                                ["BaseGame.endGame"]
                            ],
                            ["BaseGame.endGame", a.FROM_END_GAME, [a.FROM_BEGIN_NEW_GAME],
                                ["BaseGame.beginNewGame"]
                            ],
                            ["FreeSpin.exitStage", a.FROM_EXIT_STAGE, [a.FROM_ENTER_NEXT_STAGE, a.FROM_RECOVERY_GAME_IN_PROGRESS_NEXT],
                                ["FreeSpin.enterNextStage", "Recovery.gameInProgressNext"]
                            ],
                            ["FreeSpin.enterNextStage", a.FROM_ENTER_NEXT_STAGE, [a.FROM_BEFORE_REQUEST],
                                ["FreeSpin.request"]
                            ],
                            ["FreeSpin.request", a.FROM_BEFORE_REQUEST, [a.FROM_MAKE_REQUEST],
                                ["FreeSpin.response"]
                            ],
                            ["FreeSpin.response", a.FROM_MAKE_REQUEST, [a.FROM_RESOLVE_STAGE],
                                ["FreeSpin.resolveSpin"]
                            ],
                            ["FreeSpin.resolveSpin", a.FROM_RESOLVE_STAGE, [a.FROM_START_ROLLUP],
                                ["FreeSpin.startRollup"]
                            ],
                            ["FreeSpin.startRollup", a.FROM_START_ROLLUP, [a.FROM_IN_PROGRESS_STAGE, a.FROM_EXIT_STAGE],
                                ["FreeSpin.inProgress", "BaseGame.exitStage"]
                            ],
                            ["FreeSpin.inProgress", a.FROM_IN_PROGRESS_STAGE, [a.FROM_BEFORE_REQUEST, a.FROM_RECOVERY_GAME_IN_PROGRESS_NEXT, a.FROM_FREE_SPIN_EXIT_ROLLUP],
                                ["FreeSpin.request", "Recovery.gameInProgressNext", "BaseGame.startExitRollup"]
                            ],
                            ["BaseGame.exitStage", a.FROM_EXIT_STAGE, [a.FROM_FREE_SPIN_EXIT_ROLLUP],
                                ["BaseGame.startExitRollup"]
                            ],
                            ["BaseGame.startExitRollup", a.FROM_FREE_SPIN_EXIT_ROLLUP, [a.FROM_START_ROLLUP],
                                ["BaseGame.enterNextStage"]
                            ],
                            ["BaseGame.enterNextStage", a.FROM_START_ROLLUP, [a.FROM_END_GAME],
                                ["BaseGame.endGame"]
                            ],
                            ["BaseGame.abortNextStage", a.FROM_ABORT_NEXT_STAGE, [a.FROM_RESET_NEXT_STAGE],
                                ["BaseGame.resetNextStage"]
                            ],
                            ["BaseGame.resetNextStage", a.FROM_RESET_NEXT_STAGE, [a.FROM_BEGIN_NEW_GAME],
                                ["BaseGame.beginNewGame"]
                            ],
                            ["FreeSpin.abortNextStage", a.FROM_ABORT_NEXT_STAGE, [a.FROM_RESET_NEXT_STAGE],
                                ["FreeSpin.resetNextStage"]
                            ],
                            ["FreeSpin.resetNextStage", a.FROM_RESET_NEXT_STAGE, [a.FROM_IN_PROGRESS_STAGE],
                                ["FreeSpin.inProgress"]
                            ]
                        ],
                        f = 0,
                        d = !0;
                    this.setCurrentState = function(e) {
                        for (var t = 0; t < p.length; t++)
                            if (p[t][0] === e) return c = i.currentState = e, h = i.currentGameState = c.split(".")[0], f = t, void a.publish(a.STATE_CHANGED, {
                                state: c,
                                gameState: h
                            });
                        o.log("ERROR - ATTEMPTING TO SET INVALID STATE: '" + e + "'", "WARNING")
                    }, this.init = function() {
                        u = this, t.subscribe(a.FROM_BEFORE_SHOW_STAGE, e), t.subscribe(a.FROM_START_GAME_INITIAL, e), t.subscribe(a.FROM_RECOVERY_GAME_IN_PROGRESS, e), t.subscribe(a.FROM_RECOVERY_GAME_IN_PROGRESS_NEXT, e), t.subscribe(a.START_BASE_SPIN, e), t.subscribe(a.FROM_BEFORE_REQUEST, e), t.subscribe(a.FROM_MAKE_REQUEST, e), t.subscribe(a.FROM_RESOLVE_STAGE, e), t.subscribe(a.FROM_START_ROLLUP, e), t.subscribe(a.FROM_FREE_SPIN_EXIT_ROLLUP, e), t.subscribe(a.FROM_END_GAME, e), t.subscribe(a.FROM_EXIT_STAGE, e), t.subscribe(a.FROM_BEGIN_NEW_GAME, e), t.subscribe(a.FROM_ENTER_NEXT_STAGE, e), t.subscribe(a.FROM_IN_PROGRESS_STAGE, e), t.subscribe(a.FROM_ABORT_NEXT_STAGE, e), t.subscribe(a.FROM_RESET_NEXT_STAGE, e)
                    }
                };
            return s.prototype.constructor = s, s
        }), define("game/views/bigWin/bigWinController", ["require", "skbJet/component/gameMsgBus/GameMsgBus", "game/data/gameEvents", "game/data/setupData", "game/data/winDataModel", "game/data/gameDataModel", "game/data/stateEvents", "game/utils/miscUtils"], function(e) {
            "use strict";
            var t = e("skbJet/component/gameMsgBus/GameMsgBus"),
                i = e("game/data/gameEvents"),
                n = e("game/data/setupData"),
                r = e("game/data/winDataModel"),
                o = e("game/data/gameDataModel"),
                a = e("game/data/stateEvents"),
                s = (e("game/utils/miscUtils"), function() {
                    function e(e) {
                        f.setup(e)
                    }

                    function s(e) {
                        var t = r.winType;
                        d.indexOf(t) > -1 && e.winUnformatted > 0 && o.currentGameState !== n.FREE_SPINS ? f.startBigWin(d.indexOf(t), e.winUnformatted, e.rollupTime, e.bellOnly) : (t === r.WIN || d.indexOf(t) > -1 && e.winUnformatted > 0 && o.currentGameState === n.FREE_SPINS) && f.startNormalWin(e.winUnformatted, e.rollupTime, e.isSmallWin, e.noRollup)
                    }

                    function l() {
                        f.resetBigWin(), g = !1, _ = 0, m = 0
                    }

                    function u() {
                        f.skipWin()
                    }

                    function c(e) {
                        f.orientationChanged(e.orientation === n.LANDSCAPE)
                    }

                    function h() {
                        f.debugBigWin()
                    }
                    var p, f, d, _, m, g = !1;
                    this.init = function(n) {
                        p = this, f = n, t.subscribe(i.PLATFORM_GAME_INIT, e), t.subscribe(i.START_BIG_WIN_ROLLUP, s), t.subscribe(a.START_BASE_SPIN, l), t.subscribe(i.SKIP_WIN, u), t.subscribe("debugBigWin", h), t.subscribe(i.ORIENTATION_CHANGED, c), d = [r.BIG_WIN, r.HUGE_WIN, r.MASSIVE_WIN, r.MEGA_WIN]
                    }
                });
            return s.prototype.constructor = s, s
        }), define("game/views/bigWin/bigWinView", ["require", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/currencyHelper/currencyHelper", "game/commonUI/slot/slotUI", "com/pixijs/pixi", "com/pixijs/pixi-particles", "com/gsap/TweenMax", "game/data/setupData", "game/data/audioRef", "game/data/gameEvents", "game/data/gameDataModel", "game/utils/miscUtils", "game/utils/textUtils", "game/views/bigWin/bigWinController", "game/utils/sdParticles", "game/utils/sdParticleConfigs", "game/data/winDataModel"], function(e) {
            "use strict";
            var t = e("skbJet/component/gladPixiRenderer/gladPixiRenderer"),
                i = e("skbJet/component/pixiResourceLoader/pixiResourceLoader"),
                n = e("skbJet/component/currencyHelper/currencyHelper"),
                r = e("game/commonUI/slot/slotUI"),
                o = e("com/pixijs/pixi"),
                a = (e("com/pixijs/pixi-particles"), e("com/gsap/TweenMax")),
                s = e("game/data/setupData"),
                l = e("game/data/audioRef"),
                u = e("game/data/gameEvents"),
                c = e("game/data/gameDataModel"),
                h = e("game/utils/miscUtils"),
                p = e("game/utils/textUtils"),
                f = e("game/views/bigWin/bigWinController"),
                d = e("game/utils/sdParticles"),
                _ = e("game/utils/sdParticleConfigs"),
                m = e("game/data/winDataModel"),
                g = function() {
                    function e(e) {
                        e.style.fill = ["#FCD076", "#FCFDE5", "#FCD076"], e.style.stroke = "#520022", e.style.strokeThickness = 8, e.style.dropShadow = !0, e.style.dropShadowColor = "#790000", e.style.dropShadowBlur = 20, e.style.dropShadowAngle = h.degToRad(90), e.style.dropShadowDistance = 5, e.x -= e.width >> 1, e.style.padding = 30, e.style.wordWrapWidth = L, e.visible = !1
                    }

                    function g(e) {
                        for (var t = M.width >> 1, i = M.height >> 1, n = {
                                x: M.x - t,
                                y: M.y - i
                            }, r = {
                                x: M.x + t,
                                y: M.y - i
                            }, o = {
                                x: M.x + t,
                                y: M.y + i
                            }, a = {
                                x: M.x - t,
                                y: M.y + i
                            }, s = [n, r, 10, 50], l = [a, o, -10, -50], u = [n, a, 10, 50], c = [r, o, -10, -50], p = 0; p < e; p++) {
                            te.push(h.spriteFromTexture("D-T-Big-Win-Sparkle", "centre")), A.addChild(te[p]);
                            var f, d, _;
                            p <= .25 * e ? (f = s, d = "x", _ = "y") : p <= .5 * e ? (f = l, d = "x", _ = "y") : p <= .75 * e ? (f = u, d = "y", _ = "x") : (f = c, d = "y", _ = "x"), te[p][d] = parseInt(Math.random() * (f[1][d] - [f[0][d]])) + f[0][d], te[p][_] = f[3] + f[0][_] + parseInt(Math.random() * f[2]), te[p].visible = !1
                        }
                    }

                    function v(e) {
                        var i = t.lib._reelBack.sprites._baseReelBG.pixiContainer,
                            n = new o.Graphics;
                        n.beginFill(e), n.lineStyle(0), n.moveTo(0, 0), n.lineTo(1, 0);
                        var r = i.width >> 1,
                            a = i.height >> 1;
                        n.moveTo(i.x - r, i.y - a), n.lineTo(i.x + r, i.y - a), n.lineTo(i.x + r, i.y + a), n.lineTo(i.x - r, i.y + a), n.lineTo(i.x - r, i.y - a), n.endFill();
                        var s = new o.Sprite(n.generateCanvasTexture());
                        return s.x = 500, s
                    }

                    function y(e, t) {
                        w(0, 1), F.visible = B.visible = !0, F.alpha = B.alpha = 1, I.alpha = A.alpha = 1, z = {
                            prize: 0
                        }, a.to(z, t, {
                            ease: window.Linear.easeNone,
                            prize: e,
                            onUpdate: function() {
                                p.setResizeAlign(B, n.formatBalance(z.prize))
                            },
                            onComplete: function() {
                                p.setResizeAlign(B, n.formatBalance(e)), le || b()
                            }
                        })
                    }

                    function b() {
                        ue = !0, u.publish(u.PLAY_SOUND, {
                            soundName: l.ROLLUP_BIGWIN_END
                        }), void 0 !== $ && null !== $ || ($ = d.createEmitter(K, o, _.solarDisc2(), t, X)), $.emit = !0, U && (U.emit = !1), ee.scaleX = ee.scaleY = .1, ee.visible = !0, a.to(ee, .5, {
                            scaleX: 1,
                            scaleY: 1,
                            alpha: 0,
                            ease: window.Power3.easeIn,
                            onComplete: function() {
                                ee.visible = !1
                            }
                        });
                        var e = le ? 0 : s.BIG_WIN_HOLD_TIME;
                        setTimeout(function() {
                            x(), w(1, 0)
                        }, e), setTimeout(function() {
                            R.resetBigWin()
                        }, e + V)
                    }

                    function x() {
                        var e = .001 * V;
                        a.to(A, .5 * e, {
                            delay: .5 * e,
                            alpha: 0,
                            onComplete: function() {
                                A.visible = !1
                            }
                        }), le || u.publish(u.SHOW_WINLINES)
                    }

                    function S() {
                        for (var e = 0; e < te.length; e++) a.killTweensOf(te[e]), te[e].alpha = 0, te[e].visible = !0, te[e].scaleX = te[e].scaleY = .25, a.to(te[e], .3 + .2 * Math.random(), {
                            alpha: 1,
                            scaleX: 1,
                            scaleY: 1,
                            repeat: -1,
                            yoyo: !0,
                            delay: Math.random()
                        })
                    }

                    function T() {
                        for (var e = 0; e < te.length; e++) a.killTweensOf(te[e]), te[e].visible = !1
                    }

                    function w(e, t) {
                        0 === e && (J.visible = !0), J.alpha = e;
                        var i = .001 * V;
                        a.to(J, .5 * i, {
                            delay: .5 * i,
                            alpha: t,
                            onComplete: function() {
                                0 === t && (J.visible = !1)
                            }
                        })
                    }

                    function E() {
                        q = new o.Graphics, q.beginFill(0), q.beginFill(), q.drawRect(0, -400, c.gladWidth, c.gladHeight + 800), q.endFill(), J.addChild(q)
                    }

                    function P(e) {
                        ue = !0, e || u.publish(u.PLAY_SOUND, {
                            soundName: l.ROLLUP_BASIC_END
                        }), Q.text = n.formatBalance(Y), Q.x = Q.originX - (Q.width >> 1);
                        var t = c.currentGameState === s.FREE_SPINS,
                            i = .001 * s.NORMAL_HOLD_TIME,
                            r = le ? 0 : t ? .666666 * i : i,
                            o = .001 * V;
                        r += .5 * o, a.to(A, .5 * o, {
                            alpha: 0,
                            delay: r,
                            onComplete: function() {
                                A.visible = !1
                            }
                        }), le || setTimeout(function() {
                            le || u.publish(u.SHOW_WINLINES)
                        }, 1e3 * r + .5 * V)
                    }
                    var R, O, A, I, C, M, D, N, L, k, F, B, G, U, j, W, H, X, z, Y, V, q, J, K, $, Q, Z, ee, te = [],
                        ie = {
                            desktop: 80,
                            mobile: 40,
                            mini: 20
                        },
                        ne = [],
                        re = [],
                        oe = -1,
                        ae = !1,
                        se = !1,
                        le = !1,
                        ue = !1,
                        ce = !1;
                    this.init = function() {
                        R = this, O = new f, O.init(R)
                    }, this.setup = function() {
                        A = t.lib._bigWin.pixiContainer, X = c.getPrefix(), J = t.lib._reelOverlay.pixiContainer, E(), q.alpha = .5, J.visible = !1, K = new o.Container, j = new o.Container, J.addChild(K), ee = h.spriteFromTexture(X + "Donut", "centre"), J.addChild(ee), K.x = ee.x = c.gladWidth >> 1, K.y = ee.y = c.gladHeight >> 1, ee.visible = !1, V = s.ROLLUP_FADE_TIME, L = t.lib._reelBack.sprites._baseReelBG.pixiContainer.width, k = t.lib._reelBack.sprites._baseReelBG.pixiContainer.height, N = i.i18n.Game;
                        for (var n = 0; n < 4; n++) ne.push(N["bigWin" + (n + 1)]);
                        W = v(0), A.addChild(W), H = v(0), A.addChild(H), W.alpha = H.alpha = .3, W.visible = H.visible = !1, H.y += 20;
                        A.addChild(j);
                        for (var n = 0; n < 2; n++) re.push(h.spriteFromTexture(X + "Big-Win-Ray", "bottomCentre")), j.addChild(re[n]), re[n].visible = !1, re[n].x = c.gladWidth >> 1, re[n].y = c.gladHeight, re[n].scaleX = re[n].scaleY = 2, h.rotateDegrees(re[0], 90 * n - 45);
                        C = h.createMovieClip(X + "Big-Win-Sparkle-Whoosh-", 2, 94, 2, .5), C.scaleX = C.scaleY = 2, C.visible = !1, A.addChild(C), M = h.spriteFromTexture(X + "Base-Game-Reel-Glow", "centre"), A.addChild(M), D = h.spriteFromTexture(X + "Bonus-Game-Reel-Glow", "centre"), A.addChild(D), D.visible = M.visible = !1, D.x = M.x = c.gladWidth >> 1, D.y = M.y = c.gladHeight >> 1, D.y += 37, g(ie[c.gameType]), G = new o.Container, A.addChild(G), G.x = c.gladWidth >> 1, G.y = c.gladHeight, I = new o.Container, A.addChild(I), F = p.addBasicText(I, "-", [c.gladWidth >> 1, (c.gladHeight >> 1) - .3 * k], 120, ["0xffffff"]), e(F), B = p.addBasicText(I, "-", [c.gladWidth >> 1, (c.gladHeight >> 1) - 0 * k], 150, ["0xffffff"]), e(B), ae && setTimeout(function() {
                            oe = 0, R.startBigWin(oe, 5e3, 5)
                        }, 1e3);
                        Z = h.spriteFromTexture(X + "prizeBacker", "centre"), I.addChild(Z), Z.x = c.gladWidth >> 1, Z.y = 1.115 * k, Z.alpha = .7, Q = p.addBasicText(I, "xx.xx", [c.gladWidth >> 1, 1.025 * k], 80, [16579973, 16777215, 16579973], "Oswald", "left", 10, 5186052), Q.originX = Q.x, Q.originY = Q.y, Q.visible = Z.visible = !1
                    }, this.debugBigWin = function() {
                        s.DEV && !se && (ae = !0, oe = 0, R.startBigWin(oe, 5e3, 5))
                    }, this.orientationChanged = function(e) {
                        e ? (j.y = 0, j.scaleY = 1, G.y = c.gladHeight) : (j.y = -200, j.scaleY = 2, G.y = c.gladHeight + 330)
                    }, this.startBigWin = function(e, i, n, r) {
                        ue = !1, A.visible = !0, Q.visible = Z.visible = !1, Y = i, se = !0, le = !1, u.publish(u.PLAY_SOUND, {
                            soundName: l.FREESPINS_BELL,
                            loop: !1,
                            isBigWin: !0,
                            bellOnly: r
                        }), e > 0 && u.publish(u.PLAY_SOUND, {
                            soundName: l.BIG_WIN_COINS,
                            loop: !0
                        }), C.visible = !0, C.gotoAndPlay(1), a.killTweensOf(M), a.killTweensOf(D);
                        var f = ae ? M : c.currentGameState === s.BASE_GAME ? M : D;
                        f.visible = !0, f.alpha = .2, a.to(f, .5, {
                            alpha: 1,
                            repeat: -1,
                            yoyo: !0
                        }), S(), p.setResizeAlign(F, ne[e], "center"), y(i, n), e > 0 && (void 0 !== U && null !== U || (U = d.createEmitter(G, o, _.coinFountain(), t, X, d.BIG_WIN_COINS)), U.emit = !0), e > 1 && (re[0].visible = re[1].visible = !0, h.rotateDegrees(re[0], -45), h.rotateDegrees(re[1], 45), a.to(re[0], 2.5, {
                            rotation: h.degToRad(45),
                            repeat: -1,
                            yoyo: !0
                        }), a.to(re[1], 2.5, {
                            rotation: h.degToRad(-45),
                            repeat: -1,
                            yoyo: !0
                        }))
                    }, this.resetBigWin = function() {
                        A.visible = !1, T(), F.visible = B.visible = !1, F.alpha = B.alpha = 0, Q.visible = Z.visible = !1, C.visible = !1, C.gotoAndStop(1), a.killTweensOf(M), a.killTweensOf(D), M.visible = D.visible = !1, U && (U.emit = !1), ae && setTimeout(function() {
                            oe++, oe > 3 && (oe = 0), R.startBigWin(oe, 5e3, 5)
                        }, 5e3), a.killTweensOf(re[0]), a.killTweensOf(re[1]), re[0].visible = re[1].visible = !1, se = !1
                    }, this.skipWin = function() {
                        a.killTweensOf(z), le = !0, p.setResizeAlign(B, n.formatBalance(Y)), ue || (Q.visible ? P(ce) : b()), c.currentGameState !== s.BASE_GAME || r.baseGame.autoSpin.active || u.publish(u.SHOW_WINLINES, {
                            fromBaseGameSkipAndNoAutoPlay: !0
                        })
                    }, this.startNormalWin = function(e, t, i, r) {
                        ue = !1, le = !1, I.alpha = 1, A.alpha = 0, A.visible = !0, I.visible = !0, Q.visible = Z.visible = !0, Y = e, z = {
                            prize: 0
                        }, ce = r, r && (z.prize = e, t = s.ROLLUP_NO_ROLLUP_HOLD_TIME), a.to(A, .1, {
                            alpha: 1
                        }), a.to(z, t, {
                            ease: window.Linear.easeNone,
                            prize: e,
                            onUpdate: function() {
                                Q.text = n.formatBalance(z.prize), Q.x = Q.originX - (Q.width >> 1)
                            },
                            onComplete: function() {
                                P(r)
                            }
                        }), i && !r ? u.publish(u.PLAY_SOUND, {
                            soundName: l.ROLLUP_LOW,
                            loop: !0
                        }) : i || r ? i && r && (m.rgPresentationEnabledOnCurrentSpin ? u.publish(u.PLAY_SOUND, {
                            soundName: l.RG_PRESENTATION_WIN
                        }) : u.publish(u.PLAY_SOUND, {
                            soundName: l.ROLLUP_LESS_THAN_STAKE
                        })) : u.publish(u.PLAY_SOUND, {
                            soundName: l.ROLLUP_BASIC,
                            loop: !0
                        })
                    }
                };
            return g.prototype.constructor = g, g
        }), define("game/views/freeSpins/freeSpinsIntroPanelView", ["require", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "com/gsap/TweenMax", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "game/data/audioRef", "com/pixijs/pixi", "game/data/gameEvents", "game/data/stateEvents", "game/data/setupData", "game/data/winDataModel", "game/data/gameDataModel", "game/utils/miscUtils", "game/utils/textUtils"], function(e) {
            "use strict";
            var t = e("skbJet/component/gameMsgBus/GameMsgBus"),
                i = e("skbJet/component/gladPixiRenderer/gladPixiRenderer"),
                n = e("com/gsap/TweenMax"),
                r = e("skbJet/component/pixiResourceLoader/pixiResourceLoader"),
                o = e("game/data/audioRef"),
                a = e("com/pixijs/pixi"),
                s = e("game/data/gameEvents"),
                l = e("game/data/stateEvents"),
                u = e("game/data/setupData"),
                c = e("game/data/winDataModel"),
                h = e("game/data/gameDataModel"),
                p = e("game/utils/miscUtils"),
                f = e("game/utils/textUtils"),
                d = function() {
                    function e() {
                        S = r.i18n.Game, x = i.lib._messagePanelLayer.sprites._fsIntroPanel, O = i.lib._knockBackLayer.pixiContainer, y(), A.alpha = .5, O.visible = !1;
                        var e = x.pixiContainer;
                        e.visible = !1, T = e.y, w = f.addBasicText(x.pixiContainer, S.freeSpinsIntroLine1, [0, 0], 70, ["0xffffff"]), _(w, .22), E = f.addBasicText(x.pixiContainer, S.freeSpinsIntroLine2, [0, 0], 70, ["0xffffff"]), _(E, .34), P = f.addBasicText(x.pixiContainer, "10", [0, 0], 90, ["0xff4200"]), _(P, .48), R = f.addBasicText(x.pixiContainer, S.freeSpinsIntroLine3, [0, 0], 70, ["0xffffff"]), _(R, .64), f.textFitWidth(w, 1e3), f.textFitWidth(E, 1e3), f.textFitWidth(R, 1e3), C && m({
                            midFreeSpinsRecovery: !1
                        })
                    }

                    function d() {
                        C || (C = !0, m({
                            midFreeSpinsRecovery: !1
                        }))
                    }

                    function _(e, t) {
                        var i = x.pixiContainer;
                        e.x = (i.width >> 1) - (e.width >> 1), e.y = i.height * t, e.style.stroke = "#000000", e.style.strokeThickness = 6, e.style.dropShadow = !0, e.style.dropShadowAlpha = .6, e.style.dropShadowAngle = p.degToRad(90), e.style.dropShadowColor = "#CA5904", e.style.dropShadowDistance = 5, e.style.dropShadowBlur = 2
                    }

                    function m(e) {
                        if (!e.midFreeSpinsRecovery) {
                            s.publish(s.PLAY_SOUND, {
                                soundName: o.SOLAR_DISC_TURN
                            });
                            var t = x.pixiContainer;
                            t.visible = !0, t.alpha = 1, t.scaleX = t.scaleY = 1.5, P.text = C ? "10" : c.numOfFreeSpins, n.to(t, u.FREE_SPINS_TRANSITION_TIME, {
                                ease: window.Bounce.easeOut,
                                alpha: 1,
                                scaleY: I,
                                scaleX: I
                            }), v(0, 1), C ? setTimeout(function() {
                                g(), setTimeout(function() {
                                    m({
                                        midFreeSpinsRecovery: !1
                                    })
                                }, 3e3)
                            }, u.FREE_SPINS_INTRO_PANEL_TIME) : setTimeout(function() {
                                s.publish(s.ENTER_FREE_SPINS), l.publish(l.FROM_ENTER_NEXT_STAGE), s.publish(s.PLAY_SOUND, {
                                    soundName: o.FREESPINS_MUSIC_LOOP
                                })
                            }, u.FREE_SPINS_INTRO_PANEL_TIME)
                        }
                    }

                    function g() {
                        var e = x.pixiContainer;
                        v(1, 0), n.to(e, .8 * u.FREE_SPINS_TRANSITION_TIME, {
                            scaleX: 0,
                            scaleY: 0,
                            onComplete: function() {
                                e.visible = !1
                            }
                        })
                    }

                    function v(e, t) {
                        0 === e && (O.visible = !0), O.alpha = e, n.to(O, u.FREE_SPINS_TRANSITION_TIME, {
                            alpha: t,
                            onComplete: function() {
                                0 === t && (O.visible = !1)
                            }
                        })
                    }

                    function y() {
                        A = new a.Graphics, A.beginFill(0), A.beginFill(), A.drawRect(0, -400, h.gladWidth, h.gladHeight + 800), A.endFill(), O.addChild(A)
                    }
                    var b, x, S, T, w, E, P, R, O, A, I = .8,
                        C = !1;
                    this.init = function() {
                        b = this, t.subscribe(s.PLATFORM_GAME_INIT, e), t.subscribe(s.SHOW_FREE_SPINS, m), t.subscribe(s.ENTER_FREE_SPINS, g), t.subscribe("debugFSIntroPanel", d)
                    }
                };
            return d.prototype.constructor = d, d
        }), define("game/views/freeSpins/freeSpinsCongratsPanelView", ["require", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "com/gsap/TweenMax", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/currencyHelper/currencyHelper", "game/data/audioRef", "game/data/gameEvents", "game/data/stateEvents", "game/data/setupData", "game/data/winDataModel", "game/data/paytableModel", "game/data/gameDataModel", "game/utils/miscUtils", "game/utils/textUtils"], function(e) {
            "use strict";
            var t = e("skbJet/component/gameMsgBus/GameMsgBus"),
                i = e("skbJet/component/gladPixiRenderer/gladPixiRenderer"),
                n = e("com/gsap/TweenMax"),
                r = e("skbJet/component/pixiResourceLoader/pixiResourceLoader"),
                o = e("skbJet/component/currencyHelper/currencyHelper"),
                a = e("game/data/audioRef"),
                s = e("game/data/gameEvents"),
                l = e("game/data/stateEvents"),
                u = e("game/data/setupData"),
                c = e("game/data/winDataModel"),
                h = e("game/data/paytableModel"),
                p = e("game/data/gameDataModel"),
                f = e("game/utils/miscUtils"),
                d = e("game/utils/textUtils"),
                _ = function() {
                    function e() {
                        P = r.i18n.Game, R = i.lib._messagePanelLayer.sprites._fsCongratsPanel, R.pixiContainer.visible = !1, k = i.lib._knockBackLayer.pixiContainer, O = R.pixiContainer.y, A = d.addBasicText(R.pixiContainer, P.freeSpinsCompleteLine1, [0, 0], 70, ["0xffffff"]), m(A, .22), I = d.addBasicText(R.pixiContainer, P.freeSpinsCompleteLine2, [0, 0], 70, ["0xffffff"]), m(I, .34), C = d.addBasicText(R.pixiContainer, P.freeSpinsCompleteLine3, [0, 0], 70, ["0xffffff"]), m(C, .45), D = d.addBasicText(R.pixiContainer, P.maxWinLine1, [0, 0], 70, ["0xffffff"]), m(D, .22), N = d.addBasicText(R.pixiContainer, P.maxWinLine2, [0, 0], 70, ["0xffffff"]), m(N, .34), L = d.addBasicText(R.pixiContainer, P.maxWinLine3_freeSpinsOnly, [0, 0], 70, ["0xffffff"]), m(L, .65), M = d.addBasicText(R.pixiContainer, "-", [0, 0], 90, ["0xff4200"]), m(M, .48), j && v()
                    }

                    function _() {
                        j || (j = !0, c.totalPrizeFreeSpinCumulative = 0, v())
                    }

                    function m(e, t) {
                        var i = R.pixiContainer;
                        d.textFitWidth(e, 1e3, !1), e.x = (i.width >> 1) - (e.width >> 1), e.y = i.height * t, e.style.stroke = "#000000", e.style.strokeThickness = 6, e.style.dropShadow = !0, e.style.dropShadowAlpha = .6, e.style.dropShadowAngle = f.degToRad(90), e.style.dropShadowColor = "#CA5904", e.style.dropShadowDistance = 5, e.style.dropShadowBlur = 2, e.style.width = 800, e.style.wordWrapWidth = 800
                    }

                    function g(e) {
                        "BaseGame.exitStage" === e.state && c.winType !== c.MAX_WIN && setTimeout(function() {
                            v()
                        }, 1e3)
                    }

                    function v(e) {
                        B = e && e.type && e.type === s.MAX_WIN_ACHIEVED;
                        var t = p.currentGameState === u.FREE_SPINS;
                        if (B && t) G = !0, y();
                        else {
                            s.publish(s.PLAY_SOUND, {
                                soundName: a.FREE_SPINS_CONGRATS
                            });
                            var i = R.pixiContainer;
                            if (i.visible = !0, i.alpha = 1, i.scaleX = i.scaleY = 1.5, U = B ? h.maxWinNum : c.totalPrizeFreeSpinCumulative, B ? (A.visible = I.visible = C.visible = !1, D.visible = N.visible = !0, L.visible = p.currentGameState === u.FREE_SPINS, M.visible = !0) : (A.visible = I.visible = M.visible = U > 0, D.visible = N.visible = L.visible = !1, C.visible = !A.visible), U > 0) {
                                M.text = o.formatBalance(U);
                                var i = R.pixiContainer;
                                M.x = R.pixiContainer.x - (M.width >> 1)
                            }
                            w(0, 1), n.to(i, u.FREE_SPINS_TRANSITION_TIME, {
                                ease: window.Bounce.easeOut,
                                alpha: 1,
                                scaleY: F,
                                scaleX: F,
                                onComplete: function() {}
                            });
                            var r = u.FREE_SPINS_CONGRATS_PANEL_TIME * (B ? 2 : 1);
                            B || setTimeout(function() {
                                s.publish(s.SHOW_BASE_GAME), s.publish(s.EXIT_FREE_SPINS)
                            }, r)
                        }
                    }

                    function y() {
                        s.publish(s.PLAY_SOUND, {
                            soundName: a.FREE_SPINS_CONGRATS
                        });
                        var e = R.pixiContainer;
                        e.visible = !0, e.alpha = 1, e.scaleX = e.scaleY = 1.5, U = h.maxWinNum, A.visible = I.visible = M.visible = !0, D.visible = N.visible = L.visible = C.visible = !1, M.text = o.formatBalance(U);
                        var e = R.pixiContainer;
                        M.x = R.pixiContainer.x - (M.width >> 1), w(0, 1), n.to(e, u.FREE_SPINS_TRANSITION_TIME, {
                            ease: window.Bounce.easeOut,
                            alpha: 1,
                            scaleY: F,
                            scaleX: F
                        }), setTimeout(function() {
                            s.publish(s.SHOW_BASE_GAME), s.publish(s.EXIT_FREE_SPINS)
                        }, u.FREE_SPINS_CONGRATS_PANEL_TIME)
                    }

                    function b() {
                        s.publish(s.PLAY_SOUND, {
                            soundName: a.FREE_SPINS_CONGRATS
                        });
                        var e = R.pixiContainer;
                        e.visible = !0, e.alpha = 1, e.scaleX = e.scaleY = 1.5, U = h.maxWinNum, A.visible = I.visible = C.visible = !1, D.visible = N.visible = !0, L.visible = p.currentGameState === u.FREE_SPINS, M.visible = !0, M.text = o.formatBalance(U);
                        var e = R.pixiContainer;
                        M.x = R.pixiContainer.x - (M.width >> 1), w(0, 1), n.to(e, u.FREE_SPINS_TRANSITION_TIME, {
                            ease: window.Bounce.easeOut,
                            alpha: 1,
                            scaleY: F,
                            scaleX: F,
                            onComplete: function() {
                                s.publish(s.SHOW_MAX_WIN_PLAYBUTTON)
                            }
                        })
                    }

                    function x() {
                        S()
                    }

                    function S() {
                        if (B && p.currentGameState === u.BASE_GAME && s.publish(s.SHOW_STATIC_SYMBOLS), G) T(), G = !1, n.delayedCall(.1, function() {
                            s.publish(s.SHOW_STATIC_SYMBOLS, {
                                fromMaxWinFreeSpinsExit: !0
                            })
                        });
                        else {
                            s.publish(s.PLAY_SOUND, {
                                soundName: a.BASEGAME_MUSIC_LOOP
                            });
                            var e = R.pixiContainer;
                            w(1, 0), n.to(e, .8 * u.FREE_SPINS_TRANSITION_TIME, {
                                scaleX: 0,
                                scaleY: 0,
                                onComplete: function() {
                                    e.visible = !1, B || (l.publish(l.FROM_FREE_SPIN_EXIT_ROLLUP), U > 0 || c.freeSpinsOriginSpinData.winlineInfo.length > 0 || setTimeout(function() {
                                        l.publish(l.FROM_START_ROLLUP)
                                    }, 10)), B || !(U > 0) || c.freeSpinsOriginSpinData.winlineInfo.length > 0 || s.publish(s.START_ROLLUP), B && s.publish(s.MAX_WIN_COMPLETE)
                                }
                            })
                        }
                    }

                    function T() {
                        s.publish(s.PLAY_SOUND, {
                            soundName: a.BASEGAME_MUSIC_LOOP
                        });
                        var e = R.pixiContainer;
                        n.to(e, .8 * u.FREE_SPINS_TRANSITION_TIME, {
                            scaleX: 0,
                            scaleY: 0,
                            onComplete: function() {
                                e.visible = !1, setTimeout(function() {
                                    b()
                                }, 1e3)
                            }
                        })
                    }

                    function w(e, t) {
                        0 === e && (k.visible = !0), k.alpha = e, n.to(k, u.FREE_SPINS_TRANSITION_TIME, {
                            alpha: t,
                            onComplete: function() {
                                0 === t && (k.visible = !1)
                            }
                        })
                    }
                    var E, P, R, O, A, I, C, M, D, N, L, k, F = .8,
                        B = !1,
                        G = !1,
                        U = 0,
                        j = !1;
                    this.init = function() {
                        E = this, t.subscribe(s.PLATFORM_GAME_INIT, e), t.subscribe(l.STATE_CHANGED, g), t.subscribe(s.SHOW_BASE_GAME, S), t.subscribe(s.MAX_WIN_ACHIEVED, v), t.subscribe(s.MAX_WIN_CLOSE, x), t.subscribe("debugFSCongratsPanel", _)
                    }
                };
            return _.prototype.constructor = _, _
        }),
        define("game/views/freeSpins/solarDiscFlyIn", ["require", "com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "game/data/audioRef", "game/utils/miscUtils", "com/gsap/TweenMax", "game/data/gameEvents", "game/data/setupData", "game/data/gameDataModel", "game/data/reelModel", "game/utils/sdParticles", "game/utils/sdParticleConfigs", "com/pixijs/pixi-particles"], function(e) {
            "use strict";
            var t = e("com/pixijs/pixi"),
                i = e("skbJet/component/gameMsgBus/GameMsgBus"),
                n = e("skbJet/component/gladPixiRenderer/gladPixiRenderer"),
                r = e("game/data/audioRef"),
                o = e("game/utils/miscUtils"),
                a = e("com/gsap/TweenMax"),
                s = e("game/data/gameEvents"),
                l = e("game/data/setupData"),
                u = e("game/data/gameDataModel"),
                c = e("game/data/reelModel"),
                h = e("game/utils/sdParticles"),
                p = e("game/utils/sdParticleConfigs"),
                f = (e("com/pixijs/pixi-particles"), function() {
                    function e(e) {
                        var t = y[e.row];
                        if (!t.visible && c.flyInCount > 0 && (c.flyInCount--, c.flyInCountPerReel[e.row]++), !t.visible && c.flyInCount > 1) {
                            var i = Math.random() * v >> 0;
                            t.x = E[0] + (Math.random() < .5 ? -i : i), t.y = E[1];
                            var n = Math.random() * A >> 0;
                            t.rotation = o.degToRad(Math.random() < .5 ? -n : n), t.scaleX = O, t.scaleY = I, t.visible = !0, t.alpha = 1, t.flashCircle.visible = !1, t.flashCircle.alpha = 0, t.trailStepping = 0, a.killTweensOf(t);
                            var u = P[e.row][0],
                                h = P[e.row][1];
                            s.publish(s.PLAY_SOUND, {
                                soundName: r["SOLAR_DISC_PASSING_" + e.row],
                                fsIntro: !0
                            }), a.to(t, c.flyInAnimTime, {
                                x: u,
                                y: h,
                                scaleX: 1,
                                scaleY: 1,
                                rotation: 0,
                                ease: window.Linear.easeNone,
                                onUpdate: function() {
                                    if (t.trailStepping === w) {
                                        t.trailStepping = 0;
                                        for (var e = 0; e < x; e++) {
                                            var i = b[e];
                                            if (!i.visible) {
                                                i.visible = !0, i.alpha = S, i.x = t.x, i.y = t.y, i.scaleX = t.scaleX, i.scaleY = t.scaleY, i.rotation = t.rotation, a.to(i, T, {
                                                    alpha: 0,
                                                    ease: window.Power0.easeIn,
                                                    onComplete: function() {
                                                        i.visible = !1
                                                    }
                                                });
                                                break
                                            }
                                        }
                                    } else t.trailStepping++
                                },
                                onComplete: function() {
                                    t.flashCircle.visible = !0, t.flashCircle.alpha = 1, f(t), s.publish(s.PLAY_SOUND, {
                                        soundName: r.SOLAR_DISC_LAND
                                    }), c.flyInCountPerReel[e.row] === l.FREE_SPINS_FLYING_DISCS_PER_REEL && (c.flyInsPerReelComplete[e.row] = !0), a.to(t, C, {
                                        alpha: 0,
                                        onComplete: function() {
                                            t.visible = !1
                                        }
                                    })
                                }
                            })
                        }
                        0 === c.flyInCount && setTimeout(function() {
                            s.publish(s.FREE_SPINS_EXIT_FLY_IN)
                        }, c.flyInAnimTime + C)
                    }

                    function f(e) {
                        void 0 !== e.burst && null !== e.burst || (e.burst = h.createEmitter(R[e.num], t, p.solarDisc1(), n, g)), e.burst.emit = !0
                    }

                    function d(e, i) {
                        var n = new t.Graphics;
                        n.beginFill(i), n.lineStyle(0), n.drawCircle(0, 0, e), n.endFill();
                        var r = new t.Sprite(n.generateCanvasTexture()),
                            o = new t.Sprite;
                        o.addChild(r), r.x = -(r.width >> 1), r.y = -(r.height >> 1);
                        var a = new t.filters.BlurFilter;
                        return a.blur = 10, r.filters = [a], _.addChild(o), o.alpha = .6, o
                    }
                    t.Container.call(this);
                    var _, m, g, v, y = [],
                        b = [],
                        x = 50,
                        S = .7,
                        T = .5,
                        w = 2,
                        E = [],
                        P = [],
                        R = [],
                        O = 4,
                        A = 90,
                        I = 3,
                        C = .2;
                    this.init = function() {
                        _ = this, i.subscribe(s.FREE_SPINS_DO_FLY_IN, e);
                        var r = n.lib._reelBack.sprites._baseReelBG;
                        v = r.pixiContainer.width >> 1;
                        var a = n.lib._reelRef.sprites;
                        g = u.getPrefix(), m = n.lib._winlines.pixiContainer, m.addChild(_);
                        var l = new t.Container;
                        _.addChild(l);
                        var c = new t.Container;
                        _.addChild(c);
                        for (var h = 0; h < x; h++) b.push(o.spriteFromTexture(g + "Basic-Solar-Disc-full", "centre")), l.addChild(b[h]), b[h].visible = !1;
                        for (var h = 0; h < 6; h++) {
                            y.push(o.spriteFromTexture(g + "Basic-Solar-Disc-full", "centre")), c.addChild(y[h]), y[h].visible = !1, y[h].num = h;
                            var p = a["_reelSymbol_" + (h + 1) + "_2"]._currentStyle._left + (a._reelSymbol_1_1._currentStyle._width >> 1),
                                f = a._reelSymbol_1_2._currentStyle._top - (a._reelSymbol_1_1._currentStyle._height >> 1);
                            P.push([p, f]);
                            var S = d(y[h].width >> 3, 16777215);
                            y[h].flashCircle = S, y[h].addChild(S), y[h].flashCircle.visible = !1, y[h].flashCircle.alpha = 0, R.push(new t.Container), _.addChild(R[h]), R[h].x = p, R[h].y = f
                        }
                        E = [u.gladWidth >> 1, u.gladHeight - .05 * u.gladHeight]
                    }
                });
            return f.prototype = Object.create(t.Container.prototype), f.prototype.constructor = f, f
        }), define("game/setup/setupGame", ["require", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "com/pixijs/pixi", "game/data/gameEvents", "game/data/stateEvents", "game/data/paytableModel", "game/data/winDataModel", "game/utils/miscUtils", "game/views/backgrounds", "game/views/reels/reelFrames", "game/views/reels/reelsView", "game/views/reels/anticipation", "game/views/winlines/winlineView", "game/views/ui/uiView", "game/stateMachine/SMController", "game/views/bigWin/bigWinView", "game/views/freeSpins/freeSpinsIntroPanelView", "game/views/freeSpins/freeSpinsCongratsPanelView", "game/views/freeSpins/solarDiscFlyIn"], function(e) {
            "use strict";

            function t() {
                v = new M, v.init(), l = new P, l.init(), u = new R, u.init(), c = new O, c.init(), h = new A, h.init(), p = new I, p.init(), f = new D, f.init(), d = new C, d.init(), _ = new N, _.init(), m = new L, m.init(), g = new k, g.init(), i()
            }

            function i() {
                n("Sprite"), n("Container")
            }

            function n(e) {
                Object.defineProperties(x[e].prototype, {
                    scaleX: {
                        get: function() {
                            return this.scale.x
                        },
                        set: function(e) {
                            this.scale.x = e
                        }
                    },
                    scaleY: {
                        get: function() {
                            return this.scale.y
                        },
                        set: function(e) {
                            this.scale.y = e
                        }
                    }
                })
            }

            function r(e) {
                t(), w.init(e), S.publish(S.HELP_FILES_ENABLE)
            }

            function o(e) {
                E.init(e)
            }

            function a() {
                b.lib._GameScene.pixiContainer.alpha = 1, T.publish(T.FROM_BEFORE_SHOW_STAGE)
            }

            function s() {
                T.publish(T.FROM_START_GAME_INITIAL)
            }
            var l, u, c, h, p, f, d, _, m, g, v, y = e("skbJet/component/gameMsgBus/GameMsgBus"),
                b = e("skbJet/component/gladPixiRenderer/gladPixiRenderer"),
                x = e("com/pixijs/pixi"),
                S = e("game/data/gameEvents"),
                T = e("game/data/stateEvents"),
                w = e("game/data/paytableModel"),
                E = e("game/data/winDataModel"),
                P = (e("game/utils/miscUtils"), e("game/views/backgrounds")),
                R = e("game/views/reels/reelFrames"),
                O = e("game/views/reels/reelsView"),
                A = e("game/views/reels/anticipation"),
                I = e("game/views/winlines/winlineView"),
                C = e("game/views/ui/uiView"),
                M = e("game/stateMachine/SMController"),
                D = e("game/views/bigWin/bigWinView"),
                N = e("game/views/freeSpins/freeSpinsIntroPanelView"),
                L = e("game/views/freeSpins/freeSpinsCongratsPanelView"),
                k = e("game/views/freeSpins/solarDiscFlyIn");
            ! function() {
                y.subscribe(S.ON_BEFORE_SHOW_STAGE, a), y.subscribe(S.ON_START_GAME_INITIAL, s), y.subscribe(S.PLATFORM_GAME_INIT, r), y.subscribe(S.PLATFORM_SYSTEM_INIT, o)
            }()
        }), define("game", ["require", "skbJet/component/gameMsgBus/PlatformMsgBusAdapter", "game/setup/helpAndPaytableFiles", "game/setup/audioManager", "skbJet/component/gameMsgBus/GameMsgBus", "game/data/gameEvents", "game/data/setupData", "game/data/gameDataModel", "game/utils/miscUtils", "game/loadController", "game/setup/gameSizeController", "game/setup/setupGame"], function(e) {
            "use strict";

            function t(e) {
                var t = e.PaytableResponse.VersionInfo;
                a.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.InitDone",
                    data: {
                        version: {
                            gameVersion: window._cacheFlag.gameVersion,
                            gleVersion: t && t.GameLogicVersion || "dev"
                        }
                    }
                }), h = !0, n()
            }

            function i() {
                p = !0, n()
            }

            function n() {
                h && p && l.SOUND_ON && (r = new o, r.init())
            }
            e("skbJet/component/gameMsgBus/PlatformMsgBusAdapter"), e("game/setup/helpAndPaytableFiles");
            var r, o = e("game/setup/audioManager"),
                a = e("skbJet/component/gameMsgBus/GameMsgBus"),
                s = e("game/data/gameEvents"),
                l = e("game/data/setupData"),
                u = e("game/data/gameDataModel"),
                c = (e("game/utils/miscUtils"), e("game/loadController")),
                h = (e("game/setup/gameSizeController"), e("game/setup/setupGame"), !1),
                p = !1;
            ! function() {
                u.init(c), a.subscribe(s.PLATFORM_GAME_INIT, t), a.subscribe(s.AUDIO_SELECTED_WHEN_GAME_LAUNCHED, i)
            }()
        })
}();